[med-svn] [dcmtk] 03/14: New upstream version 3.6.1~20170228

Gert Wollny gert-guest at moszumanska.debian.org
Mon Mar 6 10:51:08 UTC 2017


This is an automated email from the git hooks/post-receive script.

gert-guest pushed a commit to branch master
in repository dcmtk.

commit b9ded7ccf906c018d7403dea87ba31832604f0c4
Author: Gert Wollny <gw.fossdev at gmail.com>
Date:   Sat Mar 4 11:47:49 2017 +0000

    New upstream version 3.6.1~20170228
---
 CMake/3rdparty.cmake                               |   34 +-
 CMake/DCMTKConfig.cmake.in                         |    7 -
 CMake/FindICU.cmake                                |  690 ++++
 CMake/GenerateCMakeExports.cmake                   |   10 +-
 CMake/GenerateDCMTKConfigure.cmake                 |   44 +
 CMake/dcmtkPrepare.cmake                           |   19 +-
 CMake/osconfig.h.in                                |   14 +
 CMakeLists.txt                                     |   14 +-
 COPYRIGHT                                          |    6 +-
 CREDITS                                            |    4 +-
 Makefile                                           |   72 +-
 README                                             |    4 +-
 VERSION                                            |    2 +-
 config/Makefile.def.in                             |    9 +-
 config/arith.cc                                    |   12 +
 config/configure                                   |  328 +-
 config/configure.in                                |  157 +-
 config/docs/envvars.txt                            |   29 +-
 config/docs/macros.txt                             |   61 +-
 config/include/dcmtk/config/osconfig.h.in          |   14 +
 config/modules                                     |    2 +-
 config/rootconf                                    |    2 +-
 dcmdata/apps/CMakeLists.txt                        |    4 +-
 dcmdata/apps/Makefile.dep                          |   93 +-
 dcmdata/apps/Makefile.in                           |    8 +-
 dcmdata/apps/dcm2json.cc                           |  278 ++
 dcmdata/apps/dcm2xml.cc                            |   16 +-
 dcmdata/apps/dcmconv.cc                            |   75 +-
 dcmdata/apps/dcmdump.cc                            |   56 +-
 dcmdata/apps/dcmgpdir.cc                           |   24 +-
 dcmdata/apps/dump2dcm.cc                           |   10 +-
 dcmdata/apps/xml2dcm.cc                            |   10 +-
 dcmdata/data/dicom.dic                             |  109 +-
 .../docs/dsrdump.man => dcmdata/docs/dcm2json.man  |  328 +-
 dcmdata/docs/dcm2xml.man                           |    5 +-
 dcmdata/docs/dcmconv.man                           |   29 +-
 dcmdata/docs/dcmdata.dox                           |    1 +
 dcmdata/docs/dcmdump.man                           |   29 +-
 dcmdata/include/dcmtk/dcmdata/dcbytstr.h           |   36 +-
 dcmdata/include/dcmtk/dcmdata/dcchrstr.h           |   28 +-
 dcmdata/include/dcmtk/dcmdata/dccodec.h            |    4 +-
 dcmdata/include/dcmtk/dcmdata/dcdatset.h           |   37 +-
 dcmdata/include/dcmtk/dcmdata/dcddirif.h           |    1 +
 dcmdata/include/dcmtk/dcmdata/dcdeftag.h           |   99 +-
 dcmdata/include/dcmtk/dcmdata/dcdirrec.h           |   22 +-
 dcmdata/include/dcmtk/dcmdata/dcelem.h             |   26 +-
 dcmdata/include/dcmtk/dcmdata/dcerror.h            |   11 +-
 dcmdata/include/dcmtk/dcmdata/dcfilefo.h           |   47 +-
 dcmdata/include/dcmtk/dcmdata/dcitem.h             |  115 +-
 dcmdata/include/dcmtk/dcmdata/dcjson.h             |  407 ++
 dcmdata/include/dcmtk/dcmdata/dcmatch.h            |  246 ++
 dcmdata/include/dcmtk/dcmdata/dcmetinf.h           |   19 +-
 dcmdata/include/dcmtk/dcmdata/dcobject.h           |   38 +-
 dcmdata/include/dcmtk/dcmdata/dcovlay.h            |    3 +-
 dcmdata/include/dcmtk/dcmdata/dcpixseq.h           |   23 +-
 dcmdata/include/dcmtk/dcmdata/dcpxitem.h           |    3 +-
 dcmdata/include/dcmtk/dcmdata/dcsequen.h           |   41 +-
 dcmdata/include/dcmtk/dcmdata/dcspchrs.h           |  157 +-
 dcmdata/include/dcmtk/dcmdata/dctypes.h            |   17 +-
 dcmdata/include/dcmtk/dcmdata/dcuid.h              |   54 +-
 dcmdata/include/dcmtk/dcmdata/dcvr.h               |   53 +-
 dcmdata/include/dcmtk/dcmdata/dcvrat.h             |   38 +-
 dcmdata/include/dcmtk/dcmdata/dcvrda.h             |   52 +-
 dcmdata/include/dcmtk/dcmdata/dcvrds.h             |   13 +-
 dcmdata/include/dcmtk/dcmdata/dcvrdt.h             |   27 +-
 dcmdata/include/dcmtk/dcmdata/dcvrfd.h             |   30 +-
 dcmdata/include/dcmtk/dcmdata/dcvrfl.h             |   29 +-
 dcmdata/include/dcmtk/dcmdata/dcvris.h             |   14 +-
 dcmdata/include/dcmtk/dcmdata/dcvrlo.h             |   18 +
 dcmdata/include/dcmtk/dcmdata/dcvrobow.h           |   39 +-
 dcmdata/include/dcmtk/dcmdata/dcvrod.h             |   14 +-
 dcmdata/include/dcmtk/dcmdata/dcvrof.h             |   14 +-
 dcmdata/include/dcmtk/dcmdata/dcvrol.h             |   38 +-
 dcmdata/include/dcmtk/dcmdata/dcvrpn.h             |   23 +
 dcmdata/include/dcmtk/dcmdata/dcvrpobw.h           |    6 +-
 dcmdata/include/dcmtk/dcmdata/dcvrsh.h             |   18 +
 dcmdata/include/dcmtk/dcmdata/dcvrsl.h             |   27 +-
 dcmdata/include/dcmtk/dcmdata/dcvrss.h             |   27 +-
 dcmdata/include/dcmtk/dcmdata/dcvrtm.h             |  130 +-
 dcmdata/include/dcmtk/dcmdata/dcvruc.h             |    1 +
 dcmdata/include/dcmtk/dcmdata/dcvrul.h             |   28 +-
 dcmdata/include/dcmtk/dcmdata/dcvrulup.h           |   28 +-
 dcmdata/include/dcmtk/dcmdata/dcvrur.h             |    3 +-
 dcmdata/include/dcmtk/dcmdata/dcvrus.h             |   27 +-
 dcmdata/include/dcmtk/dcmdata/dcvrut.h             |    1 +
 dcmdata/include/dcmtk/dcmdata/dcxfer.h             |   42 +-
 dcmdata/include/dcmtk/dcmdata/libi2d/i2doutpl.h    |   10 +-
 dcmdata/libi2d/Makefile.dep                        |  128 +-
 dcmdata/libi2d/i2d.cc                              |    4 +-
 dcmdata/libi2d/i2dbmps.cc                          |   10 +-
 dcmdata/libsrc/CMakeLists.txt                      |    6 +-
 dcmdata/libsrc/Makefile.dep                        |  269 +-
 dcmdata/libsrc/Makefile.in                         |    5 +-
 dcmdata/libsrc/dcbytstr.cc                         |   48 +-
 dcmdata/libsrc/dcchrstr.cc                         |   69 +-
 dcmdata/libsrc/dcdatset.cc                         |   91 +-
 dcmdata/libsrc/dcddirif.cc                         |   10 +-
 dcmdata/libsrc/dcdicdir.cc                         |   42 +-
 dcmdata/libsrc/dcdictbi.cc                         |  370 +-
 dcmdata/libsrc/dcdirrec.cc                         |   30 +-
 dcmdata/libsrc/dcelem.cc                           |   96 +-
 dcmdata/libsrc/dcerror.cc                          |    6 +-
 dcmdata/libsrc/dcfilefo.cc                         |   62 +-
 dcmdata/libsrc/dcitem.cc                           |  637 +--
 dcmdata/libsrc/dcjson.cc                           |  281 ++
 dcmdata/libsrc/dcmatch.cc                          |  327 ++
 dcmdata/libsrc/dcmetinf.cc                         |   25 +
 dcmdata/libsrc/dcobject.cc                         |   18 +-
 dcmdata/libsrc/dcpath.cc                           |    4 +-
 dcmdata/libsrc/dcpixel.cc                          |   11 +-
 dcmdata/libsrc/dcpixseq.cc                         |   11 +-
 dcmdata/libsrc/dcsequen.cc                         |   40 +-
 dcmdata/libsrc/dcspchrs.cc                         |  265 +-
 dcmdata/libsrc/dcstack.cc                          |    6 +-
 dcmdata/libsrc/dcswap.cc                           |   11 +-
 dcmdata/libsrc/dctypes.cc                          |    8 +-
 dcmdata/libsrc/dcuid.cc                            |  122 +-
 dcmdata/libsrc/dcvr.cc                             |  135 +-
 dcmdata/libsrc/dcvrat.cc                           |   49 +-
 dcmdata/libsrc/dcvrda.cc                           |   71 +-
 dcmdata/libsrc/dcvrds.cc                           |   55 +-
 dcmdata/libsrc/dcvrdt.cc                           |   79 +-
 dcmdata/libsrc/dcvrfd.cc                           |    7 +-
 dcmdata/libsrc/dcvrfl.cc                           |    7 +-
 dcmdata/libsrc/dcvris.cc                           |   55 +-
 dcmdata/libsrc/dcvrlo.cc                           |   48 +-
 dcmdata/libsrc/dcvrobow.cc                         |   49 +-
 dcmdata/libsrc/dcvrod.cc                           |   36 +
 dcmdata/libsrc/dcvrof.cc                           |   36 +
 dcmdata/libsrc/dcvrol.cc                           |   44 +-
 dcmdata/libsrc/dcvrpn.cc                           |  263 +-
 dcmdata/libsrc/dcvrsh.cc                           |   48 +-
 dcmdata/libsrc/dcvrsl.cc                           |    7 +-
 dcmdata/libsrc/dcvrss.cc                           |    7 +-
 dcmdata/libsrc/dcvrtm.cc                           |  167 +-
 dcmdata/libsrc/dcvrul.cc                           |    8 +-
 dcmdata/libsrc/dcvrulup.cc                         |    9 +-
 dcmdata/libsrc/dcvrus.cc                           |    8 +-
 dcmdata/libsrc/dcxfer.cc                           |  167 +-
 dcmdata/tests/CMakeLists.txt                       |    2 +-
 dcmdata/tests/Makefile.dep                         |   49 +-
 dcmdata/tests/Makefile.in                          |    4 +-
 dcmdata/tests/tests.cc                             |    1 +
 dcmdata/tests/tmatch.cc                            |  124 +
 dcmdata/tests/tspchrs.cc                           |   58 +-
 dcmfg/include/dcmtk/dcmfg/fgderimg.h               |   69 +-
 dcmfg/include/dcmtk/dcmfg/fgfracon.h               |    4 +-
 dcmfg/include/dcmtk/dcmfg/fgframeanatomy.h         |  157 +
 dcmfg/include/dcmtk/dcmfg/fgidentpixeltransform.h  |  174 +
 dcmfg/include/dcmtk/dcmfg/fginterface.h            |   18 +-
 .../include/dcmtk/dcmfg/fgparametricmapframetype.h |  124 +
 .../include/dcmtk/dcmfg/fgrealworldvaluemapping.h  |   61 +-
 dcmfg/include/dcmtk/dcmfg/fgtypes.h                |    6 +-
 dcmfg/include/dcmtk/dcmfg/stack.h                  |    4 -
 dcmfg/libsrc/CMakeLists.txt                        |    3 +
 dcmfg/libsrc/Makefile.dep                          |  415 +-
 dcmfg/libsrc/fg.cc                                 |    5 +-
 dcmfg/libsrc/fgbase.cc                             |    1 -
 dcmfg/libsrc/fgderimg.cc                           |  108 +-
 dcmfg/libsrc/fgfact.cc                             |   14 +-
 dcmfg/libsrc/fgfracon.cc                           |    6 +-
 dcmfg/libsrc/fgframeanatomy.cc                     |  203 +
 dcmfg/libsrc/fgframevoilut.cc                      |    2 +-
 dcmfg/libsrc/fgidentpixeltransform.cc              |  229 ++
 dcmfg/libsrc/fgimagedatatype.cc                    |   15 +-
 dcmfg/libsrc/fginterface.cc                        |   40 +-
 dcmfg/libsrc/fgparametricmapframetype.cc           |  145 +
 dcmfg/libsrc/fgpixmsr.cc                           |    2 +-
 dcmfg/libsrc/fgplanor.cc                           |    2 +-
 dcmfg/libsrc/fgplanorvol.cc                        |    2 +-
 dcmfg/libsrc/fgplanpo.cc                           |    2 +-
 dcmfg/libsrc/fgplanposvol.cc                       |    2 +-
 dcmfg/libsrc/fgrealworldvaluemapping.cc            |   99 +-
 dcmfg/libsrc/fgseg.cc                              |    2 +-
 dcmfg/libsrc/fgtypes.cc                            |   10 +-
 dcmfg/libsrc/fgusimagedescription.cc               |    2 +-
 dcmimage/apps/Makefile.in                          |    2 +-
 dcmimage/apps/dcm2pnm.cc                           |   10 +-
 dcmimage/include/dcmtk/dcmimage/dicoimg.h          |    2 +
 dcmimgle/apps/Makefile.in                          |    2 +-
 dcmimgle/include/dcmtk/dcmimgle/dcmimage.h         |    2 +
 dcmimgle/include/dcmtk/dcmimgle/diimage.h          |    4 +-
 dcmimgle/include/dcmtk/dcmimgle/diinpxt.h          |    5 +-
 dcmimgle/include/dcmtk/dcmimgle/dimoimg.h          |    2 +
 dcmimgle/include/dcmtk/dcmimgle/dimomod.h          |    4 +-
 dcmimgle/include/dcmtk/dcmimgle/dimoopxt.h         |   33 +-
 dcmimgle/libsrc/dimoimg.cc                         |    2 +-
 dcmiod/include/dcmtk/dcmiod/cielabutil.h           |    2 +-
 dcmiod/include/dcmtk/dcmiod/iodcommn.h             |   53 +-
 dcmiod/include/dcmtk/dcmiod/iodcontentitemmacro.h  |  478 +++
 dcmiod/include/dcmtk/dcmiod/iodimage.h             |  257 +-
 dcmiod/include/dcmtk/dcmiod/iodmacro.h             |  187 +-
 dcmiod/include/dcmtk/dcmiod/iodreferences.h        |    8 +
 dcmiod/include/dcmtk/dcmiod/iodutil.h              |   49 +-
 dcmiod/include/dcmtk/dcmiod/modbase.h              |   37 +-
 dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h |    8 +-
 dcmiod/include/dcmtk/dcmiod/modenhequipment.h      |   51 +-
 dcmiod/include/dcmtk/dcmiod/modequipment.h         |   47 +-
 .../dcmtk/dcmiod/modfloatingpointimagepixel.h      |  246 ++
 dcmiod/include/dcmtk/dcmiod/modfor.h               |    9 +-
 dcmiod/include/dcmtk/dcmiod/modgeneralstudy.h      |    2 +-
 dcmiod/include/dcmtk/dcmiod/modimagepixel.h        |  108 +-
 dcmiod/include/dcmtk/dcmiod/modimagepixelbase.h    |  168 +
 dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h |  281 ++
 .../include/dcmtk/dcmiod/modmultiframedimension.h  |    3 +-
 dcmiod/include/dcmtk/dcmiod/modsynchronisation.h   |   29 +-
 dcmiod/libsrc/CMakeLists.txt                       |    5 +-
 dcmiod/libsrc/Makefile.dep                         |  279 +-
 dcmiod/libsrc/Makefile.in                          |   13 +-
 dcmiod/libsrc/cielabutil.cc                        |    8 +-
 dcmiod/libsrc/iodcommn.cc                          |   77 +-
 dcmiod/libsrc/iodcontentitemmacro.cc               |  800 ++++
 dcmiod/libsrc/iodimage.cc                          |   89 -
 dcmiod/libsrc/iodmacro.cc                          |  372 +-
 dcmiod/libsrc/iodutil.cc                           |   19 +-
 dcmiod/libsrc/modbase.cc                           |   52 +-
 dcmiod/libsrc/modcommoninstanceref.cc              |   14 +-
 dcmiod/libsrc/modenhequipment.cc                   |   10 +-
 dcmiod/libsrc/modenhusimage.cc                     |    4 +-
 dcmiod/libsrc/modequipment.cc                      |   17 +-
 dcmiod/libsrc/modfloatingpointimagepixel.cc        |  260 ++
 dcmiod/libsrc/modfor.cc                            |   23 +-
 dcmiod/libsrc/modimagepixel.cc                     |  192 +-
 dcmiod/libsrc/modimagepixelbase.cc                 |  138 +
 dcmiod/libsrc/modmultiframedimension.cc            |   37 +-
 dcmiod/libsrc/modmultiframefg.cc                   |    2 -
 dcmiod/libsrc/modsynchronization.cc                |   57 +-
 dcmiod/libsrc/modusfor.cc                          |   11 +-
 dcmiod/tests/CMakeLists.txt                        |    2 +-
 dcmiod/tests/Makefile.dep                          |  145 +
 dcmiod/tests/Makefile.in                           |    6 +-
 dcmiod/tests/tcielabutil.cc                        |    4 +-
 dcmiod/tests/tests.cc                              |    1 +
 dcmiod/tests/timagepixel.cc                        |   34 +
 dcmjpeg/apps/Makefile.in                           |    2 +-
 dcmjpeg/apps/dcmdjpeg.cc                           |    8 +-
 dcmjpeg/docs/dcmdjpeg.man                          |   11 +-
 dcmjpeg/include/dcmtk/dcmjpeg/djcparam.h           |   18 +-
 dcmjpeg/include/dcmtk/dcmjpeg/djdecode.h           |    7 +-
 dcmjpeg/libijg12/jdmarker.c                        |   20 +-
 dcmjpeg/libijg12/jpeglib12.h                       |    8 +
 dcmjpeg/libijg16/jpeglib16.h                       |    5 +
 dcmjpeg/libijg8/jcapimin.c                         |    2 +
 dcmjpeg/libijg8/jcmarker.c                         |    2 +-
 dcmjpeg/libijg8/jpeglib8.h                         |    8 +
 dcmjpeg/libsrc/ddpiimpl.cc                         |    4 +-
 dcmjpeg/libsrc/djcodecd.cc                         |   10 +
 dcmjpeg/libsrc/djcodece.cc                         |   12 +-
 dcmjpeg/libsrc/djcparam.cc                         |    5 +-
 dcmjpeg/libsrc/djdecode.cc                         |   15 +-
 dcmjpeg/libsrc/djeijg8.cc                          |    1 +
 dcmjpeg/libsrc/djencode.cc                         |    3 +-
 dcmjpls/apps/Makefile.in                           |    2 +-
 dcmjpls/docs/License.txt                           |   11 +
 dcmjpls/docs/dcmjpls.dox                           |   14 +-
 dcmjpls/libcharls/decodstr.h                       |   70 +-
 dcmjpls/libcharls/encodstr.h                       |   65 +-
 dcmjpls/libcharls/header.cc                        |   22 +-
 dcmjpls/libcharls/intrface.cc                      |   61 +-
 dcmjpls/libcharls/intrface.h                       |    4 +-
 dcmjpls/libcharls/pubtypes.h                       |    3 +-
 dcmjpls/libcharls/scan.h                           |   33 +-
 dcmjpls/libcharls/streams.h                        |   65 +-
 dcmjpls/libcharls/util.h                           |    1 +
 dcmjpls/libsrc/djcodece.cc                         |   38 +-
 dcmnet/apps/Makefile.dep                           |    8 +-
 dcmnet/apps/Makefile.in                            |    2 +-
 dcmnet/apps/echoscu.cc                             |   12 +-
 dcmnet/apps/getscu.cc                              |   10 +-
 dcmnet/apps/movescu.cc                             |  148 +-
 dcmnet/apps/storescp.cc                            |  115 +-
 dcmnet/apps/storescu.cc                            |   66 +-
 dcmnet/docs/cptscp.dox                             |    1 +
 dcmnet/docs/dcmnet.dox                             |    6 +-
 dcmnet/docs/dcmrecv.man                            |   50 +-
 dcmnet/docs/dcmsend.man                            |   48 +-
 dcmnet/docs/echoscu.man                            |   37 +-
 dcmnet/docs/findscu.man                            |   32 +-
 dcmnet/docs/getscu.man                             |   54 +-
 dcmnet/docs/movescu.man                            |   84 +-
 dcmnet/docs/storescp.man                           |   64 +-
 dcmnet/docs/storescu.man                           |   53 +-
 dcmnet/docs/termscu.man                            |   26 +-
 dcmnet/etc/storescp.cfg                            |  204 +-
 dcmnet/etc/storescu.cfg                            |    3 +
 dcmnet/include/dcmtk/dcmnet/assoc.h                |   16 +-
 dcmnet/include/dcmtk/dcmnet/cond.h                 |    5 +-
 dcmnet/include/dcmtk/dcmnet/dccfpcmp.h             |   14 +-
 dcmnet/include/dcmtk/dcmnet/dcmtrans.h             |   31 +-
 dcmnet/include/dcmtk/dcmnet/dcompat.h              |   21 +-
 dcmnet/include/dcmtk/dcmnet/dcuserid.h             |  154 +-
 dcmnet/include/dcmtk/dcmnet/dul.h                  |   16 +-
 dcmnet/include/dcmtk/dcmnet/scp.h                  |   49 +-
 dcmnet/include/dcmtk/dcmnet/scpcfg.h               |    5 +-
 dcmnet/libsrc/Makefile.dep                         |   12 +-
 dcmnet/libsrc/assoc.cc                             |   20 +-
 dcmnet/libsrc/cond.cc                              |    4 +-
 dcmnet/libsrc/dccfpcmp.cc                          |   22 +-
 dcmnet/libsrc/dcmtrans.cc                          |   45 +-
 dcmnet/libsrc/dcompat.cc                           |   62 +-
 dcmnet/libsrc/dcuserid.cc                          |   36 +-
 dcmnet/libsrc/dimcmd.cc                            |   10 +-
 dcmnet/libsrc/dimse.cc                             |    8 +-
 dcmnet/libsrc/diutil.cc                            |    8 +-
 dcmnet/libsrc/dstorscu.cc                          |    4 +-
 dcmnet/libsrc/dul.cc                               |   93 +-
 dcmnet/libsrc/dulconst.cc                          |    8 +-
 dcmnet/libsrc/dulfsm.cc                            |  110 +-
 dcmnet/libsrc/dulparse.cc                          |    9 +-
 dcmnet/libsrc/scp.cc                               |  107 +-
 dcmnet/tests/CMakeLists.txt                        |    2 +-
 dcmnet/tests/Makefile.dep                          |  127 +
 dcmnet/tests/Makefile.in                           |    4 +-
 dcmnet/tests/tests.cc                              |    7 +-
 dcmnet/tests/tscuscp.cc                            |  340 ++
 dcmpmap/CMakeLists.txt                             |   10 +
 dcmpmap/Makefile.in                                |   86 +
 dcmpmap/configure                                  |   53 +
 dcmpmap/data/Makefile.in                           |   23 +
 dcmpmap/docs/Makefile.in                           |   23 +
 dcmpmap/docs/dcmpmap.dox                           |  527 +++
 dcmpmap/etc/Makefile.in                            |   23 +
 dcmpmap/include/CMakeLists.txt                     |    2 +
 dcmpmap/include/Makefile.in                        |   27 +
 dcmpmap/include/dcmtk/dcmpmap/dpmdef.h             |   37 +
 .../dcmtk/dcmpmap/dpmmodparametricmapimage.h       |  304 ++
 .../dcmtk/dcmpmap/dpmmodparametricmapseries.h      |  133 +
 .../include/dcmtk/dcmpmap/dpmparametricmapbase.h   |  249 ++
 .../include/dcmtk/dcmpmap/dpmparametricmapiod.h    |  306 ++
 dcmpmap/include/dcmtk/dcmpmap/dpmtypes.h           |  137 +
 dcmpmap/libsrc/CMakeLists.txt                      |    4 +
 {dcmseg => dcmpmap}/libsrc/Makefile.dep            |  363 +-
 {dcmsign => dcmpmap}/libsrc/Makefile.in            |   19 +-
 dcmpmap/libsrc/dpmmodparametricmapimage.cc         |  289 ++
 dcmpmap/libsrc/dpmmodparametricmapseries.cc        |  124 +
 dcmpmap/libsrc/dpmparametricmapbase.cc             |  227 ++
 dcmpmap/libsrc/dpmparametricmapiod.cc              | 1064 +++++
 dcmpmap/libsrc/dpmtypes.cc                         |  111 +
 dcmpmap/tests/Makefile.in                          |   29 +
 dcmpstat/apps/Makefile.dep                         |   20 +
 dcmpstat/apps/Makefile.in                          |    6 +-
 dcmpstat/apps/dcmprscu.cc                          |   10 +-
 dcmpstat/apps/dcmpsrcv.cc                          |    4 +-
 dcmpstat/docs/dcmp2pgm.man                         |   18 +-
 dcmpstat/libsrc/Makefile.dep                       |   16 +-
 dcmpstat/libsrc/dviface.cc                         |   42 +-
 dcmpstat/libsrc/dvpshlp.cc                         |    2 +-
 dcmpstat/libsrc/dvpstat.cc                         |    6 +-
 dcmpstat/tests/Makefile.dep                        |    2 +-
 dcmpstat/tests/Makefile.in                         |    2 +-
 dcmqrdb/apps/Makefile.dep                          |    6 +-
 dcmqrdb/apps/Makefile.in                           |    2 +-
 dcmqrdb/apps/dcmqrscp.cc                           |   95 +-
 dcmqrdb/docs/dcmqrcnf.txt                          |   32 +-
 dcmqrdb/docs/dcmqrscp.man                          |   74 +-
 dcmqrdb/etc/dcmqrscp.cfg                           |   10 +
 dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcbf.h           |   10 +-
 dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcnf.h           |   89 +-
 dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h           |    7 +-
 dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h           |   79 +-
 dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h           |  113 +-
 dcmqrdb/include/dcmtk/dcmqrdb/dcmqrtis.h           |    3 +-
 dcmqrdb/libsrc/Makefile.dep                        |   32 +-
 dcmqrdb/libsrc/dcmqrcbf.cc                         |    4 +-
 dcmqrdb/libsrc/dcmqrcbm.cc                         |   17 +-
 dcmqrdb/libsrc/dcmqrcnf.cc                         |  105 +-
 dcmqrdb/libsrc/dcmqrdbi.cc                         |  957 ++---
 dcmqrdb/libsrc/dcmqrptb.cc                         |    4 +-
 dcmqrdb/libsrc/dcmqrsrv.cc                         |   36 +-
 dcmqrdb/libsrc/dcmqrtis.cc                         |   10 +-
 dcmrt/apps/Makefile.dep                            |   44 +-
 dcmrt/apps/Makefile.in                             |    2 +-
 dcmrt/include/dcmtk/dcmrt/drmimage.h               |   15 +-
 dcmrt/include/dcmtk/dcmrt/drtdose.h                |  453 +-
 dcmrt/include/dcmtk/dcmrt/drtimage.h               |  519 ++-
 dcmrt/include/dcmtk/dcmrt/drtionpl.h               |  509 ++-
 dcmrt/include/dcmtk/dcmrt/drtiontr.h               |  493 ++-
 dcmrt/include/dcmtk/dcmrt/drtplan.h                |  509 ++-
 dcmrt/include/dcmtk/dcmrt/drtstrct.h               |  493 ++-
 dcmrt/include/dcmtk/dcmrt/drttreat.h               |  493 ++-
 dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h           |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtads.h             |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtafs.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtags.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtas1.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtas5.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtas6.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtas7.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtass.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbads.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbas.h             |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h             |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h             |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h           |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbs.h              |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbss.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h           |   42 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h           |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtccs.h             |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtces.h             |   30 +-
 .../dcmtk/dcmrt/seq/{drtas6.h => drtcgis.h}        |  102 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtchs.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcims.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcis.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcos.h             |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcps.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcs.h              |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcss.h             |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h             |   46 +-
 .../dcmtk/dcmrt/seq/{drtrcs.h => drtdddps.h}       |  143 +-
 .../dcmtk/dcmrt/seq/{drtrshs6.h => drtddps.h}      |  123 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdias.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h           |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtds.h              |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h           |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdss.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drteas.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtecs.h             |  174 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtes.h              |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfds.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfes.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfms.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtgas.h             |   30 +-
 .../dcmtk/dcmrt/seq/{drtopis.h => drtgpis.h}       |   76 +-
 dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiais.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtians.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtibls.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtibs.h             |   77 +-
 dcmrt/include/dcmtk/dcmrt/seq/drticpds.h           |  108 +-
 dcmrt/include/dcmtk/dcmrt/seq/drticps.h            |   69 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtics.h             |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiis.h             |   48 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtircs.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtitts.h            |  122 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiws.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmas.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmls.h             |   36 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmps.h             |   30 +-
 .../dcmtk/dcmrt/seq/{drtafs.h => drtmris.h}        |   90 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmss.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtoas.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtois.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtopis.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtos.h              |   63 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h             |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h           |   45 +-
 .../dcmtk/dcmrt/seq/{drtiws.h => drtpdeds.h}       |  189 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpics.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h           |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtporis.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h           |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpss.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtqds.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtras.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h            |   85 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h            |   85 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrds.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrics.h            |   61 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrims.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtris.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrms.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h           |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrps.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrros.h            |   45 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h           |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h          |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h          |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h          |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrses.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrss.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrws.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h           |   66 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtscris.h           |   30 +-
 .../dcmtk/dcmrt/seq/{drtcbars.h => drtscs.h}       |   79 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtsds.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtshds.h            |   30 +-
 .../dcmtk/dcmrt/seq/{drtris.h => drtsins.h}        |   50 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtsis.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtsns.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h           |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h            |   46 +-
 .../dcmtk/dcmrt/seq/{drtopis.h => drtspgis.h}      |   64 +-
 .../dcmtk/dcmrt/seq/{drtarics.h => drtsptcs.h}     |   79 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtss.h              |   30 +-
 .../dcmtk/dcmrt/seq/{drtarics.h => drtssrcs.h}     |   79 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h            |   30 +-
 .../dcmtk/dcmrt/seq/{drtrsts.h => drtsss.h}        |   94 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttms0.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttms9.h            |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttscds.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h           |   77 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttts.h             |   30 +-
 .../dcmtk/dcmrt/seq/{drtrsns.h => drtudis.h}       |   74 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtvls.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtwps.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h             |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h           |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtws.h              |   30 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h             |   30 +-
 dcmrt/libsrc/CMakeLists.txt                        |    2 +-
 dcmrt/libsrc/Makefile.dep                          | 3857 +++++++++++------
 dcmrt/libsrc/Makefile.in                           |   59 +-
 dcmrt/libsrc/drmimage.cc                           |    4 +-
 dcmrt/libsrc/drtaadcs.cc                           |   61 +-
 dcmrt/libsrc/drtadcs.cc                            |   61 +-
 dcmrt/libsrc/drtads.cc                             |   61 +-
 dcmrt/libsrc/drtafs.cc                             |   32 +-
 dcmrt/libsrc/drtags.cc                             |   32 +-
 dcmrt/libsrc/drtajcs.cc                            |   61 +-
 dcmrt/libsrc/drtas1.cc                             |   32 +-
 dcmrt/libsrc/drtas5.cc                             |   32 +-
 dcmrt/libsrc/drtas6.cc                             |   32 +-
 dcmrt/libsrc/drtas7.cc                             |   32 +-
 dcmrt/libsrc/drtass.cc                             |   32 +-
 dcmrt/libsrc/drtbads.cc                            |   32 +-
 dcmrt/libsrc/drtbas.cc                             |   61 +-
 dcmrt/libsrc/drtbcps.cc                            |   32 +-
 dcmrt/libsrc/drtbl2.cc                             |   65 +-
 dcmrt/libsrc/drtbl5.cc                             |   65 +-
 dcmrt/libsrc/drtbldls.cc                           |   32 +-
 dcmrt/libsrc/drtbldps.cc                           |   32 +-
 dcmrt/libsrc/drtblds1.cc                           |   32 +-
 dcmrt/libsrc/drtblds5.cc                           |   32 +-
 dcmrt/libsrc/drtblds6.cc                           |   32 +-
 dcmrt/libsrc/drtbldts.cc                           |   32 +-
 dcmrt/libsrc/drtbrcss.cc                           |   61 +-
 dcmrt/libsrc/drtbrdrs.cc                           |   32 +-
 dcmrt/libsrc/drtbrs.cc                             |   32 +-
 dcmrt/libsrc/drtbs.cc                              |   32 +-
 dcmrt/libsrc/drtbss.cc                             |   32 +-
 dcmrt/libsrc/drtbvcps.cc                           |   55 +-
 dcmrt/libsrc/drtcbars.cc                           |   61 +-
 dcmrt/libsrc/drtccs.cc                             |   61 +-
 dcmrt/libsrc/drtcctus.cc                           |   32 +-
 dcmrt/libsrc/drtcdrs.cc                            |   32 +-
 dcmrt/libsrc/drtces.cc                             |   32 +-
 dcmrt/libsrc/{drtcctus.cc => drtcgis.cc}           |  187 +-
 dcmrt/libsrc/drtchs.cc                             |   32 +-
 dcmrt/libsrc/drtcims.cc                            |   32 +-
 dcmrt/libsrc/drtcis.cc                             |   32 +-
 dcmrt/libsrc/drtcncs.cc                            |   61 +-
 dcmrt/libsrc/drtcos.cc                             |   65 +-
 dcmrt/libsrc/drtcpas.cc                            |   32 +-
 dcmrt/libsrc/drtcpis.cc                            |   32 +-
 dcmrt/libsrc/drtcps.cc                             |   32 +-
 dcmrt/libsrc/drtcs.cc                              |   32 +-
 dcmrt/libsrc/drtcsas.cc                            |   32 +-
 dcmrt/libsrc/drtcshs.cc                            |   32 +-
 dcmrt/libsrc/drtcsis.cc                            |   32 +-
 dcmrt/libsrc/drtcss.cc                             |   61 +-
 dcmrt/libsrc/drtdcs.cc                             |   61 +-
 dcmrt/libsrc/{drtas6.cc => drtdddps.cc}            |  233 +-
 dcmrt/libsrc/{drtags.cc => drtddps.cc}             |  229 +-
 dcmrt/libsrc/drtdias.cc                            |   32 +-
 dcmrt/libsrc/drtdimcs.cc                           |   61 +-
 dcmrt/libsrc/drtdimrs.cc                           |   32 +-
 dcmrt/libsrc/drtdirs.cc                            |   32 +-
 dcmrt/libsrc/drtdose.cc                            |  473 ++-
 dcmrt/libsrc/drtdrs.cc                             |   32 +-
 dcmrt/libsrc/drtds.cc                              |   61 +-
 dcmrt/libsrc/drtdspcs.cc                           |   61 +-
 dcmrt/libsrc/drtdss.cc                             |   32 +-
 dcmrt/libsrc/drtdvhs.cc                            |   32 +-
 dcmrt/libsrc/drtdvrrs.cc                           |   32 +-
 dcmrt/libsrc/drteas.cc                             |   32 +-
 dcmrt/libsrc/drtecs.cc                             |  295 +-
 dcmrt/libsrc/drtes.cc                              |   32 +-
 dcmrt/libsrc/drtfds.cc                             |   32 +-
 dcmrt/libsrc/drtfes.cc                             |   32 +-
 dcmrt/libsrc/drtfgs.cc                             |   32 +-
 dcmrt/libsrc/drtfgss.cc                            |   32 +-
 dcmrt/libsrc/drtfms.cc                             |   32 +-
 dcmrt/libsrc/drtfsss.cc                            |   32 +-
 dcmrt/libsrc/drtgas.cc                             |   32 +-
 dcmrt/libsrc/{drtopis.cc => drtgpis.cc}            |  169 +-
 dcmrt/libsrc/drthsdrs.cc                           |   32 +-
 dcmrt/libsrc/drtiais.cc                            |   32 +-
 dcmrt/libsrc/drtians.cc                            |   32 +-
 dcmrt/libsrc/drtiblds.cc                           |   32 +-
 dcmrt/libsrc/drtibls.cc                            |   32 +-
 dcmrt/libsrc/drtibs.cc                             |   97 +-
 dcmrt/libsrc/drticpds.cc                           |  162 +-
 dcmrt/libsrc/drticps.cc                            |   99 +-
 dcmrt/libsrc/drtics.cc                             |   61 +-
 dcmrt/libsrc/drtiis.cc                             |   71 +-
 dcmrt/libsrc/drtimage.cc                           |  583 ++-
 dcmrt/libsrc/drtionpl.cc                           |  481 ++-
 dcmrt/libsrc/drtiontr.cc                           |  463 ++-
 dcmrt/libsrc/drtipiqs.cc                           |   32 +-
 dcmrt/libsrc/drtircs.cc                            |   32 +-
 dcmrt/libsrc/drtiseis.cc                           |   32 +-
 dcmrt/libsrc/drtitts.cc                            |  186 +-
 dcmrt/libsrc/drtiwps.cc                            |   32 +-
 dcmrt/libsrc/drtiws.cc                             |   32 +-
 dcmrt/libsrc/drtlsds.cc                            |   32 +-
 dcmrt/libsrc/drtlsds6.cc                           |   32 +-
 dcmrt/libsrc/drtlsds7.cc                           |   32 +-
 dcmrt/libsrc/drtmacds.cc                           |   32 +-
 dcmrt/libsrc/drtmas.cc                             |   47 +-
 dcmrt/libsrc/drtmdrs.cc                            |   32 +-
 dcmrt/libsrc/drtmls.cc                             |   44 +-
 dcmrt/libsrc/drtmps.cc                             |   32 +-
 dcmrt/libsrc/{drtrsrs.cc => drtmris.cc}            |  165 +-
 dcmrt/libsrc/drtmss.cc                             |   32 +-
 dcmrt/libsrc/drtmucs.cc                            |   61 +-
 dcmrt/libsrc/drtoas.cc                             |   32 +-
 dcmrt/libsrc/drtois.cc                             |   32 +-
 dcmrt/libsrc/drtopis.cc                            |   32 +-
 dcmrt/libsrc/drtos.cc                              |   68 +-
 dcmrt/libsrc/drtpbcs.cc                            |   61 +-
 dcmrt/libsrc/drtpcs.cc                             |   61 +-
 dcmrt/libsrc/drtpcxs.cc                            |   32 +-
 dcmrt/libsrc/drtpdecs.cc                           |   39 +-
 dcmrt/libsrc/drtpdeds.cc                           |  764 ++++
 dcmrt/libsrc/drtpfms.cc                            |   32 +-
 dcmrt/libsrc/drtpics.cc                            |   61 +-
 dcmrt/libsrc/drtplan.cc                            |  481 ++-
 dcmrt/libsrc/drtporcs.cc                           |   61 +-
 dcmrt/libsrc/drtporis.cc                           |   32 +-
 dcmrt/libsrc/drtppcs.cc                            |   61 +-
 dcmrt/libsrc/drtprsis.cc                           |   32 +-
 dcmrt/libsrc/drtpscs.cc                            |   61 +-
 dcmrt/libsrc/drtpsics.cc                           |   61 +-
 dcmrt/libsrc/drtpss.cc                             |   32 +-
 dcmrt/libsrc/drtpsss.cc                            |   32 +-
 dcmrt/libsrc/drtpvis.cc                            |   32 +-
 dcmrt/libsrc/drtqds.cc                             |   32 +-
 dcmrt/libsrc/drtras.cc                             |   32 +-
 dcmrt/libsrc/drtrbas2.cc                           |   32 +-
 dcmrt/libsrc/drtrbas8.cc                           |   32 +-
 dcmrt/libsrc/drtrbls.cc                            |   32 +-
 dcmrt/libsrc/drtrbos1.cc                           |   32 +-
 dcmrt/libsrc/drtrbos6.cc                           |   32 +-
 dcmrt/libsrc/drtrbos7.cc                           |   32 +-
 dcmrt/libsrc/drtrbs2.cc                            |   32 +-
 dcmrt/libsrc/drtrbs4.cc                            |  128 +-
 dcmrt/libsrc/drtrbs8.cc                            |  128 +-
 dcmrt/libsrc/drtrcdrs.cc                           |   32 +-
 dcmrt/libsrc/drtrcos.cc                            |   32 +-
 dcmrt/libsrc/drtrcps.cc                            |   32 +-
 dcmrt/libsrc/drtrcs.cc                             |   32 +-
 dcmrt/libsrc/drtrdros.cc                           |   32 +-
 dcmrt/libsrc/drtrdrs1.cc                           |   32 +-
 dcmrt/libsrc/drtrdrs6.cc                           |   32 +-
 dcmrt/libsrc/drtrdrs8.cc                           |   32 +-
 dcmrt/libsrc/drtrds.cc                             |   32 +-
 dcmrt/libsrc/drtrecs.cc                            |   32 +-
 dcmrt/libsrc/drtrfgs.cc                            |   32 +-
 dcmrt/libsrc/drtrfors.cc                           |   32 +-
 dcmrt/libsrc/drtrics.cc                            |   70 +-
 dcmrt/libsrc/drtrims.cc                            |   32 +-
 dcmrt/libsrc/drtris.cc                             |   32 +-
 dcmrt/libsrc/drtrlsds.cc                           |   32 +-
 dcmrt/libsrc/drtrmdrs.cc                           |   32 +-
 dcmrt/libsrc/drtrms.cc                             |   32 +-
 dcmrt/libsrc/drtrmss6.cc                           |   32 +-
 dcmrt/libsrc/drtrmss7.cc                           |   32 +-
 dcmrt/libsrc/drtrpcs.cc                            |   61 +-
 dcmrt/libsrc/drtrpis.cc                            |   32 +-
 dcmrt/libsrc/drtrppcs.cc                           |   61 +-
 dcmrt/libsrc/drtrpphs.cc                           |   32 +-
 dcmrt/libsrc/drtrpps.cc                            |   32 +-
 dcmrt/libsrc/drtrppss.cc                           |   32 +-
 dcmrt/libsrc/drtrps.cc                             |   32 +-
 dcmrt/libsrc/drtrris1.cc                           |   32 +-
 dcmrt/libsrc/drtrris6.cc                           |   32 +-
 dcmrt/libsrc/drtrris9.cc                           |   32 +-
 dcmrt/libsrc/drtrrms.cc                            |   32 +-
 dcmrt/libsrc/drtrros.cc                            |   39 +-
 dcmrt/libsrc/drtrrpcs.cc                           |   61 +-
 dcmrt/libsrc/drtrrros.cc                           |   32 +-
 dcmrt/libsrc/drtrrs.cc                             |   32 +-
 dcmrt/libsrc/drtrrshs.cc                           |   32 +-
 dcmrt/libsrc/drtrrtps.cc                           |   32 +-
 dcmrt/libsrc/drtrrtps3.cc                          |   32 +-
 dcmrt/libsrc/drtrrtps4.cc                          |   32 +-
 dcmrt/libsrc/drtrrtps5.cc                          |   32 +-
 dcmrt/libsrc/drtrscs.cc                            |   61 +-
 dcmrt/libsrc/drtrsers.cc                           |   32 +-
 dcmrt/libsrc/drtrses.cc                            |   32 +-
 dcmrt/libsrc/drtrshs.cc                            |   32 +-
 dcmrt/libsrc/drtrshs6.cc                           |   32 +-
 dcmrt/libsrc/drtrshs7.cc                           |   32 +-
 dcmrt/libsrc/drtrsis.cc                            |   32 +-
 dcmrt/libsrc/drtrsns.cc                            |   32 +-
 dcmrt/libsrc/drtrsos.cc                            |   32 +-
 dcmrt/libsrc/drtrsrs.cc                            |   32 +-
 dcmrt/libsrc/drtrss.cc                             |   32 +-
 dcmrt/libsrc/drtrsss.cc                            |   32 +-
 dcmrt/libsrc/drtrsts.cc                            |   32 +-
 dcmrt/libsrc/drtrtrs2.cc                           |   32 +-
 dcmrt/libsrc/drtrtrs4.cc                           |   32 +-
 dcmrt/libsrc/drtrvis.cc                            |   32 +-
 dcmrt/libsrc/drtrws.cc                             |   32 +-
 dcmrt/libsrc/drtrwvms.cc                           |   90 +-
 dcmrt/libsrc/drtscris.cc                           |   32 +-
 dcmrt/libsrc/{drtccs.cc => drtscs.cc}              |  247 +-
 dcmrt/libsrc/drtsdcs.cc                            |   61 +-
 dcmrt/libsrc/drtsds.cc                             |   32 +-
 dcmrt/libsrc/drtshds.cc                            |   32 +-
 dcmrt/libsrc/{drtrds.cc => drtsins.cc}             |  115 +-
 dcmrt/libsrc/drtsis.cc                             |   32 +-
 dcmrt/libsrc/drtsns.cc                             |   32 +-
 dcmrt/libsrc/drtspccs.cc                           |   61 +-
 dcmrt/libsrc/drtspcs.cc                            |   61 +-
 dcmrt/libsrc/{drtopis.cc => drtspgis.cc}           |  157 +-
 dcmrt/libsrc/{drtarics.cc => drtsptcs.cc}          |  244 +-
 dcmrt/libsrc/drtss.cc                              |   32 +-
 dcmrt/libsrc/{drtpics.cc => drtssrcs.cc}           |  235 +-
 dcmrt/libsrc/drtssrs.cc                            |   32 +-
 dcmrt/libsrc/{drtrrs.cc => drtsss.cc}              |  166 +-
 dcmrt/libsrc/drtstrct.cc                           |  463 ++-
 dcmrt/libsrc/drttms0.cc                            |   32 +-
 dcmrt/libsrc/drttms9.cc                            |   32 +-
 dcmrt/libsrc/drttreat.cc                           |  463 ++-
 dcmrt/libsrc/drttscds.cc                           |   32 +-
 dcmrt/libsrc/drttsibs.cc                           |   97 +-
 dcmrt/libsrc/drttsmds.cc                           |   32 +-
 dcmrt/libsrc/drttts.cc                             |   32 +-
 dcmrt/libsrc/{drtsns.cc => drtudis.cc}             |  148 +-
 dcmrt/libsrc/drtvls.cc                             |   32 +-
 dcmrt/libsrc/drtwps.cc                             |   32 +-
 dcmrt/libsrc/drtwrs.cc                             |   32 +-
 dcmrt/libsrc/drtwrsrs.cc                           |   32 +-
 dcmrt/libsrc/drtws.cc                              |   32 +-
 dcmrt/libsrc/drtxrs.cc                             |   32 +-
 dcmrt/tests/Makefile.dep                           |   78 +-
 dcmrt/tests/Makefile.in                            |    4 +-
 dcmseg/apps/CMakeLists.txt                         |    9 -
 dcmseg/include/dcmtk/dcmseg/segdoc.h               |   48 +-
 dcmseg/include/dcmtk/dcmseg/segtypes.h             |    8 +-
 dcmseg/libsrc/CMakeLists.txt                       |    1 -
 dcmseg/libsrc/Makefile.dep                         |   38 +-
 dcmseg/libsrc/segdoc.cc                            |   78 +-
 dcmseg/tests/Makefile.in                           |    4 +-
 dcmsign/apps/Makefile.dep                          |    5 +-
 dcmsign/apps/Makefile.in                           |    2 +-
 dcmsign/apps/dcmsign.cc                            |   25 +-
 dcmsign/include/dcmtk/dcmsign/sisha256.h           |   96 +
 dcmsign/include/dcmtk/dcmsign/sisha384.h           |   96 +
 dcmsign/include/dcmtk/dcmsign/sisha512.h           |   96 +
 dcmsign/include/dcmtk/dcmsign/sitypes.h            |   17 +-
 dcmsign/libsrc/CMakeLists.txt                      |    2 +-
 dcmsign/libsrc/Makefile.dep                        |   46 +-
 dcmsign/libsrc/Makefile.in                         |    2 +-
 dcmsign/libsrc/dcsignat.cc                         |    6 +
 dcmsign/libsrc/sicert.cc                           |   12 +-
 dcmsign/libsrc/sicertvf.cc                         |   16 +-
 dcmsign/libsrc/sidsa.cc                            |   20 +-
 dcmsign/libsrc/siprivat.cc                         |   11 +-
 dcmsign/libsrc/sirsa.cc                            |   20 +-
 dcmsign/libsrc/sisha256.cc                         |   89 +
 dcmsign/libsrc/sisha384.cc                         |   89 +
 dcmsign/libsrc/sisha512.cc                         |   89 +
 dcmsign/libsrc/sitypes.cc                          |    4 +-
 dcmsr/apps/Makefile.in                             |    2 +-
 dcmsr/apps/dsr2html.cc                             |   12 +-
 dcmsr/apps/dsr2xml.cc                              |   14 +-
 dcmsr/apps/dsrdump.cc                              |   12 +-
 dcmsr/apps/xml2dsr.cc                              |    9 +
 dcmsr/data/dsr2xml.xsd                             |   27 +-
 dcmsr/docs/dsr2html.man                            |    7 +-
 dcmsr/docs/dsr2xml.man                             |    7 +-
 dcmsr/docs/dsrdump.man                             |    7 +-
 dcmsr/docs/xml2dsr.man                             |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid100.h             |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h           |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h           |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid11.h              |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid244.h             |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid29.h              |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h            |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h            |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h            |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid42.h              |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid5000.h            |   24 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h            |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h            |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h            |   10 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h            |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h            |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h            |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h            |    4 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h            |   12 +-
 dcmsr/include/dcmtk/dcmsr/codes/dcm.h              |  119 +-
 dcmsr/include/dcmtk/dcmsr/codes/ncit.h             |    4 +-
 dcmsr/include/dcmtk/dcmsr/codes/umls.h             |    7 +-
 dcmsr/include/dcmtk/dcmsr/dsrcodvl.h               |    4 +
 dcmsr/include/dcmtk/dcmsr/dsrcsidl.h               |    2 +-
 dcmsr/include/dcmtk/dcmsr/dsrdoc.h                 |   68 +-
 dcmsr/include/dcmtk/dcmsr/dsrdoctr.h               |   15 +
 dcmsr/include/dcmtk/dcmsr/dsrposcn.h               |    2 +
 dcmsr/include/dcmtk/dcmsr/dsrrefin.h               |    4 +-
 dcmsr/include/dcmtk/dcmsr/dsrsaecc.h               |   94 +
 dcmsr/include/dcmtk/dcmsr/dsrsc3vl.h               |   14 +-
 dcmsr/include/dcmtk/dcmsr/dsrscovl.h               |   12 +-
 dcmsr/include/dcmtk/dcmsr/dsrsoprf.h               |    4 +-
 dcmsr/include/dcmtk/dcmsr/dsrtcovl.h               |   15 +-
 dcmsr/include/dcmtk/dcmsr/dsrtlist.h               |   41 +
 dcmsr/include/dcmtk/dcmsr/dsrtypes.h               |   25 +-
 dcmsr/include/dcmtk/dcmsr/dsrxmld.h                |   20 +-
 dcmsr/libcmr/cid100.cc                             |    4 +-
 dcmsr/libcmr/cid10013.cc                           |    4 +-
 dcmsr/libcmr/cid10033.cc                           |    4 +-
 dcmsr/libcmr/cid11.cc                              |    4 +-
 dcmsr/libcmr/cid244.cc                             |    4 +-
 dcmsr/libcmr/cid29.cc                              |    4 +-
 dcmsr/libcmr/cid4020.cc                            |    4 +-
 dcmsr/libcmr/cid4021.cc                            |    4 +-
 dcmsr/libcmr/cid4031.cc                            |    4 +-
 dcmsr/libcmr/cid42.cc                              |    4 +-
 dcmsr/libcmr/cid5000.cc                            |   28 +-
 dcmsr/libcmr/cid6147.cc                            |    4 +-
 dcmsr/libcmr/cid7021.cc                            |    4 +-
 dcmsr/libcmr/cid7181.cc                            |    8 +-
 dcmsr/libcmr/cid7445.cc                            |    4 +-
 dcmsr/libcmr/cid7452.cc                            |    4 +-
 dcmsr/libcmr/cid7453.cc                            |    4 +-
 dcmsr/libcmr/cid7464.cc                            |    4 +-
 dcmsr/libcmr/cid7469.cc                            |    8 +-
 dcmsr/libcmr/tid1600.cc                            |    2 +-
 dcmsr/libsrc/CMakeLists.txt                        |    2 +-
 dcmsr/libsrc/Makefile.dep                          |  107 +-
 dcmsr/libsrc/Makefile.in                           |    2 +-
 dcmsr/libsrc/dsrcsidl.cc                           |    2 +-
 dcmsr/libsrc/dsrdoc.cc                             |  123 +-
 dcmsr/libsrc/dsrdoctr.cc                           |    9 +
 dcmsr/libsrc/dsrimgfr.cc                           |    6 +
 dcmsr/libsrc/dsrimgse.cc                           |    6 +
 dcmsr/libsrc/dsrrefin.cc                           |    2 +-
 dcmsr/libsrc/dsrsaecc.cc                           |  133 +
 dcmsr/libsrc/dsrsc3gr.cc                           |    6 +
 dcmsr/libsrc/dsrscogr.cc                           |    6 +
 dcmsr/libsrc/dsrsoprf.cc                           |    2 +-
 dcmsr/libsrc/dsrtcodt.cc                           |    6 +
 dcmsr/libsrc/dsrtcosp.cc                           |    6 +
 dcmsr/libsrc/dsrtcoto.cc                           |    7 +-
 dcmsr/libsrc/dsrtypes.cc                           |  219 +-
 dcmsr/libsrc/dsrwavch.cc                           |    6 +
 dcmsr/libsrc/dsrxmld.cc                            |   15 +-
 dcmsr/tests/CMakeLists.txt                         |    2 +-
 dcmsr/tests/Makefile.dep                           |   46 +
 dcmsr/tests/Makefile.in                            |    5 +-
 dcmsr/tests/tests.cc                               |    2 +
 dcmsr/tests/tsrlist.cc                             |   68 +
 dcmtls/docs/ciphers.txt                            |  120 +-
 dcmtls/include/dcmtk/dcmtls/tlsscu.h               |  129 +-
 dcmtls/libsrc/Makefile.dep                         |    7 +-
 dcmtls/libsrc/tlslayer.cc                          |  107 +-
 dcmtls/libsrc/tlstrans.cc                          |   12 +-
 dcmtls/tests/dcmtk_ca.pl                           |   32 +-
 dcmtract/docs/dcmtract.dox                         |    3 +-
 dcmtract/include/dcmtk/dcmtract/trcstatistic.h     |   38 +-
 .../dcmtk/dcmtract/trctractographyresults.h        |   12 +-
 dcmtract/libsrc/CMakeLists.txt                     |    1 -
 dcmtract/libsrc/Makefile.dep                       |   22 +-
 dcmtract/libsrc/trcstatistic.cc                    |   14 +-
 dcmtract/libsrc/trctrackset.cc                     |    4 +-
 dcmwlm/apps/Makefile.in                            |    2 +-
 dcmwlm/docs/wlmscpfs.man                           |    3 +
 dcmwlm/include/dcmtk/dcmwlm/wlfsim.h               |   20 +-
 dcmwlm/include/dcmtk/dcmwlm/wltypdef.h             |    4 +-
 dcmwlm/libsrc/Makefile.dep                         |    1 +
 dcmwlm/libsrc/wlds.cc                              |   17 +-
 dcmwlm/libsrc/wldsfs.cc                            |    8 +-
 dcmwlm/libsrc/wlfsim.cc                            |   68 +-
 dcmwlm/libsrc/wlmactmg.cc                          |   26 +-
 dcmwlm/tests/Makefile.in                           |    2 +-
 dcmwlm/tests/wltest.cc                             |    4 +-
 docs/CHANGES.361                                   | 4312 ++++++++++++++++++++
 doxygen/htmldocs.cfg                               |    4 +-
 doxygen/htmldocs.dox                               |    1 +
 doxygen/manpages.cfg                               |    2 +-
 doxygen/manpages/man1/dcm2json.1                   |  305 ++
 doxygen/manpages/man1/dcm2pdf.1                    |    2 +-
 doxygen/manpages/man1/dcm2pnm.1                    |    2 +-
 doxygen/manpages/man1/dcm2xml.1                    |    7 +-
 doxygen/manpages/man1/dcmcjpeg.1                   |    2 +-
 doxygen/manpages/man1/dcmcjpls.1                   |    2 +-
 doxygen/manpages/man1/dcmconv.1                    |   31 +-
 doxygen/manpages/man1/dcmcrle.1                    |    2 +-
 doxygen/manpages/man1/dcmdjpeg.1                   |   13 +-
 doxygen/manpages/man1/dcmdjpls.1                   |    2 +-
 doxygen/manpages/man1/dcmdrle.1                    |    2 +-
 doxygen/manpages/man1/dcmdspfn.1                   |    2 +-
 doxygen/manpages/man1/dcmdump.1                    |   31 +-
 doxygen/manpages/man1/dcmftest.1                   |    2 +-
 doxygen/manpages/man1/dcmgpdir.1                   |    2 +-
 doxygen/manpages/man1/dcmj2pnm.1                   |    2 +-
 doxygen/manpages/man1/dcml2pnm.1                   |    2 +-
 doxygen/manpages/man1/dcmmkcrv.1                   |    2 +-
 doxygen/manpages/man1/dcmmkdir.1                   |    2 +-
 doxygen/manpages/man1/dcmmklut.1                   |    2 +-
 doxygen/manpages/man1/dcmodify.1                   |    2 +-
 doxygen/manpages/man1/dcmp2pgm.1                   |   10 +-
 doxygen/manpages/man1/dcmprscp.1                   |    2 +-
 doxygen/manpages/man1/dcmprscu.1                   |    2 +-
 doxygen/manpages/man1/dcmpschk.1                   |    2 +-
 doxygen/manpages/man1/dcmpsmk.1                    |    2 +-
 doxygen/manpages/man1/dcmpsprt.1                   |    2 +-
 doxygen/manpages/man1/dcmpsrcv.1                   |    2 +-
 doxygen/manpages/man1/dcmpssnd.1                   |    2 +-
 doxygen/manpages/man1/dcmqridx.1                   |    2 +-
 doxygen/manpages/man1/dcmqrscp.1                   |   76 +-
 doxygen/manpages/man1/dcmqrti.1                    |    2 +-
 doxygen/manpages/man1/dcmquant.1                   |    2 +-
 doxygen/manpages/man1/dcmrecv.1                    |    4 +-
 doxygen/manpages/man1/dcmscale.1                   |    2 +-
 doxygen/manpages/man1/dcmsend.1                    |    4 +-
 doxygen/manpages/man1/dcmsign.1                    |    2 +-
 doxygen/manpages/man1/dcod2lum.1                   |    2 +-
 doxygen/manpages/man1/dconvlum.1                   |    2 +-
 doxygen/manpages/man1/drtdump.1                    |    2 +-
 doxygen/manpages/man1/dsr2html.1                   |    9 +-
 doxygen/manpages/man1/dsr2xml.1                    |    9 +-
 doxygen/manpages/man1/dsrdump.1                    |    9 +-
 doxygen/manpages/man1/dump2dcm.1                   |    2 +-
 doxygen/manpages/man1/echoscu.1                    |    7 +-
 doxygen/manpages/man1/findscu.1                    |    4 +-
 doxygen/manpages/man1/getscu.1                     |   24 +-
 doxygen/manpages/man1/img2dcm.1                    |    2 +-
 doxygen/manpages/man1/movescu.1                    |   51 +-
 doxygen/manpages/man1/pdf2dcm.1                    |    2 +-
 doxygen/manpages/man1/storescp.1                   |   24 +-
 doxygen/manpages/man1/storescu.1                   |   19 +-
 doxygen/manpages/man1/termscu.1                    |    4 +-
 doxygen/manpages/man1/wlmscpfs.1                   |    5 +-
 doxygen/manpages/man1/xml2dcm.1                    |    2 +-
 doxygen/manpages/man1/xml2dsr.1                    |    6 +-
 oflog/include/dcmtk/oflog/config/defines.h         |    3 +-
 oflog/include/dcmtk/oflog/oflog.h                  |    9 +-
 oflog/libsrc/CMakeLists.txt                        |    1 -
 oflog/libsrc/hierlock.cc                           |   19 +-
 oflog/libsrc/oflog.cc                              |    4 +-
 ofstd/include/CMakeLists.txt                       |    2 +-
 ofstd/include/Makefile.in                          |    4 +
 ofstd/include/dcmtk/ofstd/diag/cnvrsn.def          |    7 +
 ofstd/include/dcmtk/ofstd/diag/mmtag.def           |    9 +
 ofstd/include/dcmtk/ofstd/diag/nsdfti.def          |    5 +
 ofstd/include/dcmtk/ofstd/diag/overflow.def        |    9 +
 ofstd/include/dcmtk/ofstd/diag/piof.def            |    9 +
 ofstd/include/dcmtk/ofstd/diag/pop.def             |    7 +
 ofstd/include/dcmtk/ofstd/diag/push.def            |    7 +
 ofstd/include/dcmtk/ofstd/diag/shadow.def          |    9 +
 ofstd/include/dcmtk/ofstd/diag/signcmp.def         |    7 +
 ofstd/include/dcmtk/ofstd/diag/vsprfw.def          |    5 +
 ofstd/include/dcmtk/ofstd/ofchrenc.h               |  306 +-
 ofstd/include/dcmtk/ofstd/ofdate.h                 |    4 +-
 ofstd/include/dcmtk/ofstd/ofdatime.h               |   49 +-
 ofstd/include/dcmtk/ofstd/ofdiag.h                 |  165 +
 ofstd/include/dcmtk/ofstd/offile.h                 |   12 +-
 ofstd/include/dcmtk/ofstd/oflimits.h               |   26 +-
 ofstd/include/dcmtk/ofstd/oflist.h                 |   10 +-
 ofstd/include/dcmtk/ofstd/ofoption.h               |    4 +-
 ofstd/include/dcmtk/ofstd/ofstd.h                  |   86 +
 ofstd/include/dcmtk/ofstd/ofthread.h               |   11 -
 ofstd/include/dcmtk/ofstd/oftraits.h               |    2 +-
 ofstd/include/dcmtk/ofstd/oftuple.h                |    7 +-
 ofstd/include/dcmtk/ofstd/ofutil.h                 |  353 +-
 ofstd/include/dcmtk/ofstd/ofvriant.h               |  740 ++++
 ofstd/include/dcmtk/ofstd/variadic/helpers.h       |   91 +
 ofstd/include/dcmtk/ofstd/variadic/variant.h       |  436 ++
 ofstd/libsrc/CMakeLists.txt                        |    2 +-
 ofstd/libsrc/Makefile.dep                          |   25 +-
 ofstd/libsrc/Makefile.in                           |    1 +
 ofstd/libsrc/ofchrenc.cc                           |  864 ++--
 ofstd/libsrc/ofconapp.cc                           |   12 +-
 ofstd/libsrc/ofdatime.cc                           |   28 +-
 ofstd/libsrc/offname.cc                            |    6 +-
 ofstd/libsrc/ofstd.cc                              |   17 +-
 ofstd/libsrc/ofthread.cc                           |   55 +-
 ofstd/tests/CMakeLists.txt                         |    2 +-
 ofstd/tests/Makefile.dep                           |   39 +-
 ofstd/tests/Makefile.in                            |    4 +-
 ofstd/tests/tchrenc.cc                             |   71 +-
 ofstd/tests/tests.cc                               |    1 +
 ofstd/tests/tlimits.cc                             |   29 +
 ofstd/tests/tofdatim.cc                            |    5 +
 ofstd/tests/toffile.cc                             |    4 +-
 ofstd/tests/toption.cc                             |   21 +
 ofstd/tests/tthread.cc                             |  130 +-
 ofstd/tests/ttuple.cc                              |   21 +
 ofstd/tests/tvariant.cc                            |  131 +
 1080 files changed, 53125 insertions(+), 15136 deletions(-)

diff --git a/CMake/3rdparty.cmake b/CMake/3rdparty.cmake
old mode 100755
new mode 100644
index 9fcca77..eedce5f
--- a/CMake/3rdparty.cmake
+++ b/CMake/3rdparty.cmake
@@ -1,4 +1,4 @@
-IF(WIN32)
+IF(WIN32 AND NOT MINGW)
 
   # For Windows, we don't used FIND_PACKAGE because DCMTK usually is used with its
   # own set of 3rd-party support libraries that can be downloaded from DCMTK's
@@ -139,7 +139,7 @@ IF(WIN32)
     ENDIF(WITH_LIBICONVINC)
   ENDIF(DCMTK_WITH_ICONV)
 
-ELSE(WIN32)
+ELSE(WIN32 AND NOT MINGW)
 
   # Find TIFF
   IF(DCMTK_WITH_TIFF)
@@ -269,6 +269,32 @@ ELSE(WIN32)
 
 ENDIF()
 
+IF(NOT DEFINED DCMTK_WITH_STDLIBC_ICONV)
+  INCLUDE(CheckCXXSourceCompiles)
+  CHECK_CXX_SOURCE_COMPILES("#include <iconv.h>\nint main(){iconv_t cd = iconv_open(\"\",\"\");iconv(cd,0,0,0,0);iconv_close(cd);return 0;}" WITH_STDLIBC_ICONV)
+  IF(WITH_STDLIBC_ICONV)
+    MESSAGE(STATUS "Info: found builtin ICONV support inside the C standard library.")
+    SET(DCMTK_WITH_STDLIBC_ICONV ON CACHE BOOL "" FORCE)
+  ELSE(WITH_STDLIBC_ICONV)
+    SET(DCMTK_WITH_STDLIBC_ICONV OFF CACHE BOOL "" FORCE)
+  ENDIF(WITH_STDLIBC_ICONV)
+ENDIF(NOT DEFINED DCMTK_WITH_STDLIBC_ICONV)
+
+IF(DCMTK_WITH_ICU)
+  FIND_PACKAGE(ICU)
+  IF(NOT ICU_FOUND)
+    MESSAGE(STATUS "Warning: ICU support will be disabled because the ICU were not found.")
+    SET(DCMTK_WITH_ICU OFF CACHE BOOL "" FORCE)
+    SET(WITH_ICU "")
+  ELSE(NOT ICU_FOUND)
+    MESSAGE(STATUS "Info: DCMTK ICU support will be enabled")
+    SET(WITH_ICU 1)
+    SET(ICU_INCDIR ${ICU_INCLUDE_DIR})
+    SET(ICU_LIBS ${ICU_LIBRARIES})
+    INCLUDE_DIRECTORIES(${ICU_INCLUDE_DIR})
+  ENDIF(NOT ICU_FOUND)
+ENDIF(DCMTK_WITH_ICU)
+
 # Find doxygen
 IF(DCMTK_WITH_DOXYGEN)
   FIND_PACKAGE(Doxygen QUIET) # will set variable DOXYGEN_EXECUTABLE
@@ -278,7 +304,7 @@ IF(DCMTK_WITH_DOXYGEN)
   ENDIF(NOT DOXYGEN_FOUND)
 ENDIF(DCMTK_WITH_DOXYGEN)
 
-IF(DCMTK_WITH_ICONV)
+IF(DCMTK_WITH_ICONV OR DCMTK_WITH_STDLIBC_ICONV)
   INCLUDE(CheckCXXSourceCompiles)
   SET(CMAKE_REQUIRED_INCLUDES ${LIBICONV_INCDIR})
   SET(CMAKE_REQUIRED_LIBRARIES ${LIBICONV_LIBS})
@@ -292,4 +318,4 @@ IF(DCMTK_WITH_ICONV)
   }" LIBICONV_SECOND_ARGUMENT_CONST)
   SET(CMAKE_REQUIRED_INCLUDES)
   SET(CMAKE_REQUIRED_LIBRARIES)
-ENDIF(DCMTK_WITH_ICONV)
+ENDIF(DCMTK_WITH_ICONV OR DCMTK_WITH_STDLIBC_ICONV)
diff --git a/CMake/DCMTKConfig.cmake.in b/CMake/DCMTKConfig.cmake.in
index b77a856..89188d2 100644
--- a/CMake/DCMTKConfig.cmake.in
+++ b/CMake/DCMTKConfig.cmake.in
@@ -33,15 +33,8 @@ SET(DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS @DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS@)
 SET(DCMTK_WIDE_CHAR_FILE_IO_FUNCTIONS @DCMTK_WIDE_CHAR_FILE_IO_FUNCTIONS@)
 SET(DCMTK_WIDE_CHAR_MAIN_FUNCTION @DCMTK_WIDE_CHAR_MAIN_FUNCTION@)
 
- at DCMTK_INCLUDE_DIR_CONFIGS@
-
 SET_AND_CHECK(DCMTK_TARGETS "@PACKAGE_DCMTK_CMKDIR_CONFIG@/DCMTKTargets.cmake")
 
-SET(DCMTK_INCLUDE_DIRS "")
-FOREACH(module config ${DCMTK_MODULES})
-  LIST(APPEND DCMTK_INCLUDE_DIRS ${DCMTK_${module}_INCLUDE_DIR})
-ENDFOREACH(module)
-
 @DCMTK_CONFIG_CODE@
 
 # Compatibility: This variable is deprecated
diff --git a/CMake/FindICU.cmake b/CMake/FindICU.cmake
new file mode 100644
index 0000000..59dd891
--- /dev/null
+++ b/CMake/FindICU.cmake
@@ -0,0 +1,690 @@
+# This module can find the International Components for Unicode (ICU) libraries
+#
+# Requirements:
+# - CMake >= 2.8.3 (for new version of find_package_handle_standard_args)
+#
+# The following variables will be defined for your use:
+#   - ICU_FOUND             : were all of your specified components found?
+#   - ICU_INCLUDE_DIRS      : ICU include directory
+#   - ICU_LIBRARIES         : ICU libraries
+#   - ICU_VERSION           : complete version of ICU (x.y.z)
+#   - ICU_VERSION_MAJOR     : major version of ICU
+#   - ICU_VERSION_MINOR     : minor version of ICU
+#   - ICU_VERSION_PATCH     : patch version of ICU
+#   - ICU_<COMPONENT>_FOUND : were <COMPONENT> found? (FALSE for non specified component if it is not a dependency)
+#
+# For windows or non standard installation, define ICU_ROOT_DIR variable to point to the root installation of ICU. Two ways:
+#   - run cmake with -DICU_ROOT_DIR=<PATH>
+#   - define an environment variable with the same name before running cmake
+# With cmake-gui, before pressing "Configure":
+#   1) Press "Add Entry" button
+#   2) Add a new entry defined as:
+#     - Name: ICU_ROOT_DIR
+#     - Type: choose PATH in the selection list
+#     - Press "..." button and select the root installation of ICU
+#
+# Example Usage:
+#
+#   1. Copy this file in the root of your project source directory
+#   2. Then, tell CMake to search this non-standard module in your project directory by adding to your CMakeLists.txt:
+#     set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
+#   3. Finally call find_package() once, here are some examples to pick from
+#
+#   Require ICU 4.4 or later
+#     find_package(ICU 4.4 REQUIRED)
+#
+#   if(ICU_FOUND)
+#      add_executable(myapp myapp.c)
+#      include_directories(${ICU_INCLUDE_DIRS})
+#      target_link_libraries(myapp ${ICU_LIBRARIES})
+#      # with CMake >= 3.0.0, the last two lines can be replaced by the following
+#      target_link_libraries(myapp ICU::ICU)
+#   endif(ICU_FOUND)
+
+########## <ICU finding> ##########
+
+find_package(PkgConfig QUIET)
+
+########## Private ##########
+if(NOT DEFINED ICU_PUBLIC_VAR_NS)
+    set(ICU_PUBLIC_VAR_NS "ICU")                          # Prefix for all ICU relative public variables
+endif(NOT DEFINED ICU_PUBLIC_VAR_NS)
+if(NOT DEFINED ICU_PRIVATE_VAR_NS)
+    set(ICU_PRIVATE_VAR_NS "_${ICU_PUBLIC_VAR_NS}")       # Prefix for all ICU relative internal variables
+endif(NOT DEFINED ICU_PRIVATE_VAR_NS)
+if(NOT DEFINED PC_ICU_PRIVATE_VAR_NS)
+    set(PC_ICU_PRIVATE_VAR_NS "_PC${ICU_PRIVATE_VAR_NS}") # Prefix for all pkg-config relative internal variables
+endif(NOT DEFINED PC_ICU_PRIVATE_VAR_NS)
+
+set(${ICU_PRIVATE_VAR_NS}_HINTS )
+# <deprecated>
+# for future removal
+if(DEFINED ENV{ICU_ROOT})
+    list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS "$ENV{ICU_ROOT}")
+    message(AUTHOR_WARNING "ENV{ICU_ROOT} is deprecated in favor of ENV{ICU_ROOT_DIR}")
+endif(DEFINED ENV{ICU_ROOT})
+if (DEFINED ICU_ROOT)
+    list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS "${ICU_ROOT}")
+    message(AUTHOR_WARNING "ICU_ROOT is deprecated in favor of ICU_ROOT_DIR")
+endif(DEFINED ICU_ROOT)
+# </deprecated>
+if(DEFINED ENV{ICU_ROOT_DIR})
+    list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS "$ENV{ICU_ROOT_DIR}")
+endif(DEFINED ENV{ICU_ROOT_DIR})
+if (DEFINED ICU_ROOT_DIR)
+    list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS "${ICU_ROOT_DIR}")
+endif(DEFINED ICU_ROOT_DIR)
+
+set(${ICU_PRIVATE_VAR_NS}_COMPONENTS )
+# <icu component name> <library name 1> ... <library name N>
+macro(_icu_declare_component _NAME)
+    list(APPEND ${ICU_PRIVATE_VAR_NS}_COMPONENTS ${_NAME})
+    set("${ICU_PRIVATE_VAR_NS}_COMPONENTS_${_NAME}" ${ARGN})
+endmacro(_icu_declare_component)
+
+_icu_declare_component(data icudata)
+_icu_declare_component(uc   icuuc)         # Common and Data libraries
+_icu_declare_component(i18n icui18n icuin) # Internationalization library
+_icu_declare_component(io   icuio ustdio)  # Stream and I/O Library
+_icu_declare_component(le   icule)         # Layout library
+_icu_declare_component(lx   iculx)         # Paragraph Layout library
+
+########## Public ##########
+set(${ICU_PUBLIC_VAR_NS}_FOUND FALSE)
+set(${ICU_PUBLIC_VAR_NS}_LIBRARIES )
+set(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS )
+set(${ICU_PUBLIC_VAR_NS}_C_FLAGS "")
+set(${ICU_PUBLIC_VAR_NS}_CXX_FLAGS "")
+set(${ICU_PUBLIC_VAR_NS}_CPP_FLAGS "")
+set(${ICU_PUBLIC_VAR_NS}_C_SHARED_FLAGS "")
+set(${ICU_PUBLIC_VAR_NS}_CXX_SHARED_FLAGS "")
+set(${ICU_PUBLIC_VAR_NS}_CPP_SHARED_FLAGS "")
+
+foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PRIVATE_VAR_NS}_COMPONENTS})
+    string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT)
+    set("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" FALSE) # may be done in the _icu_declare_component macro
+endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
+
+# Check components
+if(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS) # uc required at least
+    set(${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS uc)
+else(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS)
+    list(APPEND ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS uc)
+    list(REMOVE_DUPLICATES ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS)
+    foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
+        if(NOT DEFINED ${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT})
+            message(FATAL_ERROR "Unknown ICU component: ${${ICU_PRIVATE_VAR_NS}_COMPONENT}")
+        endif(NOT DEFINED ${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT})
+    endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
+endif(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS)
+
+# if pkg-config is available check components dependencies and append `pkg-config icu-<component> --variable=prefix` to hints
+if(PKG_CONFIG_FOUND)
+    set(${ICU_PRIVATE_VAR_NS}_COMPONENTS_DUP ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
+    foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PRIVATE_VAR_NS}_COMPONENTS_DUP})
+        pkg_check_modules(${PC_ICU_PRIVATE_VAR_NS} "icu-${${ICU_PRIVATE_VAR_NS}_COMPONENT}" QUIET)
+
+        if(${PC_ICU_PRIVATE_VAR_NS}_FOUND)
+            list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS ${${PC_ICU_PRIVATE_VAR_NS}_PREFIX})
+            foreach(${PC_ICU_PRIVATE_VAR_NS}_LIBRARY ${${PC_ICU_PRIVATE_VAR_NS}_LIBRARIES})
+                string(REGEX REPLACE "^icu" "" ${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY ${${PC_ICU_PRIVATE_VAR_NS}_LIBRARY})
+                if(NOT ${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY STREQUAL "data")
+                    list(FIND ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS ${${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY} ${ICU_PRIVATE_VAR_NS}_COMPONENT_INDEX)
+                    if(${ICU_PRIVATE_VAR_NS}_COMPONENT_INDEX EQUAL -1)
+                        message(WARNING "Missing component dependency: ${${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY}. Add it to your find_package(ICU) line as COMPONENTS to fix this warning.")
+                        list(APPEND ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS ${${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY})
+                    endif(${ICU_PRIVATE_VAR_NS}_COMPONENT_INDEX EQUAL -1)
+                endif(NOT ${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY STREQUAL "data")
+            endforeach(${PC_ICU_PRIVATE_VAR_NS}_LIBRARY)
+        endif(${PC_ICU_PRIVATE_VAR_NS}_FOUND)
+    endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
+endif(PKG_CONFIG_FOUND)
+# list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS ENV ICU_ROOT_DIR)
+# message("${ICU_PRIVATE_VAR_NS}_HINTS = ${${ICU_PRIVATE_VAR_NS}_HINTS}")
+
+# Includes
+find_path(
+    ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR
+    NAMES unicode/utypes.h utypes.h
+    HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS}
+    PATH_SUFFIXES "include"
+    DOC "Include directories for ICU"
+)
+
+if(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR)
+    ########## <part to keep synced with tests/version/CMakeLists.txt> ##########
+    if(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/uvernum.h") # ICU >= 4.4
+        file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/uvernum.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
+    elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/uversion.h") # ICU [2;4.4[
+        file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/uversion.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
+    elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/utypes.h") # ICU [1.4;2[
+        file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/utypes.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
+    elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/utypes.h") # ICU 1.3
+        file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/utypes.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
+    else()
+        message(FATAL_ERROR "ICU version header not found")
+    endif()
+
+    if(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *ICU_VERSION *\"([0-9]+)\".*") # ICU 1.3
+        # [1.3;1.4[ as #define ICU_VERSION "3" (no patch version, ie all 1.3.X versions will be detected as 1.3.0)
+        set(${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR "1")
+        set(${ICU_PUBLIC_VAR_NS}_VERSION_MINOR "${CMAKE_MATCH_1}")
+        set(${ICU_PUBLIC_VAR_NS}_VERSION_PATCH "0")
+    elseif(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *U_ICU_VERSION_MAJOR_NUM *([0-9]+).*")
+        #
+        # Since version 4.9.1, ICU release version numbering was totaly changed, see:
+        # - http://site.icu-project.org/download/49
+        # - http://userguide.icu-project.org/design#TOC-Version-Numbers-in-ICU
+        #
+        set(${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR "${CMAKE_MATCH_1}")
+        string(REGEX REPLACE ".*# *define *U_ICU_VERSION_MINOR_NUM *([0-9]+).*" "\\1" ${ICU_PUBLIC_VAR_NS}_VERSION_MINOR "${${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS}")
+        string(REGEX REPLACE ".*# *define *U_ICU_VERSION_PATCHLEVEL_NUM *([0-9]+).*" "\\1" ${ICU_PUBLIC_VAR_NS}_VERSION_PATCH "${${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS}")
+    elseif(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *U_ICU_VERSION *\"(([0-9]+)(\\.[0-9]+)*)\".*") # ICU [1.4;1.8[
+        # [1.4;1.8[ as #define U_ICU_VERSION "1.4.1.2" but it seems that some 1.4.[12](?:\.\d)? have releasing error and appears as 1.4.0
+        set(${ICU_PRIVATE_VAR_NS}_FULL_VERSION "${CMAKE_MATCH_1}") # copy CMAKE_MATCH_1, no longer valid on the following if
+        if(${ICU_PRIVATE_VAR_NS}_FULL_VERSION MATCHES "^([0-9]+)\\.([0-9]+)$")
+            set(${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR "${CMAKE_MATCH_1}")
+            set(${ICU_PUBLIC_VAR_NS}_VERSION_MINOR "${CMAKE_MATCH_2}")
+            set(${ICU_PUBLIC_VAR_NS}_VERSION_PATCH "0")
+        elseif(${ICU_PRIVATE_VAR_NS}_FULL_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
+            set(${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR "${CMAKE_MATCH_1}")
+            set(${ICU_PUBLIC_VAR_NS}_VERSION_MINOR "${CMAKE_MATCH_2}")
+            set(${ICU_PUBLIC_VAR_NS}_VERSION_PATCH "${CMAKE_MATCH_3}")
+        endif()
+    else()
+        message(FATAL_ERROR "failed to detect ICU version")
+    endif()
+    set(${ICU_PUBLIC_VAR_NS}_VERSION "${${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR}.${${ICU_PUBLIC_VAR_NS}_VERSION_MINOR}.${${ICU_PUBLIC_VAR_NS}_VERSION_PATCH}")
+    ########## </part to keep synced with tests/version/CMakeLists.txt> ##########
+endif(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR)
+
+# Check libraries
+if(MSVC)
+    include(SelectLibraryConfigurations)
+endif(MSVC)
+foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
+    string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT)
+    if(MSVC)
+        set(${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES )
+        set(${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES )
+        foreach(${ICU_PRIVATE_VAR_NS}_BASE_NAME ${${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT}})
+            list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}")
+            list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}d")
+            list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}${${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR}${${ICU_PUBLIC_VAR_NS}_VERSION_MINOR}")
+            list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}${${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR}${${ICU_PUBLIC_VAR_NS}_VERSION_MINOR}d")
+        endforeach(${ICU_PRIVATE_VAR_NS}_BASE_NAME)
+
+        find_library(
+            ${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE
+            NAMES ${${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES}
+            HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS}
+            DOC "Release library for ICU ${${ICU_PRIVATE_VAR_NS}_COMPONENT} component"
+        )
+        find_library(
+            ${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG
+            NAMES ${${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES}
+            HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS}
+            DOC "Debug library for ICU ${${ICU_PRIVATE_VAR_NS}_COMPONENT} component"
+        )
+
+        select_library_configurations("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}")
+        list(APPEND ${ICU_PUBLIC_VAR_NS}_LIBRARY ${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY})
+    else(MSVC)
+        find_library(
+            ${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY
+            NAMES ${${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT}}
+            PATHS ${${ICU_PRIVATE_VAR_NS}_HINTS}
+            DOC "Library for ICU ${${ICU_PRIVATE_VAR_NS}_COMPONENT} component"
+        )
+
+        if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY)
+            set("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" TRUE)
+            list(APPEND ${ICU_PUBLIC_VAR_NS}_LIBRARY ${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY})
+        endif(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY)
+    endif(MSVC)
+endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
+
+# Try to find out compiler flags
+find_program(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE icu-config HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS})
+if(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE)
+    execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_C_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+    execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cxxflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CXX_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+    execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cppflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CPP_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_C_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+    execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cxxflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CXX_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+    execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cppflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CPP_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE)
+
+# Check find_package arguments
+include(FindPackageHandleStandardArgs)
+if(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
+    find_package_handle_standard_args(
+        ${ICU_PUBLIC_VAR_NS}
+        REQUIRED_VARS ${ICU_PUBLIC_VAR_NS}_LIBRARY ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR
+        VERSION_VAR ${ICU_PUBLIC_VAR_NS}_VERSION
+    )
+else(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
+    find_package_handle_standard_args(${ICU_PUBLIC_VAR_NS} "Could NOT find ICU" ${ICU_PUBLIC_VAR_NS}_LIBRARY ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR)
+endif(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
+
+if(${ICU_PUBLIC_VAR_NS}_FOUND)
+    # <deprecated>
+    # for compatibility with previous versions, alias old ICU_(MAJOR|MINOR|PATCH)_VERSION to ICU_VERSION_$1
+    set(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION ${${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR})
+    set(${ICU_PUBLIC_VAR_NS}_MINOR_VERSION ${${ICU_PUBLIC_VAR_NS}_VERSION_MINOR})
+    set(${ICU_PUBLIC_VAR_NS}_PATCH_VERSION ${${ICU_PUBLIC_VAR_NS}_VERSION_PATCH})
+    # </deprecated>
+    set(${ICU_PUBLIC_VAR_NS}_LIBRARIES ${${ICU_PUBLIC_VAR_NS}_LIBRARY})
+    set(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS ${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR})
+
+    if(NOT CMAKE_VERSION VERSION_LESS "3.0.0")
+        if(NOT TARGET ICU::ICU)
+            add_library(ICU::ICU INTERFACE IMPORTED)
+        endif(NOT TARGET ICU::ICU)
+        set_target_properties(ICU::ICU PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}")
+        foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
+            string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT)
+            add_library("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" UNKNOWN IMPORTED)
+            if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE)
+                set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+                set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_RELEASE "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE}")
+            endif(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE)
+            if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG)
+                set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+                set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_DEBUG "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG}")
+            endif(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG)
+            if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY)
+                set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY}")
+            endif(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY)
+            set_property(TARGET ICU::ICU APPEND PROPERTY INTERFACE_LINK_LIBRARIES "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}")
+#             set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}")
+        endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
+    endif(NOT CMAKE_VERSION VERSION_LESS "3.0.0")
+endif(${ICU_PUBLIC_VAR_NS}_FOUND)
+
+mark_as_advanced(
+    ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR
+    ${ICU_PUBLIC_VAR_NS}_LIBRARY
+)
+
+########## </ICU finding> ##########
+
+########## <resource bundle support> ##########
+
+########## Private ##########
+function(_icu_extract_locale_from_rb _BUNDLE_SOURCE _RETURN_VAR_NAME)
+    file(READ "${_BUNDLE_SOURCE}" _BUNDLE_CONTENTS)
+    string(REGEX REPLACE "//[^\n]*\n" "" _BUNDLE_CONTENTS_WITHOUT_COMMENTS ${_BUNDLE_CONTENTS})
+    string(REGEX REPLACE "[ \t\n]" "" _BUNDLE_CONTENTS_WITHOUT_COMMENTS_AND_SPACES ${_BUNDLE_CONTENTS_WITHOUT_COMMENTS})
+    string(REGEX MATCH "^([a-zA-Z_-]+)(:table)?{" LOCALE_FOUND ${_BUNDLE_CONTENTS_WITHOUT_COMMENTS_AND_SPACES})
+    set("${_RETURN_VAR_NAME}" "${CMAKE_MATCH_1}" PARENT_SCOPE)
+endfunction(_icu_extract_locale_from_rb)
+
+########## Public ##########
+
+#
+# Prototype:
+#   icu_generate_resource_bundle([NAME <name>] [PACKAGE] [DESTINATION <location>] [FILES <list of files>])
+#
+# Common arguments:
+#   - NAME <name>                      : name of output package and to create dummy targets
+#   - FILES <file 1> ... <file N>      : list of resource bundles sources
+#   - DEPENDS <target1> ... <target N> : required to package as library (shared or static), a list of cmake parent targets to link to
+#                                        Note: only (PREVIOUSLY DECLARED) add_executable and add_library as dependencies
+#   - DESTINATION <location>           : optional, directory where to install final binary file(s)
+#   - FORMAT <name>                    : optional, one of none (ICU4C binary format, default), java (plain java) or xliff (XML), see below
+#
+# Arguments depending on FORMAT:
+#   - none (default):
+#       * PACKAGE     : if present, package all resource bundles together. Default is to stop after building individual *.res files
+#       * TYPE <name> : one of :
+#           + common or archive (default) : archive all ressource bundles into a single .dat file
+#           + library or dll              : assemble all ressource bundles into a separate and loadable library (.dll/.so)
+#           + static                      : integrate all ressource bundles to targets designed by DEPENDS parameter (as a static library)
+#       * NO_SHARED_FLAGS                 : only with TYPE in ['library', 'dll', 'static'], do not append ICU_C(XX)_SHARED_FLAGS to targets given as DEPENDS argument
+#   - JAVA:
+#       * BUNDLE <name> : required, prefix for generated classnames
+#   - XLIFF:
+#       (none)
+#
+
+#
+# For an archive, the idea is to generate the following dependencies:
+#
+#   root.txt => root.res \
+#                        |
+#   en.txt   => en.res   |
+#                        | => pkglist.txt => application.dat
+#   fr.txt   => fr.res   |
+#                        |
+#   and so on            /
+#
+# Lengend: 'A => B' means B depends on A
+#
+# Steps (correspond to arrows):
+#   1) genrb (from .txt to .res)
+#   2) generate a file text (pkglist.txt) with all .res files to put together
+#   3) build final archive (from *.res/pkglist.txt to .dat)
+#
+
+function(icu_generate_resource_bundle)
+
+    ##### <check for pkgdata/genrb availability> #####
+    find_program(${ICU_PUBLIC_VAR_NS}_GENRB_EXECUTABLE genrb HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS})
+    find_program(${ICU_PUBLIC_VAR_NS}_PKGDATA_EXECUTABLE pkgdata HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS})
+
+    if(NOT ${ICU_PUBLIC_VAR_NS}_GENRB_EXECUTABLE)
+        message(FATAL_ERROR "genrb not found")
+    endif(NOT ${ICU_PUBLIC_VAR_NS}_GENRB_EXECUTABLE)
+    if(NOT ${ICU_PUBLIC_VAR_NS}_PKGDATA_EXECUTABLE)
+        message(FATAL_ERROR "pkgdata not found")
+    endif(NOT ${ICU_PUBLIC_VAR_NS}_PKGDATA_EXECUTABLE)
+    ##### </check for pkgdata/genrb availability> #####
+
+    ##### <constants> #####
+    set(TARGET_SEPARATOR "+")
+    set(__FUNCTION__ "icu_generate_resource_bundle")
+    set(PACKAGE_TARGET_PREFIX "ICU${TARGET_SEPARATOR}PKG")
+    set(RESOURCE_TARGET_PREFIX "ICU${TARGET_SEPARATOR}RB")
+    ##### </constants> #####
+
+    ##### <hash constants> #####
+    # filename extension of built resource bundle (without dot)
+    set(BUNDLES__SUFFIX "res")
+    set(BUNDLES_JAVA_SUFFIX "java")
+    set(BUNDLES_XLIFF_SUFFIX "xlf")
+    # alias: none (default) = common = archive ; dll = library ; static
+    set(PKGDATA__ALIAS "")
+    set(PKGDATA_COMMON_ALIAS "")
+    set(PKGDATA_ARCHIVE_ALIAS "")
+    set(PKGDATA_DLL_ALIAS "LIBRARY")
+    set(PKGDATA_LIBRARY_ALIAS "LIBRARY")
+    set(PKGDATA_STATIC_ALIAS "STATIC")
+    # filename prefix of built package
+    set(PKGDATA__PREFIX "")
+    set(PKGDATA_LIBRARY_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}")
+    set(PKGDATA_STATIC_PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}")
+    # filename extension of built package (with dot)
+    set(PKGDATA__SUFFIX ".dat")
+    set(PKGDATA_LIBRARY_SUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}")
+    set(PKGDATA_STATIC_SUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}")
+    # pkgdata option mode specific
+    set(PKGDATA__OPTIONS "-m" "common")
+    set(PKGDATA_STATIC_OPTIONS "-m" "static")
+    set(PKGDATA_LIBRARY_OPTIONS "-m" "library")
+    # cmake library type for output package
+    set(PKGDATA_LIBRARY__TYPE "")
+    set(PKGDATA_LIBRARY_STATIC_TYPE STATIC)
+    set(PKGDATA_LIBRARY_LIBRARY_TYPE SHARED)
+    ##### </hash constants> #####
+
+    include(CMakeParseArguments)
+    cmake_parse_arguments(
+        PARSED_ARGS # output variable name
+        # options (true/false) (default value: false)
+        "PACKAGE;NO_SHARED_FLAGS"
+        # univalued parameters (default value: "")
+        "NAME;DESTINATION;TYPE;FORMAT;BUNDLE"
+        # multivalued parameters (default value: "")
+        "FILES;DEPENDS"
+        ${ARGN}
+    )
+
+    # assert(${PARSED_ARGS_NAME} != "")
+    if(NOT PARSED_ARGS_NAME)
+        message(FATAL_ERROR "${__FUNCTION__}(): no name given, NAME parameter missing")
+    endif(NOT PARSED_ARGS_NAME)
+
+    # assert(length(PARSED_ARGS_FILES) > 0)
+    list(LENGTH PARSED_ARGS_FILES PARSED_ARGS_FILES_LEN)
+    if(PARSED_ARGS_FILES_LEN LESS 1)
+        message(FATAL_ERROR "${__FUNCTION__}() expects at least 1 resource bundle as FILES argument, 0 given")
+    endif(PARSED_ARGS_FILES_LEN LESS 1)
+
+    string(TOUPPER "${PARSED_ARGS_FORMAT}" UPPER_FORMAT)
+    # assert(${UPPER_FORMAT} in ['', 'java', 'xlif'])
+    if(NOT DEFINED BUNDLES_${UPPER_FORMAT}_SUFFIX)
+        message(FATAL_ERROR "${__FUNCTION__}(): unknown FORMAT '${PARSED_ARGS_FORMAT}'")
+    endif(NOT DEFINED BUNDLES_${UPPER_FORMAT}_SUFFIX)
+
+    if(UPPER_FORMAT STREQUAL "JAVA")
+        # assert(${PARSED_ARGS_BUNDLE} != "")
+        if(NOT PARSED_ARGS_BUNDLE)
+            message(FATAL_ERROR "${__FUNCTION__}(): java bundle name expected, BUNDLE parameter missing")
+        endif(NOT PARSED_ARGS_BUNDLE)
+    endif(UPPER_FORMAT STREQUAL "JAVA")
+
+    if(PARSED_ARGS_PACKAGE)
+        # assert(${PARSED_ARGS_FORMAT} == "")
+        if(PARSED_ARGS_FORMAT)
+            message(FATAL_ERROR "${__FUNCTION__}(): packaging is only supported for binary format, not xlif neither java outputs")
+        endif(PARSED_ARGS_FORMAT)
+
+        string(TOUPPER "${PARSED_ARGS_TYPE}" UPPER_MODE)
+        # assert(${UPPER_MODE} in ['', 'common', 'archive', 'dll', library'])
+        if(NOT DEFINED PKGDATA_${UPPER_MODE}_ALIAS)
+            message(FATAL_ERROR "${__FUNCTION__}(): unknown TYPE '${PARSED_ARGS_TYPE}'")
+        else(NOT DEFINED PKGDATA_${UPPER_MODE}_ALIAS)
+            set(TYPE "${PKGDATA_${UPPER_MODE}_ALIAS}")
+        endif(NOT DEFINED PKGDATA_${UPPER_MODE}_ALIAS)
+
+        # Package name: strip file extension if present
+        get_filename_component(PACKAGE_NAME_WE ${PARSED_ARGS_NAME} NAME_WE)
+        # Target name to build package
+        set(PACKAGE_TARGET_NAME "${PACKAGE_TARGET_PREFIX}${TARGET_SEPARATOR}${PACKAGE_NAME_WE}")
+        # Target name to build intermediate list file
+        set(PACKAGE_LIST_TARGET_NAME "${PACKAGE_TARGET_NAME}${TARGET_SEPARATOR}PKGLIST")
+        # Directory (absolute) to set as "current directory" for genrb (does not include package directory, -p)
+        # We make our "cook" there to prevent any conflict
+        if(DEFINED CMAKE_PLATFORM_ROOT_BIN) # CMake < 2.8.10
+            set(RESOURCE_GENRB_CHDIR_DIR "${CMAKE_PLATFORM_ROOT_BIN}/${PACKAGE_TARGET_NAME}.dir/")
+        else(DEFINED CMAKE_PLATFORM_ROOT_BIN) # CMake >= 2.8.10
+            set(RESOURCE_GENRB_CHDIR_DIR "${CMAKE_PLATFORM_INFO_DIR}/${PACKAGE_TARGET_NAME}.dir/")
+        endif(DEFINED CMAKE_PLATFORM_ROOT_BIN)
+        # Directory (absolute) where resource bundles are built: concatenation of RESOURCE_GENRB_CHDIR_DIR and package name
+        set(RESOURCE_OUTPUT_DIR "${RESOURCE_GENRB_CHDIR_DIR}/${PACKAGE_NAME_WE}/")
+        # Output (relative) path for built package
+        if(MSVC AND TYPE STREQUAL PKGDATA_LIBRARY_ALIAS)
+            set(PACKAGE_OUTPUT_PATH "${RESOURCE_GENRB_CHDIR_DIR}/${PACKAGE_NAME_WE}/${PKGDATA_${TYPE}_PREFIX}${PACKAGE_NAME_WE}${PKGDATA_${TYPE}_SUFFIX}")
+        else(MSVC AND TYPE STREQUAL PKGDATA_LIBRARY_ALIAS)
+            set(PACKAGE_OUTPUT_PATH "${RESOURCE_GENRB_CHDIR_DIR}/${PKGDATA_${TYPE}_PREFIX}${PACKAGE_NAME_WE}${PKGDATA_${TYPE}_SUFFIX}")
+        endif(MSVC AND TYPE STREQUAL PKGDATA_LIBRARY_ALIAS)
+        # Output (absolute) path for the list file
+        set(PACKAGE_LIST_OUTPUT_PATH "${RESOURCE_GENRB_CHDIR_DIR}/pkglist.txt")
+
+        file(MAKE_DIRECTORY "${RESOURCE_OUTPUT_DIR}")
+    else(PARSED_ARGS_PACKAGE)
+        set(RESOURCE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/")
+#         set(RESOURCE_GENRB_CHDIR_DIR "UNUSED")
+    endif(PARSED_ARGS_PACKAGE)
+
+    set(TARGET_RESOURCES )
+    set(COMPILED_RESOURCES_PATH )
+    set(COMPILED_RESOURCES_BASENAME )
+    foreach(RESOURCE_SOURCE ${PARSED_ARGS_FILES})
+        _icu_extract_locale_from_rb(${RESOURCE_SOURCE} RESOURCE_NAME_WE)
+        get_filename_component(SOURCE_BASENAME ${RESOURCE_SOURCE} NAME)
+        get_filename_component(ABSOLUTE_SOURCE ${RESOURCE_SOURCE} ABSOLUTE)
+
+        if(UPPER_FORMAT STREQUAL "XLIFF")
+            if(RESOURCE_NAME_WE STREQUAL "root")
+                set(XLIFF_LANGUAGE "en")
+            else(RESOURCE_NAME_WE STREQUAL "root")
+                string(REGEX REPLACE "[^a-z].*$" "" XLIFF_LANGUAGE "${RESOURCE_NAME_WE}")
+            endif(RESOURCE_NAME_WE STREQUAL "root")
+        endif(UPPER_FORMAT STREQUAL "XLIFF")
+
+        ##### <templates> #####
+        set(RESOURCE_TARGET_NAME "${RESOURCE_TARGET_PREFIX}${TARGET_SEPARATOR}${PARSED_ARGS_NAME}${TARGET_SEPARATOR}${RESOURCE_NAME_WE}")
+
+        set(RESOURCE_OUTPUT__PATH "${RESOURCE_NAME_WE}.res")
+        if(RESOURCE_NAME_WE STREQUAL "root")
+            set(RESOURCE_OUTPUT_JAVA_PATH "${PARSED_ARGS_BUNDLE}.java")
+        else(RESOURCE_NAME_WE STREQUAL "root")
+            set(RESOURCE_OUTPUT_JAVA_PATH "${PARSED_ARGS_BUNDLE}_${RESOURCE_NAME_WE}.java")
+        endif(RESOURCE_NAME_WE STREQUAL "root")
+        set(RESOURCE_OUTPUT_XLIFF_PATH "${RESOURCE_NAME_WE}.xlf")
+
+        set(GENRB__OPTIONS "")
+        set(GENRB_JAVA_OPTIONS "-j" "-b" "${PARSED_ARGS_BUNDLE}")
+        set(GENRB_XLIFF_OPTIONS "-x" "-l" "${XLIFF_LANGUAGE}")
+        ##### </templates> #####
+
+        # build <locale>.txt from <locale>.res
+        if(PARSED_ARGS_PACKAGE)
+            add_custom_command(
+                OUTPUT "${RESOURCE_OUTPUT_DIR}${RESOURCE_OUTPUT_${UPPER_FORMAT}_PATH}"
+                COMMAND ${CMAKE_COMMAND} -E chdir ${RESOURCE_GENRB_CHDIR_DIR} ${${ICU_PUBLIC_VAR_NS}_GENRB_EXECUTABLE} ${GENRB_${UPPER_FORMAT}_OPTIONS} -d ${PACKAGE_NAME_WE} ${ABSOLUTE_SOURCE}
+                DEPENDS ${RESOURCE_SOURCE}
+            )
+        else(PARSED_ARGS_PACKAGE)
+            add_custom_command(
+                OUTPUT "${RESOURCE_OUTPUT_DIR}${RESOURCE_OUTPUT_${UPPER_FORMAT}_PATH}"
+                COMMAND ${${ICU_PUBLIC_VAR_NS}_GENRB_EXECUTABLE} ${GENRB_${UPPER_FORMAT}_OPTIONS} -d ${RESOURCE_OUTPUT_DIR} ${ABSOLUTE_SOURCE}
+                DEPENDS ${RESOURCE_SOURCE}
+            )
+        endif(PARSED_ARGS_PACKAGE)
+        # dummy target (ICU+RB+<name>+<locale>) for each locale to build the <locale>.res file from its <locale>.txt by the add_custom_command above
+        add_custom_target(
+            "${RESOURCE_TARGET_NAME}" ALL
+            COMMENT ""
+            DEPENDS "${RESOURCE_OUTPUT_DIR}${RESOURCE_OUTPUT_${UPPER_FORMAT}_PATH}"
+            SOURCES ${RESOURCE_SOURCE}
+        )
+
+        if(PARSED_ARGS_DESTINATION AND NOT PARSED_ARGS_PACKAGE)
+            install(FILES "${RESOURCE_OUTPUT_DIR}${RESOURCE_OUTPUT_${UPPER_FORMAT}_PATH}" DESTINATION ${PARSED_ARGS_DESTINATION} PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
+        endif(PARSED_ARGS_DESTINATION AND NOT PARSED_ARGS_PACKAGE)
+
+        list(APPEND TARGET_RESOURCES "${RESOURCE_TARGET_NAME}")
+        list(APPEND COMPILED_RESOURCES_PATH "${RESOURCE_OUTPUT_DIR}${RESOURCE_OUTPUT_${UPPER_FORMAT}_PATH}")
+        list(APPEND COMPILED_RESOURCES_BASENAME "${RESOURCE_NAME_WE}.${BUNDLES_${UPPER_FORMAT}_SUFFIX}")
+    endforeach(RESOURCE_SOURCE)
+    # convert semicolon separated list to a space separated list
+    # NOTE: if the pkglist.txt file starts (or ends?) with a whitespace, pkgdata add an undefined symbol (named <package>_) for it
+    string(REPLACE ";" " " COMPILED_RESOURCES_BASENAME "${COMPILED_RESOURCES_BASENAME}")
+
+    if(PARSED_ARGS_PACKAGE)
+        # create a text file (pkglist.txt) with the list of the *.res to package together
+        add_custom_command(
+            OUTPUT "${PACKAGE_LIST_OUTPUT_PATH}"
+            COMMAND ${CMAKE_COMMAND} -E echo "${COMPILED_RESOURCES_BASENAME}" > "${PACKAGE_LIST_OUTPUT_PATH}"
+            DEPENDS ${COMPILED_RESOURCES_PATH}
+        )
+        # run pkgdata from pkglist.txt
+        add_custom_command(
+            OUTPUT "${PACKAGE_OUTPUT_PATH}"
+            COMMAND ${CMAKE_COMMAND} -E chdir ${RESOURCE_GENRB_CHDIR_DIR} ${${ICU_PUBLIC_VAR_NS}_PKGDATA_EXECUTABLE} -F ${PKGDATA_${TYPE}_OPTIONS} -s ${PACKAGE_NAME_WE} -p ${PACKAGE_NAME_WE} ${PACKAGE_LIST_OUTPUT_PATH}
+            DEPENDS "${PACKAGE_LIST_OUTPUT_PATH}"
+            VERBATIM
+        )
+        if(PKGDATA_LIBRARY_${TYPE}_TYPE)
+            # assert(${PARSED_ARGS_DEPENDS} != "")
+            if(NOT PARSED_ARGS_DEPENDS)
+                message(FATAL_ERROR "${__FUNCTION__}(): static and library mode imply a list of targets to link to, DEPENDS parameter missing")
+            endif(NOT PARSED_ARGS_DEPENDS)
+            add_library(${PACKAGE_TARGET_NAME} ${PKGDATA_LIBRARY_${TYPE}_TYPE} IMPORTED)
+            if(MSVC)
+                string(REGEX REPLACE "${PKGDATA_LIBRARY_SUFFIX}\$" "${CMAKE_IMPORT_LIBRARY_SUFFIX}" PACKAGE_OUTPUT_LIB "${PACKAGE_OUTPUT_PATH}")
+                set_target_properties(${PACKAGE_TARGET_NAME} PROPERTIES IMPORTED_LOCATION ${PACKAGE_OUTPUT_PATH} IMPORTED_IMPLIB ${PACKAGE_OUTPUT_LIB})
+            else(MSVC)
+                set_target_properties(${PACKAGE_TARGET_NAME} PROPERTIES IMPORTED_LOCATION ${PACKAGE_OUTPUT_PATH})
+            endif(MSVC)
+            foreach(DEPENDENCY ${PARSED_ARGS_DEPENDS})
+                target_link_libraries(${DEPENDENCY} ${PACKAGE_TARGET_NAME})
+                if(NOT PARSED_ARGS_NO_SHARED_FLAGS)
+                    get_property(ENABLED_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
+                    list(LENGTH "${ENABLED_LANGUAGES}" ENABLED_LANGUAGES_LENGTH)
+                    if(ENABLED_LANGUAGES_LENGTH GREATER 1)
+                        message(WARNING "Project has more than one language enabled, skip automatic shared flags appending")
+                    else(ENABLED_LANGUAGES_LENGTH GREATER 1)
+                        set_property(TARGET "${DEPENDENCY}" APPEND PROPERTY COMPILE_FLAGS "${${ICU_PUBLIC_VAR_NS}_${ENABLED_LANGUAGES}_SHARED_FLAGS}")
+                    endif(ENABLED_LANGUAGES_LENGTH GREATER 1)
+                endif(NOT PARSED_ARGS_NO_SHARED_FLAGS)
+            endforeach(DEPENDENCY)
+            # http://www.mail-archive.com/cmake-commits@cmake.org/msg01135.html
+            set(PACKAGE_INTERMEDIATE_TARGET_NAME "${PACKAGE_TARGET_NAME}${TARGET_SEPARATOR}DUMMY")
+            # dummy intermediate target (ICU+PKG+<name>+DUMMY) to link the package to the produced library by running pkgdata (see add_custom_command above)
+            add_custom_target(
+                ${PACKAGE_INTERMEDIATE_TARGET_NAME}
+                COMMENT ""
+                DEPENDS "${PACKAGE_OUTPUT_PATH}"
+            )
+            add_dependencies("${PACKAGE_TARGET_NAME}" "${PACKAGE_INTERMEDIATE_TARGET_NAME}")
+        else(PKGDATA_LIBRARY_${TYPE}_TYPE)
+            # dummy target (ICU+PKG+<name>) to run pkgdata (see add_custom_command above)
+            add_custom_target(
+                "${PACKAGE_TARGET_NAME}" ALL
+                COMMENT ""
+                DEPENDS "${PACKAGE_OUTPUT_PATH}"
+            )
+        endif(PKGDATA_LIBRARY_${TYPE}_TYPE)
+        # dummy target (ICU+PKG+<name>+PKGLIST) to build the file pkglist.txt
+        add_custom_target(
+            "${PACKAGE_LIST_TARGET_NAME}" ALL
+            COMMENT ""
+            DEPENDS "${PACKAGE_LIST_OUTPUT_PATH}"
+        )
+        # package => pkglist.txt
+        add_dependencies("${PACKAGE_TARGET_NAME}" "${PACKAGE_LIST_TARGET_NAME}")
+        # pkglist.txt => *.res
+        add_dependencies("${PACKAGE_LIST_TARGET_NAME}" ${TARGET_RESOURCES})
+
+        if(PARSED_ARGS_DESTINATION)
+            install(FILES "${PACKAGE_OUTPUT_PATH}" DESTINATION ${PARSED_ARGS_DESTINATION} PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
+        endif(PARSED_ARGS_DESTINATION)
+    endif(PARSED_ARGS_PACKAGE)
+
+endfunction(icu_generate_resource_bundle)
+
+########## </resource bundle support> ##########
+
+########## <debug> ##########
+
+if(${ICU_PUBLIC_VAR_NS}_DEBUG)
+
+    function(icudebug _VARNAME)
+        if(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME})
+            message("${ICU_PUBLIC_VAR_NS}_${_VARNAME} = ${${ICU_PUBLIC_VAR_NS}_${_VARNAME}}")
+        else(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME})
+            message("${ICU_PUBLIC_VAR_NS}_${_VARNAME} = <UNDEFINED>")
+        endif(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME})
+    endfunction(icudebug)
+
+    # IN (args)
+    icudebug("FIND_COMPONENTS")
+    icudebug("FIND_REQUIRED")
+    icudebug("FIND_QUIETLY")
+    icudebug("FIND_VERSION")
+
+    # OUT
+    # Found
+    icudebug("FOUND")
+    # Flags
+    icudebug("C_FLAGS")
+    icudebug("CPP_FLAGS")
+    icudebug("CXX_FLAGS")
+    icudebug("C_SHARED_FLAGS")
+    icudebug("CPP_SHARED_FLAGS")
+    icudebug("CXX_SHARED_FLAGS")
+    # Linking
+    icudebug("INCLUDE_DIRS")
+    icudebug("LIBRARIES")
+    # Version
+    icudebug("VERSION_MAJOR")
+    icudebug("VERSION_MINOR")
+    icudebug("VERSION_PATCH")
+    icudebug("VERSION")
+    # <COMPONENT>_(FOUND|LIBRARY)
+    set(${ICU_PRIVATE_VAR_NS}_COMPONENT_VARIABLES "FOUND" "LIBRARY" "LIBRARY_RELEASE" "LIBRARY_DEBUG")
+    foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PRIVATE_VAR_NS}_COMPONENTS})
+        string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT)
+        foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT_VARIABLE ${${ICU_PRIVATE_VAR_NS}_COMPONENT_VARIABLES})
+            icudebug("${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_${${ICU_PRIVATE_VAR_NS}_COMPONENT_VARIABLE}")
+        endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT_VARIABLE)
+    endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
+
+endif(${ICU_PUBLIC_VAR_NS}_DEBUG)
+
+########## </debug> ##########
diff --git a/CMake/GenerateCMakeExports.cmake b/CMake/GenerateCMakeExports.cmake
index 2cc3de4..453ecc0 100644
--- a/CMake/GenerateCMakeExports.cmake
+++ b/CMake/GenerateCMakeExports.cmake
@@ -2,7 +2,7 @@
 # and 'DCMTKConfig.cmake'. These files are created within the build tree
 # but also are installed with DCMTK.
 # The files can be utilized (no matter whether they are installed or just
-# located within the build tree) by external  projects in order to use
+# located within the build tree) by external projects in order to use
 # the related DCMTK build.
 # In order to accomplish that, the files provide hints to the external project
 # which libraries and executables are available, and which build options have
@@ -13,11 +13,11 @@
 # DCMTKTargets.cmake will contain list of available DCMTK executables and libs
 # DCMTKConfigVersion.cmake provides checking of DCMTK version compatibility
 # DCMTKConfig.cmake will contain options used to build this DCMTK package
-#
-#
+
 # Get and store all executable targets to DCMTKTargets.cmake within build's main dir
 GET_PROPERTY(DCMTK_EXECUTABLE_TARGETS GLOBAL PROPERTY DCMTK_EXECUTABLE_TARGETS)
 EXPORT(TARGETS ${DCMTK_EXECUTABLE_TARGETS} APPEND FILE ${DCMTK_BUILD_CMKDIR}/DCMTKTargets.cmake)
+
 # Get and store libraries to DCMTKTargets.cmake within the build's main dir
 GET_PROPERTY(DCMTK_LIBRARY_TARGETS GLOBAL PROPERTY DCMTK_LIBRARY_TARGETS)
 EXPORT(TARGETS ${DCMTK_LIBRARY_TARGETS} APPEND FILE ${DCMTK_BUILD_CMKDIR}/DCMTKTargets.cmake)
@@ -71,11 +71,11 @@ ENDFOREACH(module)
 SET(DCMTK_CONFIG_CODE "####### Expanded from \@DCMTK_CONFIG_CODE\@ #######\n")
 SET(DCMTK_CONFIG_CODE "${DCMTK_CONFIG_CODE}list(APPEND DCMTK_INCLUDE_DIRS \"\${PACKAGE_PREFIX_DIR}/include\")\n")
 SET(DCMTK_CONFIG_CODE "${DCMTK_CONFIG_CODE}##################################################")
-SET(dcmtk_install_config ${CMAKE_BINARY_DIR}/CMakeFiles/DCMTKConfig.cmake)
+SET(DCMTK_INSTALL_CONFIG ${CMAKE_BINARY_DIR}/CMakeFiles/DCMTKConfig.cmake)
 # Actually configure file and set rule to install it to installation subdir
 CONFIGURE_PACKAGE_CONFIG_FILE(
     CMake/DCMTKConfig.cmake.in
-    ${dcmtk_install_config}
+    ${DCMTK_INSTALL_CONFIG}
     INSTALL_DESTINATION ${CMAKE_INSTALL_PREFIX}/${DCMTK_INSTALL_CMKDIR}
     PATH_VARS DCMTK_CMKDIR_CONFIG DCMTK_INCLUDE_DIR_CONFIGS
     NO_CHECK_REQUIRED_COMPONENTS_MACRO)
diff --git a/CMake/GenerateDCMTKConfigure.cmake b/CMake/GenerateDCMTKConfigure.cmake
index c936b4d..a31cc53 100644
--- a/CMake/GenerateDCMTKConfigure.cmake
+++ b/CMake/GenerateDCMTKConfigure.cmake
@@ -55,6 +55,50 @@ ELSE(DCMTK_WIDE_CHAR_MAIN_FUNCTION)
   MESSAGE(STATUS "Info: Wide char main function for command line tools will be disabled")
 ENDIF(DCMTK_WIDE_CHAR_MAIN_FUNCTION)
 
+IF(NOT DCMTK_ENABLE_CHARSET_CONVERSION)
+  SET(DCMTK_ENABLE_CHARSET_CONVERSION_DOCSTRING "Select character set conversion implementation.")
+  IF(DCMTK_WITH_ICONV)
+    IF(DCMTK_WITH_ICU)
+      MESSAGE(WARNING "Warning: Both ICU and the libiconv are available, using libiconv. Modify DCMTK_ENABLE_CHARSET_CONVERSION for switching to ICU")
+    ENDIF()
+    SET(DCMTK_ENABLE_CHARSET_CONVERSION "libiconv" CACHE STRING "${DCMTK_ENABLE_CHARSET_CONVERSION_DOCSTRING}")
+  ELSEIF(DCMTK_WITH_ICU)
+    SET(DCMTK_ENABLE_CHARSET_CONVERSION "ICU" CACHE STRING "${DCMTK_ENABLE_CHARSET_CONVERSION_DOCSTRING}")
+  ELSEIF(DCMTK_WITH_STDLIBC_ICONV)
+    SET(DCMTK_ENABLE_CHARSET_CONVERSION "stdlibc (iconv)" CACHE STRING "${DCMTK_ENABLE_CHARSET_CONVERSION_DOCSTRING}")
+  ELSE()
+    SET(DCMTK_ENABLE_CHARSET_CONVERSION "<disabled>" CACHE STRING "${DCMTK_ENABLE_CHARSET_CONVERSION_DOCSTRING}")
+  ENDIF()
+ENDIF()
+
+SET(DCMTK_ENABLE_CHARSET_CONVERSION_ALTERNATIVES)
+IF(DCMTK_WITH_ICONV)
+  LIST(APPEND DCMTK_ENABLE_CHARSET_CONVERSION_ALTERNATIVES "libiconv")
+ENDIF()
+IF(DCMTK_WITH_ICU)
+  LIST(APPEND DCMTK_ENABLE_CHARSET_CONVERSION_ALTERNATIVES "ICU")
+ENDIF()
+IF(DCMTK_WITH_STDLIBC_ICONV)
+  LIST(APPEND DCMTK_ENABLE_CHARSET_CONVERSION_ALTERNATIVES "stdlibc (iconv)")
+ENDIF()
+SET_PROPERTY(CACHE DCMTK_ENABLE_CHARSET_CONVERSION PROPERTY STRINGS ${DCMTK_ENABLE_CHARSET_CONVERSION_ALTERNATIVES} "<disabled>")
+
+IF(DCMTK_ENABLE_CHARSET_CONVERSION STREQUAL "libiconv" OR DCMTK_ENABLE_CHARSET_CONVERSION STREQUAL "DCMTK_CHARSET_CONVERSION_ICONV")
+  MESSAGE(STATUS "Info: Building DCMTK with character set conversion support using libiconv")
+  SET(DCMTK_ENABLE_CHARSET_CONVERSION "DCMTK_CHARSET_CONVERSION_ICONV")
+  SET(CHARSET_CONVERSION_LIBS ${LIBICONV_LIBS})
+ELSEIF(DCMTK_ENABLE_CHARSET_CONVERSION STREQUAL "ICU" OR DCMTK_ENABLE_CHARSET_CONVERSION STREQUAL "DCMTK_CHARSET_CONVERSION_ICU")
+  MESSAGE(STATUS "Info: Building DCMTK with character set conversion support using the ICU")
+  SET(DCMTK_ENABLE_CHARSET_CONVERSION "DCMTK_CHARSET_CONVERSION_ICU")
+  SET(CHARSET_CONVERSION_LIBS ${ICU_LIBS})
+ELSEIF(DCMTK_ENABLE_CHARSET_CONVERSION STREQUAL "stdlibc (iconv)" OR DCMTK_ENABLE_CHARSET_CONVERSION STREQUAL "DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV")
+  MESSAGE(STATUS "Info: Building DCMTK with character set conversion support using builtin iconv functions from the C standard library")
+  SET(DCMTK_ENABLE_CHARSET_CONVERSION "DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV")
+ELSE()
+  MESSAGE(STATUS "Info: Building DCMTK without character set conversion support")
+  SET(DCMTK_ENABLE_CHARSET_CONVERSION OFF)
+ENDIF()
+
 # Standard C++ headers (currently hard-coded)
 #IF(VTK_USE_ANSI_STDLIB)
   SET(USE_STD_CXX_INCLUDES 1)
diff --git a/CMake/dcmtkPrepare.cmake b/CMake/dcmtkPrepare.cmake
index e66ac8a..679d607 100644
--- a/CMake/dcmtkPrepare.cmake
+++ b/CMake/dcmtkPrepare.cmake
@@ -9,9 +9,9 @@ SET(DCMTK_CONFIGURATION_DONE true)
 
 # Minimum CMake version required
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-IF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.5.2)
-  SET(CMAKE_BACKWARDS_COMPATIBILITY 3.5.2 CACHE STRING "Latest version of CMake when this project was released." FORCE)
-ENDIF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.5.2)
+IF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.7.2)
+  SET(CMAKE_BACKWARDS_COMPATIBILITY 3.7.2 CACHE STRING "Latest version of CMake when this project was released." FORCE)
+ENDIF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.7.2)
 
 # CMAKE_BUILD_TYPE is set to value "Release" if none is specified by the
 # selected build file generator. For those generators that support multiple
@@ -42,7 +42,7 @@ SET(DCMTK_MINOR_VERSION 6)
 SET(DCMTK_BUILD_VERSION 1)
 # The ABI is not guaranteed to be stable between different snapshots/releases,
 # so this particular version number is increased for each snapshot or release.
-SET(DCMTK_ABI_VERSION 9)
+SET(DCMTK_ABI_VERSION 11)
 
 # Package "release" settings (some are currently unused and, therefore, disabled)
 SET(DCMTK_PACKAGE_NAME "dcmtk")
@@ -78,6 +78,7 @@ OPTION(DCMTK_WITH_ZLIB "Configure DCMTK with support for ZLIB." ON)
 OPTION(DCMTK_WITH_OPENSSL "Configure DCMTK with support for OPENSSL." ON)
 OPTION(DCMTK_WITH_SNDFILE "Configure DCMTK with support for SNDFILE." ON)
 OPTION(DCMTK_WITH_ICONV "Configure DCMTK with support for ICONV." ON)
+OPTION(DCMTK_WITH_ICU "Configure DCMTK with support for ICU." ON)
 IF(NOT WIN32)
   OPTION(DCMTK_WITH_WRAP "Configure DCMTK with support for WRAP." ON)
 ENDIF(NOT WIN32)
@@ -93,11 +94,11 @@ OPTION(DCMTK_WIDE_CHAR_MAIN_FUNCTION "Build command line tools with wide char ma
 # configured the the opposite way since most users won't be interested in using
 # the external default dictionary if it is already compiled in.
 IF(WIN32 OR MINGW)
-  OPTION(DCMTK_ENABLE_BUILTIN_DICTIONARY "Configure DCMTK with compiled-in data dictionary" ON)
-  OPTION(DCMTK_ENABLE_EXTERNAL_DICTIONARY "Configure DCMTK to load external dictionary from default path on startup" OFF)
+  OPTION(DCMTK_ENABLE_BUILTIN_DICTIONARY "Configure DCMTK with compiled-in data dictionary." ON)
+  OPTION(DCMTK_ENABLE_EXTERNAL_DICTIONARY "Configure DCMTK to load external dictionary from default path on startup." OFF)
 ELSE(WIN32 or MINGW) # built-in dictionary turned off on Unix per default
-  OPTION(DCMTK_ENABLE_BUILTIN_DICTIONARY "Configure DCMTK with compiled-in data dictionary" OFF)
-  OPTION(DCMTK_ENABLE_EXTERNAL_DICTIONARY "Configure DCMTK to load external dictionary from default path on startup" ON)
+  OPTION(DCMTK_ENABLE_BUILTIN_DICTIONARY "Configure DCMTK with compiled-in data dictionary." OFF)
+  OPTION(DCMTK_ENABLE_EXTERNAL_DICTIONARY "Configure DCMTK to load external dictionary from default path on startup." ON)
 ENDIF(WIN32 OR MINGW)
 if (NOT DCMTK_ENABLE_EXTERNAL_DICTIONARY AND NOT DCMTK_ENABLE_BUILTIN_DICTIONARY)
   MESSAGE(WARNING "Either external or built-in dictionary should be enabled, otherwise dictionary must be loaded manually on startup!")
@@ -212,7 +213,7 @@ IF(COMMAND CMAKE_POLICY)
 ENDIF(COMMAND CMAKE_POLICY)
 
 # pass optional build date to compiler
-ADD_DEFINITIONS(-DDCMTK_BUILD_DATE=\\\"2016-06-30\\\")
+ADD_DEFINITIONS(-DDCMTK_BUILD_DATE=\\\"2017-02-28\\\")
 
 # make OFString(NULL) safe by default
 ADD_DEFINITIONS(-DUSE_NULL_SAFE_OFSTRING)
diff --git a/CMake/osconfig.h.in b/CMake/osconfig.h.in
index 2b6325d..bfe7e5c 100644
--- a/CMake/osconfig.h.in
+++ b/CMake/osconfig.h.in
@@ -887,6 +887,20 @@
 /* Define if we are compiling with libiconv support. */
 #cmakedefine WITH_LIBICONV
 
+/* Define if the C standard library has iconv builtin. */
+#cmakedefine WITH_STDLIBC_ICONV
+
+/* Define if we are compiling with ICU support. */
+#cmakedefine WITH_ICU
+
+/* character set conversion constants. */
+#define DCMTK_CHARSET_CONVERSION_ICU 1
+#define DCMTK_CHARSET_CONVERSION_ICONV 2
+#define DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV 3
+
+/* Define to select character set conversion implementation. */
+#cmakedefine DCMTK_ENABLE_CHARSET_CONVERSION @DCMTK_ENABLE_CHARSET_CONVERSION@
+
 /* Define if the second argument to iconv() is const */
 #cmakedefine LIBICONV_SECOND_ARGUMENT_CONST @LIBICONV_SECOND_ARGUMENT_CONST@
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e79ed77..b54f69a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15,7 +15,7 @@ INCLUDE(CMake/dcmtkPrepare.cmake NO_POLICY_SCOPE)
 
 SET(DCMTK_MODULES ofstd oflog dcmdata dcmimgle
   dcmimage dcmjpeg dcmjpls dcmtls dcmnet dcmsr
-  dcmsign dcmwlm dcmqrdb dcmpstat dcmrt dcmiod dcmfg dcmseg dcmtract
+  dcmsign dcmwlm dcmqrdb dcmpstat dcmrt dcmiod dcmfg dcmseg dcmtract dcmpmap
   CACHE STRING "List of modules that should be built.")
 
 #-----------------------------------------------------------------------------
@@ -67,6 +67,8 @@ INSTALL(FILES ${DCMTK_BINARY_DIR}/config/include/dcmtk/config/osconfig.h
 INSTALL(FILES ANNOUNCE CHANGES COPYRIGHT CREDITS FAQ HISTORY VERSION
         DESTINATION ${DCMTK_INSTALL_DOCDIR}
         COMPONENT doc)
+INSTALL(DIRECTORY docs/ DESTINATION ${DCMTK_INSTALL_DOCDIR}
+        COMPONENT doc FILES_MATCHING PATTERN "CHANGES.???")
 
 #-----------------------------------------------------------------------------
 # Create an install configuration files for external projects
@@ -91,14 +93,14 @@ IF(HAVE_CONFIGURE_PACKAGE_CONFIG_FILE AND HAVE_WRITE_BASIC_PACKAGE_VERSION_FILE)
   # Create and configure CMake export files
   INCLUDE(CMake/GenerateCMakeExports.cmake)
 
-  # ${dcmtk_install_config} and ${dcmtk_config_version} are
+  # ${DCMTK_INSTALL_CONFIG} and ${DCMTK_CONFIG_VERSION} are
   # defined within CMake/GenerateCMakeExports.cmake.
   # Install DCMTKTargets.cmake to install tree
   INSTALL(EXPORT DCMTKTargets FILE DCMTKTargets.cmake
           DESTINATION ${DCMTK_INSTALL_CMKDIR} COMPONENT cmake)
 
-  # Install DCMTKConfigVersion.cmake
-  INSTALL(FILES ${dcmtk_install_config} ${dcmtk_config_version}
+  # Install DCMTKConfig.cmake and DCMTKConfigVersion.cmake
+  INSTALL(FILES ${DCMTK_INSTALL_CONFIG} ${DCMTK_CONFIG_VERSION}
           DESTINATION ${DCMTK_INSTALL_CMKDIR} COMPONENT cmake)
 
 ELSE(HAVE_CONFIGURE_PACKAGE_CONFIG_FILE AND HAVE_WRITE_BASIC_PACKAGE_VERSION_FILE)
@@ -110,8 +112,8 @@ ELSE(HAVE_CONFIGURE_PACKAGE_CONFIG_FILE AND HAVE_WRITE_BASIC_PACKAGE_VERSION_FIL
   CONFIGURE_FILE(${DCMTK_SOURCE_DIR}/CMake/DCMTKConfig.cmake26.in
                  ${DCMTK_BINARY_DIR}/DCMTKConfig.cmake @ONLY)
 
-  # Install DCMTK's CMake configuration file
-  INSTALL(FILES ${DCMTK_BINARY_DIR}/DCMTKConfig.cmake
+  # Install DCMTKConfig.cmake and DCMTKConfigVersion.cmake
+  INSTALL(FILES ${DCMTK_BINARY_DIR}/DCMTKConfig.cmake ${DCMTK_BINARY_DIR}/DCMTKConfigVersion.cmake
           DESTINATION ${DCMTK_INSTALL_CMKDIR}
           COMPONENT cmake)
 
diff --git a/COPYRIGHT b/COPYRIGHT
index de2a236..a73c4cb 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -477,7 +477,7 @@ The dcmrt sub-package is covered by the following copyright:
 
 ---------------------------------------------------------------------------
 
-Copyright (c) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
 Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
 All rights reserved.
 
@@ -511,7 +511,7 @@ Parts of the dcmsr sub-package are covered by the following copyright:
 
 ---------------------------------------------------------------------------
 
-Copyright (c) 2015-2016, J. Riesmeier, Oldenburg, Germany
+Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -589,7 +589,7 @@ which comes with the following original copyright:
 
 ---------------------------------------------------------------------------
 
-Copyright © 2005–2010, Pascal Getreuer
+Copyright (C) 2005-2010, Pascal Getreuer
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
diff --git a/CREDITS b/CREDITS
index c67e7c0..b83ff57 100644
--- a/CREDITS
+++ b/CREDITS
@@ -26,7 +26,7 @@ J. Riesmeier: The work on the DCMTK is supported by Joerg Riesmeier (Oldenburg,
   who now works as a freelancer.
 
 M. Malaterre: The GDCM developer Mathieu Malaterre (Lyon, France) regularly
-  reports possible issues to the DCMTK team.  He is also responsible for
+  reports possible issues to the DCMTK team.  He was also responsible for
   packaging the DCMTK library and tools for the Debian operating system.
 
 Open Connections: The work on the DCMTK is supported by employees of the Open
@@ -55,4 +55,4 @@ YXLON: The work on the initial version of the DICONDE data dictionary was
 Please note that this list does not claim to be exhaustive.  Just send us an
 email if you think that you or your company/organization should also be listed.
 
-DCMTK Team, 2016-06-08
+DCMTK Team, 2017-01-31
diff --git a/Makefile b/Makefile
index 83aaaf4..84ee6b0 100644
--- a/Makefile
+++ b/Makefile
@@ -9,43 +9,43 @@ include $(configdir)/Makefile.def
 
 .NOTPARALLEL:
 
-all:  config-all ofstd-all oflog-all dcmdata-all dcmiod-all dcmfg-all dcmseg-all dcmimgle-all dcmimage-all dcmjpeg-all dcmjpls-all dcmtls-all dcmnet-all dcmsr-all dcmsign-all dcmwlm-all dcmqrdb-all dcmpstat-all dcmrt-all dcmtract-all
+all:  config-all ofstd-all oflog-all dcmdata-all dcmiod-all dcmfg-all dcmseg-all dcmimgle-all dcmimage-all dcmjpeg-all dcmjpls-all dcmtls-all dcmnet-all dcmsr-all dcmsign-all dcmwlm-all dcmqrdb-all dcmpstat-all dcmrt-all dcmtract-all dcmpmap-all
 
-libsrc-all:  ofstd-libsrc-all oflog-libsrc-all dcmdata-libsrc-all dcmiod-libsrc-all dcmfg-libsrc-all dcmseg-libsrc-all dcmimgle-libsrc-all dcmimage-libsrc-all dcmjpeg-libsrc-all dcmjpls-libsrc-all dcmtls-libsrc-all dcmnet-libsrc-all dcmsr-libsrc-all dcmsign-libsrc-all dcmwlm-libsrc-all dcmqrdb-libsrc-all dcmpstat-libsrc-all dcmrt-libsrc-all dcmtract-libsrc-all
+libsrc-all:  ofstd-libsrc-all oflog-libsrc-all dcmdata-libsrc-all dcmiod-libsrc-all dcmfg-libsrc-all dcmseg-libsrc-all dcmimgle-libsrc-all dcmimage-libsrc-all dcmjpeg-libsrc-all dcmjpls-libsrc-all dcmtls-libsrc-all dcmnet-libsrc-all dcmsr-libsrc-all dcmsign-libsrc-all dcmwlm-libsrc-all dcmqrdb-libsrc-all dcmpstat-libsrc-all dcmrt-libsrc-all dcmtract-libsrc-all dcmpmap-libsrc-all
 
-tests-all:  config-tests-all ofstd-tests-all oflog-tests-all dcmdata-tests-all dcmiod-tests-all dcmfg-tests-all dcmseg-tests-all dcmimgle-tests-all dcmimage-tests-all dcmjpeg-tests-all dcmjpls-tests-all dcmtls-tests-all dcmnet-tests-all dcmsr-tests-all dcmsign-tests-all dcmwlm-tests-all dcmqrdb-tests-all dcmpstat-tests-all dcmrt-tests-all dcmtract-tests-all
+tests-all:  config-tests-all ofstd-tests-all oflog-tests-all dcmdata-tests-all dcmiod-tests-all dcmfg-tests-all dcmseg-tests-all dcmimgle-tests-all dcmimage-tests-all dcmjpeg-tests-all dcmjpls-tests-all dcmtls-tests-all dcmnet-tests-all dcmsr-tests-all dcmsign-tests-all dcmwlm-tests-all dcmqrdb-tests-all dcmpstat-tests-all dcmrt-tests-all dcmtract-tests-all dcmpmap-tests-all
 
-install:  config-install ofstd-install oflog-install dcmdata-install dcmiod-install dcmfg-install dcmseg-install dcmimgle-install dcmimage-install dcmjpeg-install dcmjpls-install dcmtls-install dcmnet-install dcmsr-install dcmsign-install dcmwlm-install dcmqrdb-install dcmpstat-install dcmrt-install dcmtract-install dcmtk-install-doc install-man
+install:  config-install ofstd-install oflog-install dcmdata-install dcmiod-install dcmfg-install dcmseg-install dcmimgle-install dcmimage-install dcmjpeg-install dcmjpls-install dcmtls-install dcmnet-install dcmsr-install dcmsign-install dcmwlm-install dcmqrdb-install dcmpstat-install dcmrt-install dcmtract-install dcmpmap-install dcmtk-install-doc install-man
 
 install-all: install install-lib install-html
 
-install-bin:  config-install-bin ofstd-install-bin oflog-install-bin dcmdata-install-bin dcmiod-install-bin dcmfg-install-bin dcmseg-install-bin dcmimgle-install-bin dcmimage-install-bin dcmjpeg-install-bin dcmjpls-install-bin dcmtls-install-bin dcmnet-install-bin dcmsr-install-bin dcmsign-install-bin dcmwlm-install-bin dcmqrdb-install-bin dcmpstat-install-bin dcmrt-install-bin dcmtract-install-bin
+install-bin:  config-install-bin ofstd-install-bin oflog-install-bin dcmdata-install-bin dcmiod-install-bin dcmfg-install-bin dcmseg-install-bin dcmimgle-install-bin dcmimage-install-bin dcmjpeg-install-bin dcmjpls-install-bin dcmtls-install-bin dcmnet-install-bin dcmsr-install-bin dcmsign-install-bin dcmwlm-install-bin dcmqrdb-install-bin dcmpstat-install-bin dcmrt-install-bin dcmtract-install-bin dcmpmap-install-bin
 
-install-doc:  config-install-doc ofstd-install-doc oflog-install-doc dcmdata-install-doc dcmiod-install-doc dcmfg-install-doc dcmseg-install-doc dcmimgle-install-doc dcmimage-install-doc dcmjpeg-install-doc dcmjpls-install-doc dcmtls-install-doc dcmnet-install-doc dcmsr-install-doc dcmsign-install-doc dcmwlm-install-doc dcmqrdb-install-doc dcmpstat-install-doc dcmrt-install-doc dcmtract-install-doc
+install-doc:  config-install-doc ofstd-install-doc oflog-install-doc dcmdata-install-doc dcmiod-install-doc dcmfg-install-doc dcmseg-install-doc dcmimgle-install-doc dcmimage-install-doc dcmjpeg-install-doc dcmjpls-install-doc dcmtls-install-doc dcmnet-install-doc dcmsr-install-doc dcmsign-install-doc dcmwlm-install-doc dcmqrdb-install-doc dcmpstat-install-doc dcmrt-install-doc dcmtract-install-doc dcmpmap-install-doc
 
-install-data:  config-install-data ofstd-install-data oflog-install-data dcmdata-install-data dcmiod-install-data dcmfg-install-data dcmseg-install-data dcmimgle-install-data dcmimage-install-data dcmjpeg-install-data dcmjpls-install-data dcmtls-install-data dcmnet-install-data dcmsr-install-data dcmsign-install-data dcmwlm-install-data dcmqrdb-install-data dcmpstat-install-data dcmrt-install-data dcmtract-install-data
+install-data:  config-install-data ofstd-install-data oflog-install-data dcmdata-install-data dcmiod-install-data dcmfg-install-data dcmseg-install-data dcmimgle-install-data dcmimage-install-data dcmjpeg-install-data dcmjpls-install-data dcmtls-install-data dcmnet-install-data dcmsr-install-data dcmsign-install-data dcmwlm-install-data dcmqrdb-install-data dcmpstat-install-data dcmrt-install-data dcmtract-install-data dcmpmap-install-data
 
-install-etc:  config-install-etc ofstd-install-etc oflog-install-etc dcmdata-install-etc dcmiod-install-etc dcmfg-install-etc dcmseg-install-etc dcmimgle-install-etc dcmimage-install-etc dcmjpeg-install-etc dcmjpls-install-etc dcmtls-install-etc dcmnet-install-etc dcmsr-install-etc dcmsign-install-etc dcmwlm-install-etc dcmqrdb-install-etc dcmpstat-install-etc dcmrt-install-etc dcmtract-install-etc
+install-etc:  config-install-etc ofstd-install-etc oflog-install-etc dcmdata-install-etc dcmiod-install-etc dcmfg-install-etc dcmseg-install-etc dcmimgle-install-etc dcmimage-install-etc dcmjpeg-install-etc dcmjpls-install-etc dcmtls-install-etc dcmnet-install-etc dcmsr-install-etc dcmsign-install-etc dcmwlm-install-etc dcmqrdb-install-etc dcmpstat-install-etc dcmrt-install-etc dcmtract-install-etc dcmpmap-install-etc
 
-install-lib:  config-install-lib ofstd-install-lib oflog-install-lib dcmdata-install-lib dcmiod-install-lib dcmfg-install-lib dcmseg-install-lib dcmimgle-install-lib dcmimage-install-lib dcmjpeg-install-lib dcmjpls-install-lib dcmtls-install-lib dcmnet-install-lib dcmsr-install-lib dcmsign-install-lib dcmwlm-install-lib dcmqrdb-install-lib dcmpstat-install-lib dcmrt-install-lib dcmtract-install-lib
+install-lib:  config-install-lib ofstd-install-lib oflog-install-lib dcmdata-install-lib dcmiod-install-lib dcmfg-install-lib dcmseg-install-lib dcmimgle-install-lib dcmimage-install-lib dcmjpeg-install-lib dcmjpls-install-lib dcmtls-install-lib dcmnet-install-lib dcmsr-install-lib dcmsign-install-lib dcmwlm-install-lib dcmqrdb-install-lib dcmpstat-install-lib dcmrt-install-lib dcmtract-install-lib dcmpmap-install-lib
 
-install-include:  config-install-include ofstd-install-include oflog-install-include dcmdata-install-include dcmiod-install-include dcmfg-install-include dcmseg-install-include dcmimgle-install-include dcmimage-install-include dcmjpeg-install-include dcmjpls-install-include dcmtls-install-include dcmnet-install-include dcmsr-install-include dcmsign-install-include dcmwlm-install-include dcmqrdb-install-include dcmpstat-install-include dcmrt-install-include dcmtract-install-include
+install-include:  config-install-include ofstd-install-include oflog-install-include dcmdata-install-include dcmiod-install-include dcmfg-install-include dcmseg-install-include dcmimgle-install-include dcmimage-install-include dcmjpeg-install-include dcmjpls-install-include dcmtls-install-include dcmnet-install-include dcmsr-install-include dcmsign-install-include dcmwlm-install-include dcmqrdb-install-include dcmpstat-install-include dcmrt-install-include dcmtract-install-include dcmpma [...]
 
-install-support:  config-install-support ofstd-install-support oflog-install-support dcmdata-install-support dcmiod-install-support dcmfg-install-support dcmseg-install-support dcmimgle-install-support dcmimage-install-support dcmjpeg-install-support dcmjpls-install-support dcmtls-install-support dcmnet-install-support dcmsr-install-support dcmsign-install-support dcmwlm-install-support dcmqrdb-install-support dcmpstat-install-support dcmrt-install-support dcmtract-install-support
+install-support:  config-install-support ofstd-install-support oflog-install-support dcmdata-install-support dcmiod-install-support dcmfg-install-support dcmseg-install-support dcmimgle-install-support dcmimage-install-support dcmjpeg-install-support dcmjpls-install-support dcmtls-install-support dcmnet-install-support dcmsr-install-support dcmsign-install-support dcmwlm-install-support dcmqrdb-install-support dcmpstat-install-support dcmrt-install-support dcmtract-install-support dcmpma [...]
 
 check: tests-all
 	$(MAKE) -s check-nosilent
 
-check-nosilent:  config-check ofstd-check oflog-check dcmdata-check dcmiod-check dcmfg-check dcmseg-check dcmimgle-check dcmimage-check dcmjpeg-check dcmjpls-check dcmtls-check dcmnet-check dcmsr-check dcmsign-check dcmwlm-check dcmqrdb-check dcmpstat-check dcmrt-check dcmtract-check
+check-nosilent:  config-check ofstd-check oflog-check dcmdata-check dcmiod-check dcmfg-check dcmseg-check dcmimgle-check dcmimage-check dcmjpeg-check dcmjpls-check dcmtls-check dcmnet-check dcmsr-check dcmsign-check dcmwlm-check dcmqrdb-check dcmpstat-check dcmrt-check dcmtract-check dcmpmap-check
 
 check-exhaustive: tests-all
 	$(MAKE) -s check-nosilent-exhaustive
 
-check-nosilent-exhaustive:  config-check-exhaustive ofstd-check-exhaustive oflog-check-exhaustive dcmdata-check-exhaustive dcmiod-check-exhaustive dcmfg-check-exhaustive dcmseg-check-exhaustive dcmimgle-check-exhaustive dcmimage-check-exhaustive dcmjpeg-check-exhaustive dcmjpls-check-exhaustive dcmtls-check-exhaustive dcmnet-check-exhaustive dcmsr-check-exhaustive dcmsign-check-exhaustive dcmwlm-check-exhaustive dcmqrdb-check-exhaustive dcmpstat-check-exhaustive dcmrt-check-exhaustive dc [...]
+check-nosilent-exhaustive:  config-check-exhaustive ofstd-check-exhaustive oflog-check-exhaustive dcmdata-check-exhaustive dcmiod-check-exhaustive dcmfg-check-exhaustive dcmseg-check-exhaustive dcmimgle-check-exhaustive dcmimage-check-exhaustive dcmjpeg-check-exhaustive dcmjpls-check-exhaustive dcmtls-check-exhaustive dcmnet-check-exhaustive dcmsr-check-exhaustive dcmsign-check-exhaustive dcmwlm-check-exhaustive dcmqrdb-check-exhaustive dcmpstat-check-exhaustive dcmrt-check-exhaustive dc [...]
 
 dcmtk-install-doc:
 	$(configdir)/mkinstalldirs $(DESTDIR)$(docdir)
-	for file in ANNOUNCE CHANGES COPYRIGHT CREDITS FAQ HISTORY VERSION; do \
+	for file in ANNOUNCE CHANGES COPYRIGHT CREDITS FAQ HISTORY VERSION docs/CHANGES.???; do \
 		$(INSTALL_DATA) $$file $(DESTDIR)$(docdir) ;\
 	done
 
@@ -91,7 +91,7 @@ help:
 	@echo ""
 	@echo "The following modules are available:"
 	@echo ""
-	@echo "ofstd oflog dcmdata dcmiod dcmfg dcmseg dcmimgle dcmimage dcmjpeg dcmjpls dcmtls dcmnet dcmsr dcmsign dcmwlm dcmqrdb dcmpstat dcmrt dcmtract"
+	@echo "ofstd oflog dcmdata dcmiod dcmfg dcmseg dcmimgle dcmimage dcmjpeg dcmjpls dcmtls dcmnet dcmsr dcmsign dcmwlm dcmqrdb dcmpstat dcmrt dcmtract dcmpmap"
 
 config-all:
 	(cd config && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" all)
@@ -873,6 +873,45 @@ dcmtract-check:
 dcmtract-check-exhaustive:
 	(cd dcmtract && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" check-exhaustive)
 
+dcmpmap-all:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" all)
+
+dcmpmap-libsrc-all:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" libsrc-all)
+
+dcmpmap-tests-all:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" tests-all)
+
+dcmpmap-install:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" install)
+
+dcmpmap-install-bin:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" install-bin)
+
+dcmpmap-install-doc:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" install-doc)
+
+dcmpmap-install-data:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" install-data)
+
+dcmpmap-install-etc:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" install-etc)
+
+dcmpmap-install-lib:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" install-lib)
+
+dcmpmap-install-include:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" install-include)
+
+dcmpmap-install-support:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" install-support)
+
+dcmpmap-check:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" check)
+
+dcmpmap-check-exhaustive:
+	(cd dcmpmap && $(MAKE) ARCH="$(ARCH)" DESTDIR="$(DESTDIR)" check-exhaustive)
+
 dependencies:
 	-(cd config && $(MAKE) dependencies)
 	(cd ofstd && $(MAKE) dependencies)
@@ -894,6 +933,7 @@ dependencies:
 	(cd dcmpstat && $(MAKE) dependencies)
 	(cd dcmrt && $(MAKE) dependencies)
 	(cd dcmtract && $(MAKE) dependencies)
+	(cd dcmpmap && $(MAKE) dependencies)
 
 clean:
 	(cd ofstd && $(MAKE) clean)
@@ -915,6 +955,7 @@ clean:
 	(cd dcmpstat && $(MAKE) clean)
 	(cd dcmrt && $(MAKE) clean)
 	(cd dcmtract && $(MAKE) clean)
+	(cd dcmpmap && $(MAKE) clean)
 	(cd doxygen && $(MAKE) clean)
 	-(cd config && $(MAKE) clean)
 	rm -f $(TRASH)
@@ -939,6 +980,7 @@ distclean:
 	(cd dcmpstat && $(MAKE) distclean)
 	(cd dcmrt && $(MAKE) distclean)
 	(cd dcmtract && $(MAKE) distclean)
+	(cd dcmpmap && $(MAKE) distclean)
 	(cd doxygen && $(MAKE) distclean)
 	-(cd config && $(MAKE) distclean)
 	rm -f $(TRASH)
diff --git a/README b/README
index d8317ef..452a5de 100644
--- a/README
+++ b/README
@@ -16,13 +16,15 @@ DCMTK contains the following sub-packages, each in its own sub-directory:
     dcmjpeg  - a compression/decompression library and utility apps
     dcmjpls  - a compression/decompression library and utility apps
     dcmnet   - a networking library and utility apps
+    dcmpmap  - a library for working with parametric map objects
     dcmpstat - a presentation state library and utility apps
     dcmqrdb  - an image database server
     dcmrt    - a radiation therapy library and utility apps
     dcmseg   - a library for working with segmentation objects
     dcmsign  - a digital signature library and utility apps
-    dcmsr    - a structured report library and utility apps
+    dcmsr    - a structured reporting library and utility apps
     dcmtls   - security extensions for the network library
+    dcmtract - a library for working with tractography results
     dcmwlm   - a modality worklist database server
     oflog    - a logging library based on log4cplus
     ofstd    - a library of general purpose classes
diff --git a/VERSION b/VERSION
index b0cf8e9..a2f470f 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.6.1_20160630
+3.6.1_20170228
diff --git a/config/Makefile.def.in b/config/Makefile.def.in
index cbec746..b5edc49 100644
--- a/config/Makefile.def.in
+++ b/config/Makefile.def.in
@@ -52,10 +52,10 @@ DEBUG = @DEBUG@
 #
 
 # We want the old behavior of OFString(NULL) for now, no crashes.
-GLOBALDEFS = @DEFS@ -DDCMTK_BUILD_DATE=\"2016-06-30\" -DUSE_NULL_SAFE_OFSTRING -DDCMTK_BUILD_IN_PROGRESS
+GLOBALDEFS = @DEFS@ -DDCMTK_BUILD_DATE=\"2017-02-28\" -DUSE_NULL_SAFE_OFSTRING -DDCMTK_BUILD_IN_PROGRESS
 
 #
-# ARCH defines special machine archtecture compiler settings
+# ARCH defines special machine architecture compiler settings
 # (e.g. -arch i386 on NeXT)
 #
 
@@ -79,11 +79,10 @@ ZLIBLIBS = @ZLIBLIBS@
 XMLLIBS = @XMLLIBS@
 TCPWRAPPERLIBS = @TCPWRAPPERLIBS@
 SNDFILELIBS = @SNDFILELIBS@
-ICONVLIBS = @ICONVLIBS@
+CHARCONVLIBS = @CHARCONVLIBS@
 LIBEXT = @LIBEXT@
 BINEXT = @BINEXT@
 STRIP = @STRIP@
-DCMTK_ENABLE_BUILTIN_DICTIONARY= @DCMTK_ENABLE_BUILTIN_DICTIONARY@
 
 #
 # for clean and distclean
@@ -91,7 +90,7 @@ DCMTK_ENABLE_BUILTIN_DICTIONARY= @DCMTK_ENABLE_BUILTIN_DICTIONARY@
 TRASH = *~ "\#*\#" *.bak core
 DISTTRASH = $(TRASH) Makefile *.cache *.log *.status
 
-includes = -I. -I$(srcdir) -I$(top_srcdir)/include -I$(configdir)/include $(LOCALINCLUDES)
+includes = -I. -I$(srcdir) -I$(top_srcdir)/include -I$(configdir)/include $(LOCALINCLUDES) @CHARCONVINCLUDES@
 defines = $(GLOBALDEFS) $(LOCALDEFS) $(DEBUG) $(LOCALDEBUG)
 
 
diff --git a/config/arith.cc b/config/arith.cc
index 17eded5..7806944 100644
--- a/config/arith.cc
+++ b/config/arith.cc
@@ -518,6 +518,18 @@ int main( int argc, char** argv )
     out << "#define CONFIG_ARITH_H" << '\n';
     out << '\n';
 
+    // workaround to let digits10 be a compile time constant
+    out << "#define DCMTK_SIGNED_CHAR_DIGITS10 " << OFstatic_cast( int, ( CHAR_BIT - 1 ) * .30102999566398119521373889472449 ) << OFendl;
+    out << "#define DCMTK_UNSIGNED_CHAR_DIGITS10 " << OFstatic_cast( int, CHAR_BIT * .30102999566398119521373889472449 ) << OFendl;
+    out << "#define DCMTK_SIGNED_SHORT_DIGITS10 " << OFstatic_cast( int, ( CHAR_BIT * sizeof( signed short ) - 1 ) * .30102999566398119521373889472449 ) << OFendl;
+    out << "#define DCMTK_UNSIGNED_SHORT_DIGITS10 " << OFstatic_cast( int, CHAR_BIT * sizeof( unsigned short ) * .30102999566398119521373889472449 ) << OFendl;
+    out << "#define DCMTK_SIGNED_INT_DIGITS10 " << OFstatic_cast( int, ( CHAR_BIT * sizeof( signed int ) - 1 ) * .30102999566398119521373889472449 ) << OFendl;
+    out << "#define DCMTK_UNSIGNED_INT_DIGITS10 " << OFstatic_cast( int, CHAR_BIT * sizeof( unsigned int ) * .30102999566398119521373889472449 ) << OFendl;
+    out << "#define DCMTK_SIGNED_LONG_DIGITS10 " << OFstatic_cast( int, ( CHAR_BIT * sizeof( signed long ) - 1 ) * .30102999566398119521373889472449 ) << OFendl;
+    out << "#define DCMTK_UNSIGNED_LONG_DIGITS10 " << OFstatic_cast( int, CHAR_BIT * sizeof( unsigned long ) * .30102999566398119521373889472449 ) << OFendl;
+    out << "#define DCMTK_FLOAT_MAX_DIGITS10 " << OFstatic_cast( int, FLT_MANT_DIG * .30102999566398119521373889472449 + 2 ) << OFendl;
+    out << "#define DCMTK_DOUBLE_MAX_DIGITS10 " << OFstatic_cast( int, DBL_MANT_DIG * .30102999566398119521373889472449 + 2 ) << OFendl;
+
     COUT << "--" << OFendl;
 
     COUT << "-- " << STD_NAMESPACE setfill( ' ' ) << STD_NAMESPACE setw(17) << ' '
diff --git a/config/configure b/config/configure
index 158cc87..61c0388 100755
--- a/config/configure
+++ b/config/configure
@@ -624,7 +624,6 @@ ac_includes_default="\
 #endif"
 
 ac_subst_vars='LTLIBOBJS
-DCMTK_ENABLE_BUILTIN_DICTIONARY
 DEBUG
 ICONVLIBS
 SNDFILELIBS
@@ -635,6 +634,9 @@ MATHLIBS
 PNGLIBS
 TIFFLIBS
 OPENSSLLIBS
+CHARCONVLIBS
+CHARCONVINCLUDES
+ICU_CONFIG
 LIBOBJS
 EGREP
 GREP
@@ -738,6 +740,9 @@ with_libsndfileinc
 with_libsndfile
 with_libiconvinc
 with_libiconv
+with_libicuinc
+with_libicu
+enable_charconv
 with_cxx11_stl
 '
       ac_precious_vars='build_alias
@@ -1381,6 +1386,9 @@ Optional Features:
   --enable-builtin-dict   enable loading of built-in dictionary
   --disable-builtin-dict  don't load built-in dictionary (default)
   --disable-rpath         do not hardcode runtime library paths
+  --enable-charconv=TYPE  enable character set conversion support
+                          (libiconv/libicu/stdlibc/auto=default)
+  --disable-charconv      disable character set conversion support
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1410,6 +1418,9 @@ Optional Packages:
   --with-libiconvinc=DIR  location of libiconv includes and libraries
   --with-libiconv         include libiconv support (default: auto)
   --without-libiconv      don't include libiconv support
+  --with-libicuinc=DIR    location of libicu includes and libraries
+  --with-libicu           include libicu support (default: auto)
+  --without-libicu        don't include libicu support
   --with-cxx11-stl        enable C++11 STL
   --without-cxx11-stl     disable C++11 STL (default)
 
@@ -12645,7 +12656,7 @@ if ${ac_cv_check_std_namespace+:} false; then :
 else
   ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
 cat > conftest.$ac_ext <<EOF
-#line 12648 "configure"
+#line 12659 "configure"
 #include "confdefs.h"
 
 #include <iostream>
@@ -13117,7 +13128,7 @@ if ${ac_cv_check_class_template+:} false; then :
 else
   ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
 cat > conftest.$ac_ext <<EOF
-#line 13120 "configure"
+#line 13131 "configure"
 #include "confdefs.h"
 
 template <class T>
@@ -13189,7 +13200,7 @@ if ${ac_cv_check_static_template_method+:} false; then :
 else
   ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
 cat > conftest.$ac_ext <<EOF
-#line 13192 "configure"
+#line 13203 "configure"
 #include "confdefs.h"
 
 void additive(int & i)
@@ -13261,7 +13272,7 @@ if ${ac_cv_check_function_template+:} false; then :
 else
   ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
 cat > conftest.$ac_ext <<EOF
-#line 13264 "configure"
+#line 13275 "configure"
 #include "confdefs.h"
 
 template <class T>
@@ -13619,7 +13630,6 @@ if test "${enable_builtin_dict+set}" = set; then :
   yes)
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-                DCMTK_ENABLE_BUILTIN_DICTIONARY=true
 
 $as_echo "#define ENABLE_BUILTIN_DICTIONARY /**/" >>confdefs.h
 
@@ -14613,6 +14623,7 @@ esac
 fi
 
 
+WITH_LIBICONV=no
 ICONVLIBS=""
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include libiconv support" >&5
 $as_echo_n "checking whether to include libiconv support... " >&6; }
@@ -14621,16 +14632,12 @@ $as_echo_n "checking whether to include libiconv support... " >&6; }
 if test "${with_libiconv+set}" = set; then :
   withval=$with_libiconv;  case "$withval" in
   yes)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define WITH_LIBICONV /**/" >>confdefs.h
+    WITH_LIBICONV=yes
+    $as_echo "#define WITH_LIBICONV 1" >>confdefs.h
 
     ICONVLIBS="-liconv -lcharset"
     ;;
   *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
     ;;
   esac
 else
@@ -14648,21 +14655,18 @@ iconv_t cd = iconv_open("", ""); iconv(cd, NULL, NULL, NULL, NULL); iconv_close(
 }
 _ACEOF
 if ac_fn_cxx_try_link "$LINENO"; then :
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define WITH_LIBICONV /**/" >>confdefs.h
+   WITH_LIBICONV=yes
+      $as_echo "#define WITH_LIBICONV 1" >>confdefs.h
 
       ICONVLIBS="-liconv -lcharset"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
   LIBS="$SAVELIBS"
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $WITH_LIBICONV" >&5
+$as_echo "$WITH_LIBICONV" >&6; }
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the second argument to iconv() is const" >&5
 $as_echo_n "checking whether the second argument to iconv() is const... " >&6; }
@@ -14693,6 +14697,291 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 LIBS="$SAVELIBS"
 
 
+WITH_STDLIBC_ICONV=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C standard library provides iconv functionality" >&5
+$as_echo_n "checking whether the C standard library provides iconv functionality... " >&6; }
+SAVELIBS="$LIBS"
+LIBS=""
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd=iconv_open("","");iconv(cd,0,0,0,0);iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  WITH_STDLIBC_ICONV=yes
+     $as_echo "#define WITH_STDLIBC_ICONV 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $WITH_STDLIBC_ICONV" >&5
+$as_echo "$WITH_STDLIBC_ICONV" >&6; }
+LIBS="$SAVELIBS"
+
+
+
+
+# Check whether --with-libicuinc was given.
+if test "${with_libicuinc+set}" = set; then :
+  withval=$with_libicuinc; case $withval in #(
+  yes|no) :
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-libicuinc called without argument - will use default" >&5
+$as_echo "$as_me: WARNING: --with-libicuinc called without argument - will use default" >&2;}
+       ;; #(
+  *) :
+
+        if test ! -d ${withval}; then
+          as_fn_error $? "called with --with-libicuinc but libicu base directory ${withval} does not exist or is not a directory." "$LINENO" 5
+        fi
+
+        CPPFLAGS="-I${withval}/include $CPPFLAGS"
+        LDFLAGS="-L${withval}/lib $LDFLAGS"
+        if test "x$dcmtk_cv_rpath_works" = "xyes"; then
+          LDFLAGS="-Wl,-rpath,${withval}/lib $LDFLAGS"
+        fi
+       ;;
+esac
+
+fi
+
+
+WITH_LIBICU=no
+
+# Check whether --with-libicu was given.
+if test "${with_libicu+set}" = set; then :
+  withval=$with_libicu;  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include ICU support" >&5
+$as_echo_n "checking whether to include ICU support... " >&6; }
+  case "$withval" in
+  yes)
+    WITH_LIBICU=yes
+    $as_echo "#define WITH_LIBICU 1" >>confdefs.h
+
+    ICULIBS="-licui18n -licuuc -licudata"
+    ;;
+  *)
+    ;;
+  esac
+else
+
+  if test -z "$ICU_CONFIG"; then
+    # Extract the first word of "icu-config", so it can be a program name with args.
+set dummy icu-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ICU_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ICU_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ICU_CONFIG="$ICU_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ICU_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_ICU_CONFIG" && ac_cv_path_ICU_CONFIG="no"
+  ;;
+esac
+fi
+ICU_CONFIG=$ac_cv_path_ICU_CONFIG
+if test -n "$ICU_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICU_CONFIG" >&5
+$as_echo "$ICU_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include ICU support" >&5
+$as_echo_n "checking whether to include ICU support... " >&6; }
+  fi
+  if [ ! "$ICU_CONFIG" = "no" ]; then
+    ICU_VERSION=`$ICU_CONFIG --version`
+        VERSION_CHECK=`expr $ICU_VERSION \>\= 3.4.1`
+        if test VERSION_CHECK=1; then
+            WITH_LIBICU=yes
+            $as_echo "#define WITH_LIBICU 1" >>confdefs.h
+
+            ICUINCLUDES=`$ICU_CONFIG --cppflags`
+            ICULIBS=`$ICU_CONFIG --ldflags`
+        fi
+  fi
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $WITH_LIBICU" >&5
+$as_echo "$WITH_LIBICU" >&6; }
+
+
+
+
+CHARCONVINCLUDES=""
+CHARCONVLIBS=""
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable character set conversion support" >&5
+$as_echo_n "checking whether to enable character set conversion support... " >&6; }
+# Check whether --enable-charconv was given.
+if test "${enable_charconv+set}" = set; then :
+  enableval=$enable_charconv;  case "$enableval" in
+  yes|auto)
+
+if test "$WITH_LIBICONV" = "yes"; then
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=libiconv" >&5
+$as_echo "yes, type=libiconv" >&6; }
+    CHARCONVLIBS="$ICONVLIBS"
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_ICONV"
+
+elif test "$WITH_LIBICU" = "yes"; then
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=libicu" >&5
+$as_echo "yes, type=libicu" >&6; }
+    CHARCONVINCLUDES="$ICUINCLUDES"
+    CHARCONVLIBS="$ICULIBS"
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_ICU"
+
+elif test "$WITH_STDLIBC_ICONV" = "yes"; then
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=stdlibc" >&5
+$as_echo "yes, type=stdlibc" >&6; }
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV"
+
+else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+    ;;
+  libiconv)
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=libiconv" >&5
+$as_echo "yes, type=libiconv" >&6; }
+    CHARCONVLIBS="$ICONVLIBS"
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_ICONV"
+
+    ;;
+  libicu)
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=libicu" >&5
+$as_echo "yes, type=libicu" >&6; }
+    CHARCONVINCLUDES="$ICUINCLUDES"
+    CHARCONVLIBS="$ICULIBS"
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_ICU"
+
+    ;;
+  stdlibc)
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=stdlibc" >&5
+$as_echo "yes, type=stdlibc" >&6; }
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV"
+
+    ;;
+  no)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  *)
+
+if test "$WITH_LIBICONV" = "yes"; then
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=libiconv" >&5
+$as_echo "yes, type=libiconv" >&6; }
+    CHARCONVLIBS="$ICONVLIBS"
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_ICONV"
+
+elif test "$WITH_LIBICU" = "yes"; then
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=libicu" >&5
+$as_echo "yes, type=libicu" >&6; }
+    CHARCONVINCLUDES="$ICUINCLUDES"
+    CHARCONVLIBS="$ICULIBS"
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_ICU"
+
+elif test "$WITH_STDLIBC_ICONV" = "yes"; then
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=stdlibc" >&5
+$as_echo "yes, type=stdlibc" >&6; }
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV"
+
+else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+    ;;
+  esac
+else
+
+if test "$WITH_LIBICONV" = "yes"; then
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=libiconv" >&5
+$as_echo "yes, type=libiconv" >&6; }
+    CHARCONVLIBS="$ICONVLIBS"
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_ICONV"
+
+elif test "$WITH_LIBICU" = "yes"; then
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=libicu" >&5
+$as_echo "yes, type=libicu" >&6; }
+    CHARCONVINCLUDES="$ICUINCLUDES"
+    CHARCONVLIBS="$ICULIBS"
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_ICU"
+
+elif test "$WITH_STDLIBC_ICONV" = "yes"; then
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, type=stdlibc" >&5
+$as_echo "yes, type=stdlibc" >&6; }
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV"
+
+else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+
+
+
+
+
+if [ ! -z "$DCMTK_ENABLE_CHARSET_CONVERSION" ]; then
+
+cat >>confdefs.h <<_ACEOF
+#define DCMTK_ENABLE_CHARSET_CONVERSION $DCMTK_ENABLE_CHARSET_CONVERSION
+_ACEOF
+
+fi
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++11 STL should be used" >&5
 $as_echo_n "checking if the C++11 STL should be used... " >&6; }
 
@@ -15019,7 +15308,6 @@ CXXFLAGS="$DEBUGCXXFLAGS $CXXFLAGS"
 
 
 
-
 ac_config_files="$ac_config_files Makefile.def Makefile"
 
 cat >confcache <<\_ACEOF
diff --git a/config/configure.in b/config/configure.in
index d2c9c16..681ee68 100644
--- a/config/configure.in
+++ b/config/configure.in
@@ -953,10 +953,6 @@ AC_ARG_ENABLE(builtin-dict,
 [ case "$enableval" in
   yes)
     AC_MSG_RESULT(yes)
-    dnl Remember for later evaluation when building dcmdata libary, i.e. for
-    dnl including the populated dictionary object and not the
-    dnl empty dummy dictionary in dcmdata
-    DCMTK_ENABLE_BUILTIN_DICTIONARY=true
     AC_DEFINE(ENABLE_BUILTIN_DICTIONARY, , [Define if we are compiling with built-in (compiled-in) dictionary enabled.])
     ;;
   *)
@@ -1247,7 +1243,8 @@ dnl Check for libiconv support
 dnl -------------------------------------------------------
 
 AC_MY_LIB_PATH([libiconv])
-
+AH_TEMPLATE(WITH_LIBICONV, [Define if we are compiling with libiconv support.])
+WITH_LIBICONV=no
 ICONVLIBS=""
 AC_MSG_CHECKING(whether to include libiconv support)
 AC_ARG_WITH(libiconv,
@@ -1255,22 +1252,21 @@ AC_ARG_WITH(libiconv,
 AS_HELP_STRING([--without-libiconv], [don't include libiconv support])],
 [ case "$withval" in
   yes)
-    AC_MSG_RESULT(yes)
-    AC_DEFINE(WITH_LIBICONV, , [Define if we are compiling with libiconv support.])
+    WITH_LIBICONV=yes
+    AC_DEFINE(WITH_LIBICONV)
     ICONVLIBS="-liconv -lcharset"
     ;;
   *)
-    AC_MSG_RESULT(no)
     ;;
   esac ],
 [ SAVELIBS="$LIBS"
   LIBS="$LIBS -liconv -lcharset"
   AC_TRY_LINK([#include <iconv.h>], [iconv_t cd = iconv_open("", ""); iconv(cd, NULL, NULL, NULL, NULL); iconv_close(cd);],
-    [ AC_MSG_RESULT(yes)
-      AC_DEFINE(WITH_LIBICONV, , [Define if we are compiling with libiconv support.])
-      ICONVLIBS="-liconv -lcharset" ],
-    [AC_MSG_RESULT(no)])
+    [ WITH_LIBICONV=yes
+      AC_DEFINE(WITH_LIBICONV)
+      ICONVLIBS="-liconv -lcharset" ])
   LIBS="$SAVELIBS"] )
+AC_MSG_RESULT($WITH_LIBICONV)
 
 AC_MSG_CHECKING(whether the second argument to iconv() is const)
 SAVELIBS="$LIBS"
@@ -1282,6 +1278,142 @@ AC_TRY_COMPILE([#include <iconv.h>], [iconv_t cd = iconv_open("", ""); const cha
 LIBS="$SAVELIBS"
 
 dnl -------------------------------------------------------
+dnl Check for iconv inside C standard library
+dnl -------------------------------------------------------
+
+AH_TEMPLATE([WITH_STDLIBC_ICONV], [Define if the C standard library has iconv builtin.])dnl
+WITH_STDLIBC_ICONV=no
+AC_MSG_CHECKING([whether the C standard library provides iconv functionality])
+SAVELIBS="$LIBS"
+LIBS=""
+AC_TRY_LINK([#include <iconv.h>], [iconv_t cd=iconv_open("","");iconv(cd,0,0,0,0);iconv_close(cd);],
+    [WITH_STDLIBC_ICONV=yes
+     AC_DEFINE(WITH_STDLIBC_ICONV)])
+AC_MSG_RESULT($WITH_STDLIBC_ICONV)
+LIBS="$SAVELIBS"
+
+dnl -------------------------------------------------------
+dnl Check for libicu support
+dnl -------------------------------------------------------
+
+AC_MY_LIB_PATH([libicu])
+AH_TEMPLATE([WITH_LIBICU], [Define if we are compiling with ICU support.])
+WITH_LIBICU=no
+AC_ARG_WITH(libicu,
+[AS_HELP_STRING([--with-libicu], [include libicu support (default: auto)])
+AS_HELP_STRING([--without-libicu], [don't include libicu support])],
+[ AC_MSG_CHECKING(whether to include ICU support)
+  case "$withval" in
+  yes)
+    WITH_LIBICU=yes
+    AC_DEFINE(WITH_LIBICU)
+    ICULIBS="-licui18n -licuuc -licudata"
+    ;;
+  *)
+    ;;
+  esac ],
+[
+  if test -z "$ICU_CONFIG"; then
+    AC_PATH_PROG(ICU_CONFIG, icu-config, no)
+    AC_MSG_CHECKING(whether to include ICU support)
+  fi
+  if [[ ! "$ICU_CONFIG" = "no" ]]; then
+    ICU_VERSION=`$ICU_CONFIG --version`
+        VERSION_CHECK=`expr $ICU_VERSION \>\= 3.4.1`
+        if test VERSION_CHECK=1; then
+            WITH_LIBICU=yes
+            AC_DEFINE(WITH_LIBICU)
+            ICUINCLUDES=`$ICU_CONFIG --cppflags`
+            ICULIBS=`$ICU_CONFIG --ldflags`
+        fi
+  fi
+])
+AC_MSG_RESULT($WITH_LIBICU)
+
+dnl -------------------------------------------------------
+dnl character set conversion support
+dnl -------------------------------------------------------
+
+AH_VERBATIM([DCMTK_CHARSET_CONVERSION_CONSTANTS], [/* character set conversion constants. */
+#define DCMTK_CHARSET_CONVERSION_ICU 1
+#define DCMTK_CHARSET_CONVERSION_ICONV 2
+#define DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV 3])
+
+CHARCONVINCLUDES=""
+CHARCONVLIBS=""
+
+AC_DEFUN([AC_CHOOSE_CHARSET_LIBICONV],
+[
+    AC_MSG_RESULT([yes, type=libiconv])
+    CHARCONVLIBS="$ICONVLIBS"
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_ICONV"
+])
+
+AC_DEFUN([AC_CHOOSE_CHARSET_LIBICU],
+[
+    AC_MSG_RESULT([yes, type=libicu])
+    CHARCONVINCLUDES="$ICUINCLUDES"
+    CHARCONVLIBS="$ICULIBS"
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_ICU"
+])
+
+AC_DEFUN([AC_CHOOSE_CHARSET_STDLIBC_ICONV],
+[
+    AC_MSG_RESULT([yes, type=stdlibc])
+    DCMTK_ENABLE_CHARSET_CONVERSION="DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV"
+])
+
+AC_DEFUN([AC_CHOOSE_CHARSET_IMPL],
+[
+if test "$WITH_LIBICONV" = "yes"; then
+    AC_CHOOSE_CHARSET_LIBICONV()
+elif test "$WITH_LIBICU" = "yes"; then
+    AC_CHOOSE_CHARSET_LIBICU()
+elif test "$WITH_STDLIBC_ICONV" = "yes"; then
+    AC_CHOOSE_CHARSET_STDLIBC_ICONV()
+else
+    AC_MSG_RESULT(no)
+fi
+])
+
+AC_MSG_CHECKING(whether to enable character set conversion support)
+AC_ARG_ENABLE(charconv,
+[  --enable-charconv=TYPE  enable character set conversion support
+                          (libiconv/libicu/stdlibc/auto=default)
+  --disable-charconv      disable character set conversion support],
+[ case "$enableval" in
+  yes|auto)
+    AC_CHOOSE_CHARSET_IMPL()
+    ;;
+  libiconv)
+    AC_CHOOSE_CHARSET_LIBICONV()
+    ;;
+  libicu)
+    AC_CHOOSE_CHARSET_LIBICU()
+    ;;
+  stdlibc)
+    AC_CHOOSE_CHARSET_STDLIBC_ICONV()
+    ;;
+  no)
+    AC_MSG_RESULT(no)
+    ;;
+  *)
+    AC_CHOOSE_CHARSET_IMPL()
+    ;;
+  esac ],
+  [AC_CHOOSE_CHARSET_IMPL()]
+)
+
+AC_SUBST(CHARCONVINCLUDES)
+AC_SUBST(CHARCONVLIBS)
+
+if [[ ! -z "$DCMTK_ENABLE_CHARSET_CONVERSION" ]]; then
+  AC_DEFINE_UNQUOTED(DCMTK_ENABLE_CHARSET_CONVERSION,
+    [$DCMTK_ENABLE_CHARSET_CONVERSION],
+    [Define to select character set conversion implementation.])
+fi
+
+dnl -------------------------------------------------------
 dnl C++11 support
 dnl -------------------------------------------------------
 
@@ -1355,7 +1487,6 @@ AC_SUBST(TCPWRAPPERLIBS)
 AC_SUBST(SNDFILELIBS)
 AC_SUBST(ICONVLIBS)
 AC_SUBST(DEBUG)
-AC_SUBST(DCMTK_ENABLE_BUILTIN_DICTIONARY)
 
 AC_OUTPUT(Makefile.def Makefile)
 
diff --git a/config/docs/envvars.txt b/config/docs/envvars.txt
index 2b1d0a5..5486b0a 100644
--- a/config/docs/envvars.txt
+++ b/config/docs/envvars.txt
@@ -33,21 +33,20 @@ DCMDICTPATH
 
 TCP_BUFFER_LENGTH
   Affected: dcmnet
-  Explanation: By default, DCMTK uses a TCP send and receive buffer
-    length of 64K. If the environment variable TCP_BUFFER_LENGTH is set,
-    it specifies an override for the TCP buffer length. The value is
-    specified in bytes, not in Kbytes.
+  Explanation: By default, DCMTK does not modify the TCP send and receive
+    buffer length, i.e. the operating system is responsible for selecting
+    appropriate values. If the environment variable TCP_BUFFER_LENGTH is
+    set, it specifies an override for the TCP buffer length. The value is
+    specified in bytes, not in Kbytes. If set to 0, a buffer length of 64K,
+    which was the default value for previous versions of the DCMTK, is used.
 
 TCP_NODELAY
   Affected: dcmnet
-  Explanation: If this environment variable contains a non-zero number,
-    the Nagle algorithm will not be disabled for TCP transport
-    connections. Also see documentation for macro
-    DONT_DISABLE_NAGLE_ALGORITHM in config/docs/macros.txt or
-    /usr/local/share/doc/dcmtk/macros.txt.
-
-TMPDIR
-  Affected: dcmnet
-  Explanation: Affects the implementation of the tempnam() emulation on
-    platforms where tempnam() is not defined. See tempnam(3S) man page
-    for a description.
+  Explanation: If this environment variable is set and contains a non-zero
+    number (e.g. "1"), the Nagle algorithm will be disabled for TCP transport
+    connections, which might result in better network performance on some
+    systems/environments, especially when many small network packets are to
+    be sent. If it is set and contains the number "0", the Nagle algorithm
+    will not be disabled. If the environment variable TCP_NODELAY is not set,
+    the default behavior applies (see compiler macro DISABLE_NAGLE_ALGORITHM
+    in config/docs/macros.txt or /usr/local/share/doc/dcmtk/macros.txt).
diff --git a/config/docs/macros.txt b/config/docs/macros.txt
index bad84b1..0133ee3 100644
--- a/config/docs/macros.txt
+++ b/config/docs/macros.txt
@@ -65,7 +65,7 @@ DCMTK_USE_CXX11_STL
 DICOMDIR_WITHOUT_BACKUP
   Affected: dcmdata
   Type of modification: Disables feature
-  Explanation: By default DCMTK creates a backup of an existing DICOMDIR
+  Explanation: By default, DCMTK creates a backup of an existing DICOMDIR
     (using the name DICOMDIR.$$$) when a DcmDicomDir object is written
     to file.  The creation of the backup can be disabled with this macro.
 
@@ -75,6 +75,19 @@ DISABLE_COMPRESSION_EXTENSION
   Explanation: Disables the support of compression (various transfer
     syntaxes) in dcmqrdb, a feature which is still experimental.
 
+DISABLE_NAGLE_ALGORITHM
+  Affected: dcmnet
+  Type of modification: Disables feature
+  Explanation: By default, DCMTK does not disable the so-called Nagle
+    algorithm, which allows for improving the efficiency of TCP/IP networks
+    by reducing the number of packets that need to be sent over the network.
+    When compiled with this macro, the Nagle algorithm is disabled for each
+    DICOM transport connection. This was the default in earlier versions of
+    the DCMTK but does not seem to be appropriate anymore for most modern
+    operating systems. The default behavior can be changed by setting the
+    environment variable TCP_NODELAY accordingly (see config/docs/envvars.txt
+    or /usr/local/share/doc/dcmtk/envvars.txt).
+
 DISABLE_OFSTD_ATOF
   Affected: all modules
   Type of modification: Disables feature
@@ -108,34 +121,16 @@ DISABLE_PORT_PERMISSION_CHECK
     Therefore, this check can be disabled using this flag.
 
 DISABLE_RECV_TIMEOUT
-  Affected: dcmnet
-  Type of modification: Disables feature
-  Explanation: By default, DCMTK specifies a timeout of 60 seconds for
-    the recv() function.  This is especially useful in cases where the
-    receiver (e.g. storescp) looses the connection to the sender because
-    the network cable is pulled (e.g. for a mobile device).  This flag
-    disables the call to the setsockopt() function so that no timeout is
-    specified.
+  This macro is not supported anymore since the timeout for the recv() function
+  is now configurable at runtime.  See global variable dcmSocketReceiveTimeout.
 
 DISABLE_SEND_TIMEOUT
-  Affected: dcmnet
-  Type of modification: Disables feature
-  Explanation: By default, DCMTK specifies a timeout of 60 seconds for
-    the send() function.  This is especially useful in cases where the
-    sender (e.g. storescu) looses the connection to the receiver because
-    the network cable is pulled (e.g. for a mobile device).  This flag
-    disables the call to the setsockopt() function so that no timeout is
-    specified.
+  This macro is not supported anymore since the timeout for the send() function
+  is now configurable at runtime.  See global variable dcmSocketSendTimeout.
 
 DONT_DISABLE_NAGLE_ALGORITHM
-  Affected: dcmnet
-  Type of modification: Disables feature
-  Explanation: By default, DCMTK disables the so-called Nagle algorithm
-    for each DICOM transport connection.  This provides a 2-4 times
-    performance improvement (WinNT4/SP4, 100Mbit/s Ethernet).  Effects on
-    other environments are unknown.  When compiled with this macro, the
-    code affecting the Nagle algorithm is disabled.  See documentation
-    for environment variable TCP_NODELAY in config/docs/envvars.txt.
+  This macro is not supported anymore since the Nagle algorithm is no longer
+  disabled by default.  See DISABLE_NAGLE_ALGORITHM for details.
 
 DONT_LOAD_EXTERNAL_DICTIONARIES
   Affected: dcmdata
@@ -263,15 +258,6 @@ NO_PATIENTSTUDYONLY_SUPPORT
   Explanation: Disables support for the Patient/Study Only Query/Retrieve
     Model in dcmqrdb.
 
-NO_WINDOWS95_ADDRESS_TRANSLATION_WORKAROUND
-  Affected: dcmnet
-  Type of modification: Disables feature
-  Explanation: Under Windows 95 gethostbyname() will not accept an IP
-    address e.g. "134.106.1.1".  This appears to work without problems
-    with other Windows versions and several Unix variants.  As a
-    workaround, DCMTK explicitly handles the IP address case.  The
-    workaround can be disabled with this macro.
-
 OFCONDITION_IMPLICIT_BOOL_CONVERSION
   Affected: ofstd
   Type of modification: Activates experimental or rarely used feature
@@ -366,13 +352,6 @@ STARVIEW
   Explanation: Enables support for old StarView 2 GUI class library from
     Star Division.
 
-STRICT_COMPARE
-  Affected: dcmqrdb
-  Type of modification: Activates experimental or rarely used feature
-  Explanation: By default, dcmqrdb ignores illegal leading and trailing
-    space characters when comparing UIDs.  This behavior can be modified
-    by defining this macro.
-
 SUPPRESS_CREATE_STAMP
   Affected: dcmdata
   Type of modification: Activates experimental or rarely used feature
diff --git a/config/include/dcmtk/config/osconfig.h.in b/config/include/dcmtk/config/osconfig.h.in
index bc3aeb6..269b04a 100644
--- a/config/include/dcmtk/config/osconfig.h.in
+++ b/config/include/dcmtk/config/osconfig.h.in
@@ -43,6 +43,14 @@
 /* Define if >> is unsigned on the C compiler */
 #undef C_RIGHTSHIFT_UNSIGNED
 
+/* character set conversion constants. */
+#define DCMTK_CHARSET_CONVERSION_ICU 1
+#define DCMTK_CHARSET_CONVERSION_ICONV 2
+#define DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV 3
+
+/* Define to select character set conversion implementation. */
+#undef DCMTK_ENABLE_CHARSET_CONVERSION
+
 /* Define the DCMTK default path. */
 #undef DCMTK_PREFIX
 
@@ -1034,6 +1042,9 @@ typedef unsigned short ushort;
 /* Define if we are compiling with libiconv support. */
 #undef WITH_LIBICONV
 
+/* Define if we are compiling with ICU support. */
+#undef WITH_LIBICU
+
 /* Define if we are compiling with libpng support. */
 #undef WITH_LIBPNG
 
@@ -1049,6 +1060,9 @@ typedef unsigned short ushort;
 /* Define if we are compiling with libsndfile support. */
 #undef WITH_SNDFILE
 
+/* Define if the C standard library has iconv builtin. */
+#undef WITH_STDLIBC_ICONV
+
 /* Define if we are compiling with libwrap (TCP wrapper) support. */
 #undef WITH_TCPWRAPPER
 
diff --git a/config/modules b/config/modules
index 698a4b1..1676820 100644
--- a/config/modules
+++ b/config/modules
@@ -1 +1 @@
-ofstd oflog dcmdata dcmiod dcmfg dcmseg dcmimgle dcmimage dcmjpeg dcmjpls dcmtls dcmnet dcmsr dcmsign dcmwlm dcmqrdb dcmpstat dcmrt dcmtract
+ofstd oflog dcmdata dcmiod dcmfg dcmseg dcmimgle dcmimage dcmjpeg dcmjpls dcmtls dcmnet dcmsr dcmsign dcmwlm dcmqrdb dcmpstat dcmrt dcmtract dcmpmap
diff --git a/config/rootconf b/config/rootconf
index 581920a..62343bc 100755
--- a/config/rootconf
+++ b/config/rootconf
@@ -84,7 +84,7 @@ check-nosilent-exhaustive: $makecheckexhaustive
 
 dcmtk-install-doc:
 	\$(configdir)/mkinstalldirs \$(DESTDIR)\$(docdir)
-	for file in ANNOUNCE CHANGES COPYRIGHT CREDITS FAQ HISTORY VERSION; do \\
+	for file in ANNOUNCE CHANGES COPYRIGHT CREDITS FAQ HISTORY VERSION docs/CHANGES.???; do \\
 		\$(INSTALL_DATA) \$\$file \$(DESTDIR)\$(docdir) ;\\
 	done
 
diff --git a/dcmdata/apps/CMakeLists.txt b/dcmdata/apps/CMakeLists.txt
index 5394b1e..2f7ba60 100644
--- a/dcmdata/apps/CMakeLists.txt
+++ b/dcmdata/apps/CMakeLists.txt
@@ -2,13 +2,13 @@
 INCLUDE_DIRECTORIES(${LIBXML_INCDIR})
 
 # declare executables
-FOREACH(PROGRAM dcm2xml dcmconv dcmcrle dcmdrle dcmdump dcmftest dcmgpdir dump2dcm xml2dcm pdf2dcm dcm2pdf img2dcm)
+FOREACH(PROGRAM dcm2xml dcmconv dcmcrle dcmdrle dcmdump dcmftest dcmgpdir dump2dcm xml2dcm pdf2dcm dcm2pdf img2dcm dcm2json)
   DCMTK_ADD_EXECUTABLE(${PROGRAM} ${PROGRAM})
 ENDFOREACH(PROGRAM)
 DCMTK_ADD_EXECUTABLE(dcmodify dcmodify mdfconen mdfdsman)
 
 # make sure executables are linked to the corresponding libraries
-FOREACH(PROGRAM dcm2xml dcmconv dcmcrle dcmdrle dcmdump dcmgpdir dcmodify dump2dcm xml2dcm pdf2dcm dcm2pdf img2dcm)
+FOREACH(PROGRAM dcm2xml dcmconv dcmcrle dcmdrle dcmdump dcmgpdir dcmodify dump2dcm xml2dcm pdf2dcm dcm2pdf img2dcm dcm2json)
   DCMTK_TARGET_LINK_MODULES(${PROGRAM} dcmdata oflog ofstd)
 ENDFOREACH(PROGRAM)
 
diff --git a/dcmdata/apps/Makefile.dep b/dcmdata/apps/Makefile.dep
index 6f89b65..03bd851 100644
--- a/dcmdata/apps/Makefile.dep
+++ b/dcmdata/apps/Makefile.dep
@@ -1,3 +1,87 @@
+dcm2json.o: dcm2json.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcswap.h \
+ ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
+ ../include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../include/dcmtk/dcmdata/dcistrma.h ../include/dcmtk/dcmdata/dcostrma.h \
+ ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dctagkey.h \
+ ../include/dcmtk/dcmdata/dctag.h ../include/dcmtk/dcmdata/dcdicent.h \
+ ../include/dcmtk/dcmdata/dchashdi.h ../include/dcmtk/dcmdata/dcdict.h \
+ ../include/dcmtk/dcmdata/dcdeftag.h ../include/dcmtk/dcmdata/dcobject.h \
+ ../include/dcmtk/dcmdata/dcstack.h ../include/dcmtk/dcmdata/dcelem.h \
+ ../include/dcmtk/dcmdata/dcitem.h ../include/dcmtk/dcmdata/dclist.h \
+ ../include/dcmtk/dcmdata/dcpcache.h ../include/dcmtk/dcmdata/dcmetinf.h \
+ ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcsequen.h \
+ ../include/dcmtk/dcmdata/dcfilefo.h ../include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../include/dcmtk/dcmdata/dcdirrec.h ../include/dcmtk/dcmdata/dcvrulup.h \
+ ../include/dcmtk/dcmdata/dcvrul.h ../include/dcmtk/dcmdata/dcpixseq.h \
+ ../include/dcmtk/dcmdata/dcofsetl.h ../include/dcmtk/dcmdata/dcbytstr.h \
+ ../include/dcmtk/dcmdata/dcvrae.h ../include/dcmtk/dcmdata/dcvras.h \
+ ../include/dcmtk/dcmdata/dcvrcs.h ../include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../include/dcmtk/dcmdata/dcvrds.h ../include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../include/dcmtk/dcmdata/dcvris.h ../include/dcmtk/dcmdata/dcvrtm.h \
+ ../include/dcmtk/dcmdata/dcvrui.h ../include/dcmtk/dcmdata/dcvrur.h \
+ ../include/dcmtk/dcmdata/dcchrstr.h ../include/dcmtk/dcmdata/dcvrlo.h \
+ ../include/dcmtk/dcmdata/dcvrlt.h ../include/dcmtk/dcmdata/dcvrpn.h \
+ ../include/dcmtk/dcmdata/dcvrsh.h ../include/dcmtk/dcmdata/dcvrst.h \
+ ../include/dcmtk/dcmdata/dcvruc.h ../include/dcmtk/dcmdata/dcvrut.h \
+ ../include/dcmtk/dcmdata/dcvrobow.h ../include/dcmtk/dcmdata/dcpixel.h \
+ ../include/dcmtk/dcmdata/dcvrpobw.h ../include/dcmtk/dcmdata/dcovlay.h \
+ ../include/dcmtk/dcmdata/dcvrat.h ../include/dcmtk/dcmdata/dcvrss.h \
+ ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
+ ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
+ ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcjson.h \
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h
 dcm2pdf.o: dcm2pdf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -161,7 +245,8 @@ dcm2xml.o: dcm2xml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
  ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
- ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h
 dcmconv.o: dcmconv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -244,7 +329,8 @@ dcmconv.o: dcmconv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
  ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmdata/dcostrmz.h ../include/dcmtk/dcmdata/dcistrmz.h \
- ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h
 dcmcrle.o: dcmcrle.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -491,7 +577,8 @@ dcmdump.o: dcmdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
  ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmdata/dcistrmz.h \
- ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h
 dcmftest.o: dcmftest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/dcmdata/dcmetinf.h ../include/dcmtk/dcmdata/dcitem.h \
diff --git a/dcmdata/apps/Makefile.in b/dcmdata/apps/Makefile.in
index 90bafb2..c68bb0c 100644
--- a/dcmdata/apps/Makefile.in
+++ b/dcmdata/apps/Makefile.in
@@ -18,15 +18,15 @@ oflogdir = $(top_srcdir)/../oflog
 LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include
 LIBDIRS = -L$(top_srcdir)/libi2d -L$(top_srcdir)/libsrc -L$(ofstddir)/libsrc \
 	-L$(oflogdir)/libsrc
-LOCALLIBS = -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(ICONVLIBS)
+LOCALLIBS = -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(CHARCONVLIBS)
 LIBI2D = -li2d
 
 objs = dcmftest.o dcmconv.o dcmdump.o dump2dcm.o dcmgpdir.o dcm2xml.o \
 	xml2dcm.o dcmcrle.o dcmdrle.o dcmodify.o mdfdsman.o mdfconen.o \
-	pdf2dcm.o dcm2pdf.o img2dcm.o
+	pdf2dcm.o dcm2pdf.o img2dcm.o dcm2json.o
 
 progs = dcmftest dcmconv dcmdump dump2dcm dcmgpdir dcm2xml xml2dcm dcmcrle \
-	dcmdrle dcmodify pdf2dcm dcm2pdf img2dcm
+	dcmdrle dcmodify pdf2dcm dcm2pdf img2dcm dcm2json
 
 
 all: $(progs)
@@ -71,6 +71,8 @@ dcm2pdf: dcm2pdf.o
 img2dcm: img2dcm.o
 	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $@.o $(LIBI2D) $(LOCALLIBS) $(MATHLIBS) $(LIBS)
 
+dcm2json: dcm2json.o
+	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $@.o $(LOCALLIBS) $(MATHLIBS) $(LIBS)
 
 install: install-bin
 
diff --git a/dcmdata/apps/dcm2json.cc b/dcmdata/apps/dcm2json.cc
new file mode 100644
index 0000000..3a6c8c5
--- /dev/null
+++ b/dcmdata/apps/dcm2json.cc
@@ -0,0 +1,278 @@
+/*
+*
+*  Copyright (C) 2016-2017, OFFIS e.V.
+*  All rights reserved.  See COPYRIGHT file for details.
+*
+*  This software and supporting documentation were developed by
+*
+*    OFFIS e.V.
+*    R&D Division Health
+*    Escherweg 2
+*    D-26121 Oldenburg, Germany
+*
+*
+*  Module:  dcmdata
+*
+*  Author:  Sebastian Grallert
+*
+*  Purpose: Convert the contents of a DICOM file to JSON format
+*
+*/
+
+#include "dcmtk/config/osconfig.h"      /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmdata/dctk.h"
+#include "dcmtk/dcmdata/cmdlnarg.h"
+
+#include "dcmtk/dcmdata/dcjson.h"
+#include "dcmtk/ofstd/ofstream.h"
+#include "dcmtk/ofstd/ofconapp.h"
+
+#ifdef WITH_ZLIB
+#include <zlib.h>                       /* for zlibVersion() */
+#endif
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+#include "dcmtk/ofstd/ofchrenc.h"       /* for OFCharacterEncoding */
+#endif
+
+#define OFFIS_CONSOLE_APPLICATION "dcm2json"
+#define OFFIS_CONSOLE_DESCRIPTION "Convert DICOM file and data set to JSON"
+
+static OFLogger dcm2jsonLogger = OFLog::getLogger("dcmtk.apps." OFFIS_CONSOLE_APPLICATION);
+
+static char rcsid[] = "$dcmtk: " OFFIS_CONSOLE_APPLICATION " v"
+OFFIS_DCMTK_VERSION " " OFFIS_DCMTK_RELEASEDATE " $";
+
+// ********************************************
+
+/* Function to call all writeJson() functions in DCMTK */
+static OFCondition writeFile(STD_NAMESPACE ostream &out,
+    const char *ifname,
+    DcmFileFormat *dfile,
+    const E_FileReadMode readMode,
+    const OFBool format,
+    const OFBool printMetaheaderInformation,
+    const OFBool checkAllStrings)
+{
+    OFCondition result = EC_IllegalParameter;
+    if ((ifname != NULL) && (dfile != NULL))
+    {
+        DcmDataset *dset = dfile->getDataset();
+
+        /* write JSON document content */
+
+        if (readMode == ERM_dataset)
+        {
+            result = format
+            ?
+                dset->writeJson(out, DcmJsonFormatPretty(printMetaheaderInformation))
+            :
+                dset->writeJson(out, DcmJsonFormatCompact(printMetaheaderInformation))
+            ;
+        }
+        else
+        {
+            result = format
+            ?
+                dfile->writeJson(out, DcmJsonFormatPretty(printMetaheaderInformation))
+            :
+                dfile->writeJson(out, DcmJsonFormatCompact(printMetaheaderInformation))
+            ;
+        }
+    }
+    return result;
+}
+
+#define SHORTCOL 3
+#define LONGCOL 20
+
+int main(int argc, char *argv[])
+{
+    OFBool opt_checkAllStrings = OFFalse;
+    OFBool opt_format = OFTrue;
+    OFBool opt_addMetaInformation = OFFalse;
+
+    E_FileReadMode opt_readMode = ERM_autoDetect;
+    E_TransferSyntax opt_ixfer = EXS_Unknown;
+    OFString optStr;
+
+    OFConsoleApplication app(OFFIS_CONSOLE_APPLICATION, OFFIS_CONSOLE_DESCRIPTION, rcsid);
+    OFCommandLine cmd;
+    cmd.setOptionColumns(LONGCOL, SHORTCOL);
+    cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
+
+    cmd.addParam("dcmfile-in",   "DICOM input filename to be converted", OFCmdParam::PM_Mandatory);
+    cmd.addParam("jsonfile-out", "JSON output filename (default: stdout)", OFCmdParam::PM_Optional);
+
+    cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
+      cmd.addOption("--help",                 "-h",  "print this help text and exit", OFCommandLine::AF_Exclusive);
+      cmd.addOption("--version",                     "print version information and exit", OFCommandLine::AF_Exclusive);
+      OFLog::addOptions(cmd);
+
+    cmd.addGroup("input options:");
+      cmd.addSubGroup("input file format:");
+        cmd.addOption("--read-file",          "+f",  "read file format or data set (default)");
+        cmd.addOption("--read-file-only",     "+fo", "read file format only");
+        cmd.addOption("--read-dataset",       "-f",  "read data set without file meta information");
+      cmd.addSubGroup("input transfer syntax:");
+        cmd.addOption("--read-xfer-auto",     "-t=", "use TS recognition (default)");
+        cmd.addOption("--read-xfer-detect",   "-td", "ignore TS specified in the file meta header");
+        cmd.addOption("--read-xfer-little",   "-te", "read with explicit VR little endian TS");
+        cmd.addOption("--read-xfer-big",      "-tb", "read with explicit VR big endian TS");
+        cmd.addOption("--read-xfer-implicit", "-ti", "read with implicit VR little endian TS");
+
+    cmd.addGroup("output options:");
+      cmd.addSubGroup("output format:");
+        cmd.addOption("--formatted-code",     "+fc", "output file with human readable formatting (def.)");
+        cmd.addOption("--compact-code",       "-fc", "output without formatting (single line of code)");
+        cmd.addOption("--write-meta",         "+m",  "write data set with meta information");
+
+    /* evaluate command line */
+    prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION);
+    if (app.parseCommandLine(cmd, argc, argv))
+    {
+        /* check exclusive options first */
+        if (cmd.hasExclusiveOption())
+        {
+            if (cmd.findOption("--version"))
+            {
+                app.printHeader(OFTrue /*print host identifier*/);
+                COUT << OFendl << "External libraries used:";
+#if !defined(WITH_ZLIB) && !defined(DCMTK_ENABLE_CHARSET_CONVERSION)
+                COUT << " none" << OFendl;
+#else
+                COUT << OFendl;
+#endif
+#ifdef WITH_ZLIB
+                COUT << "- ZLIB, Version " << zlibVersion() << OFendl;
+#endif
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+                COUT << "- " << OFCharacterEncoding::getLibraryVersionString() << OFendl;
+#endif
+                return 0;
+            }
+        }
+
+        /* general options */
+        OFLog::configureFromCommandLine(cmd, app);
+
+        /* input options */
+        cmd.beginOptionBlock();
+        if (cmd.findOption("--read-file")) opt_readMode = ERM_autoDetect;
+        if (cmd.findOption("--read-file-only")) opt_readMode = ERM_fileOnly;
+        if (cmd.findOption("--read-dataset")) opt_readMode = ERM_dataset;
+        cmd.endOptionBlock();
+
+        cmd.beginOptionBlock();
+        if (cmd.findOption("--read-xfer-auto"))
+            opt_ixfer = EXS_Unknown;
+        if (cmd.findOption("--read-xfer-detect"))
+            dcmAutoDetectDatasetXfer.set(OFTrue);
+        if (cmd.findOption("--read-xfer-little"))
+        {
+            app.checkDependence("--read-xfer-little", "--read-dataset", opt_readMode == ERM_dataset);
+            opt_ixfer = EXS_LittleEndianExplicit;
+        }
+        if (cmd.findOption("--read-xfer-big"))
+        {
+            app.checkDependence("--read-xfer-big", "--read-dataset", opt_readMode == ERM_dataset);
+            opt_ixfer = EXS_BigEndianExplicit;
+        }
+        if (cmd.findOption("--read-xfer-implicit"))
+        {
+            app.checkDependence("--read-xfer-implicit", "--read-dataset", opt_readMode == ERM_dataset);
+            opt_ixfer = EXS_LittleEndianImplicit;
+        }
+        cmd.endOptionBlock();
+
+        /* format options */
+        cmd.beginOptionBlock();
+        if (cmd.findOption("--formatted-code"))
+            opt_format = OFTrue;
+        if (cmd.findOption("--compact-code"))
+            opt_format = OFFalse;
+        cmd.endOptionBlock();
+
+        /* meta option */
+        if (cmd.findOption("--write-meta"))
+            opt_addMetaInformation = OFTrue;
+    }
+
+    /* print resource identifier */
+    OFLOG_DEBUG(dcm2jsonLogger, rcsid << OFendl);
+
+    /* make sure data dictionary is loaded */
+    if (!dcmDataDict.isDictionaryLoaded())
+    {
+        OFLOG_WARN(dcm2jsonLogger, "no data dictionary loaded, check environment variable: "
+            << DCM_DICT_ENVIRONMENT_VARIABLE);
+    }
+
+    int result = 0;
+    /* first parameter is treated as the input filename */
+    const char *ifname = NULL;
+    cmd.getParam(1, ifname);
+    /* check input file */
+    if ((ifname != NULL) && (strlen(ifname) > 0))
+    {
+        /* read DICOM file or data set */
+        DcmFileFormat dfile;
+        OFCondition status = dfile.loadFile(ifname, opt_ixfer, EGL_noChange, DCM_MaxReadLength, opt_readMode);
+        if (status.good())
+        {
+            DcmDataset *dset = dfile.getDataset();
+            OFString csetString;
+            if (dset->findAndGetOFStringArray(DCM_SpecificCharacterSet, csetString).good())
+            {
+                if (csetString.compare("ISO_IR 192") != 0 && csetString.compare("ISO_IR 6") != 0)
+                {
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+                    /* convert all DICOM strings to UTF-8 */
+                    OFLOG_INFO(dcm2jsonLogger, "converting all element values that are affected by SpecificCharacterSet (0008,0005) to UTF-8");
+                    status = dset->convertToUTF8();
+                    if (status.bad())
+                    {
+                        OFLOG_FATAL(dcm2jsonLogger, status.text() << ": converting file to UTF-8: " << ifname);
+                        result = 4;
+                    }
+#else
+                    OFLOG_FATAL(dcm2jsonLogger, "character set conversion not available");
+                    return 4;
+#endif
+                }
+            }
+            if (result == 0)
+            {
+                /* if second parameter is present, it is treated as the output filename ("stdout" otherwise) */
+                if (cmd.getParamCount() == 2)
+                {
+                    const char *ofname = NULL;
+                    cmd.getParam(2, ofname);
+                    STD_NAMESPACE ofstream stream(ofname);
+                    if (stream.good())
+                    {
+                        /* write content in JSON format to file */
+                        if (writeFile(stream, ifname, &dfile, opt_readMode, opt_format,
+                            opt_addMetaInformation, opt_checkAllStrings).bad())
+                            result = 2;
+                    }
+                    else
+                        result = 1;
+                }
+                else
+                {
+                    /* write content in JSON format to standard output */
+                    if (writeFile(COUT, ifname, &dfile, opt_readMode, opt_format,
+                        opt_addMetaInformation, opt_checkAllStrings).bad())
+                        result = 3;
+                }
+            }
+        }
+        else
+            OFLOG_ERROR(dcm2jsonLogger, OFFIS_CONSOLE_APPLICATION << ": error (" << status.text() << ") reading file: " << ifname);
+    }
+    else
+        OFLOG_ERROR(dcm2jsonLogger, OFFIS_CONSOLE_APPLICATION << ": invalid filename: <empty string>");
+
+    return result;
+}
diff --git a/dcmdata/apps/dcm2xml.cc b/dcmdata/apps/dcm2xml.cc
index 66aa23c..48d7e3c 100644
--- a/dcmdata/apps/dcm2xml.cc
+++ b/dcmdata/apps/dcm2xml.cc
@@ -31,7 +31,7 @@
 #ifdef WITH_ZLIB
 #include <zlib.h>                       /* for zlibVersion() */
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
 #include "dcmtk/ofstd/ofchrenc.h"       /* for OFCharacterEncoding */
 #endif
 
@@ -95,7 +95,7 @@ static OFCondition writeFile(STD_NAMESPACE ostream &out,
                 {
                     OFLOG_WARN(dcm2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": SpecificCharacterSet (0008,0005) "
                         << "value '" << csetString << "' not supported ... quoting non-ASCII characters");
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
                     OFLOG_DEBUG(dcm2xmlLogger, "using option --convert-to-utf8 to convert the DICOM file to "
                         "UTF-8 encoding might also help to solve this problem more appropriately");
 #endif
@@ -223,7 +223,7 @@ int main(int argc, char *argv[])
     size_t opt_writeFlags = 0;
     OFBool opt_loadIntoMemory = OFFalse;
     OFBool opt_checkAllStrings = OFFalse;
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
     OFBool opt_convertToUTF8 = OFFalse;
 #endif
     const char *opt_defaultCharset = NULL;
@@ -268,7 +268,7 @@ int main(int argc, char *argv[])
         cmd.addOption("--charset-assume",     "+Ca", 1, "[c]harset: string",
                                                         "assume charset c if no extended charset declared");
         cmd.addOption("--charset-check-all",  "+Cc",    "check all data elements with string values\n(default: only PN, LO, LT, SH, ST, UC and UT)");
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
         cmd.addOption("--convert-to-utf8",    "+U8",    "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
 #endif
     cmd.addGroup("output options:");
@@ -303,7 +303,7 @@ int main(int argc, char *argv[])
             {
                 app.printHeader(OFTrue /*print host identifier*/);
                 COUT << OFendl << "External libraries used:";
-#if !defined(WITH_ZLIB) && !defined(WITH_LIBICONV)
+#if !defined(WITH_ZLIB) && !defined(DCMTK_ENABLE_CHARSET_CONVERSION)
                 COUT << " none" << OFendl;
 #else
                 COUT << OFendl;
@@ -311,7 +311,7 @@ int main(int argc, char *argv[])
 #ifdef WITH_ZLIB
                 COUT << "- ZLIB, Version " << zlibVersion() << OFendl;
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
                 COUT << "- " << OFCharacterEncoding::getLibraryVersionString() << OFendl;
 #endif
                 return 0;
@@ -371,7 +371,7 @@ int main(int argc, char *argv[])
         cmd.endOptionBlock();
         if (cmd.findOption("--charset-check-all"))
             opt_checkAllStrings = OFTrue;
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
         if (cmd.findOption("--convert-to-utf8"))
             opt_convertToUTF8 = OFTrue;
 #endif
@@ -500,7 +500,7 @@ int main(int argc, char *argv[])
                 else if (charset == "hebrew")
                     opt_defaultCharset = "ISO_IR 138";
             }
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
             DcmDataset *dset = dfile.getDataset();
             /* convert all DICOM strings to UTF-8 (if requested) */
             if (opt_convertToUTF8)
diff --git a/dcmdata/apps/dcmconv.cc b/dcmdata/apps/dcmconv.cc
index 7349109..46556df 100644
--- a/dcmdata/apps/dcmconv.cc
+++ b/dcmdata/apps/dcmconv.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -40,7 +40,7 @@
 #ifdef WITH_ZLIB
 #include <zlib.h>                      /* for zlibVersion() */
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
 #include "dcmtk/ofstd/ofchrenc.h"      /* for OFCharacterEncoding */
 #endif
 
@@ -69,7 +69,7 @@ static DcmTagKey parseTagKey(const char *tagName)
     const DcmDictEntry *dicent = globalDataDict.findEntry(tagName);
     if (dicent == NULL)
     {
-      OFLOG_ERROR(dcmconvLogger, "unrecognised tag name: '" << tagName << "'");
+      OFLOG_ERROR(dcmconvLogger, "unrecognized tag name: '" << tagName << "'");
       tagKey = DCM_UndefinedTagKey;
     } else {
       tagKey = dicent->getKey();
@@ -105,10 +105,9 @@ int main(int argc, char *argv[])
 #ifdef WITH_ZLIB
   OFCmdUnsignedInt opt_compressionLevel = 0;
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
   const char *opt_convertToCharset = NULL;
-  OFBool opt_transliterate = OFFalse;
-  OFBool opt_discardIllegal = OFFalse;
+  size_t opt_conversionFlags = 0;
 #endif
   OFBool opt_noInvalidGroups = OFFalse;
 
@@ -160,6 +159,15 @@ int main(int argc, char *argv[])
     cmd.addSubGroup("handling of wrong delimitation items:");
       cmd.addOption("--use-delim-items",     "-rd",    "use delimitation items from dataset (default)");
       cmd.addOption("--replace-wrong-delim", "+rd",    "replace wrong sequence/item delimitation items");
+      cmd.addSubGroup("handling of illegal undefined length OB/OW elements:");
+      cmd.addOption("--illegal-obow-rej",    "-oi",    "reject dataset with illegal element (default)");
+      cmd.addOption("--illegal-obow-conv",   "+oi",    "convert undefined length OB/OW element to SQ");
+    cmd.addSubGroup("handling of VOI LUT Sequence with OW VR and explicit length:");
+      cmd.addOption("--illegal-voi-rej",     "-vi",    "reject dataset with illegal VOI LUT (default)");
+      cmd.addOption("--illegal-voi-conv",    "+vi",    "convert illegal VOI LUT to SQ");
+    cmd.addSubGroup("handling of explicit length pixel data for encaps. transfer syntaxes:");
+      cmd.addOption("--abort-expl-pixdata",  "-pe",    "abort on explicit length pixel data (default)");
+      cmd.addOption("--use-expl-pixdata",    "+pe",    "use explicit length pixel data");
     cmd.addSubGroup("general handling of parser errors: ");
       cmd.addOption("--ignore-parse-errors", "+Ep",    "try to recover from parse errors");
       cmd.addOption("--handle-parse-errors", "-Ep",    "handle parse errors and stop parsing (default)");
@@ -176,7 +184,7 @@ int main(int argc, char *argv[])
 #endif
 
   cmd.addGroup("processing options:");
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
     cmd.addSubGroup("specific character set:");
       cmd.addOption("--convert-to-utf8",     "+U8",    "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
       cmd.addOption("--convert-to-latin1",   "+L1",    "convert affected element values to ISO 8859-1");
@@ -236,7 +244,7 @@ int main(int argc, char *argv[])
           {
               app.printHeader(OFTrue /*print host identifier*/);
               COUT << OFendl << "External libraries used:";
-#if !defined(WITH_ZLIB) && !defined(WITH_LIBICONV)
+#if !defined(WITH_ZLIB) && !defined(DCMTK_ENABLE_CHARSET_CONVERSION)
               COUT << " none" << OFendl;
 #else
               COUT << OFendl;
@@ -244,7 +252,7 @@ int main(int argc, char *argv[])
 #ifdef WITH_ZLIB
               COUT << "- ZLIB, Version " << zlibVersion() << OFendl;
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
               COUT << "- " << OFCharacterEncoding::getLibraryVersionString() << OFendl;
 #endif
               return 0;
@@ -375,6 +383,38 @@ int main(int argc, char *argv[])
       cmd.endOptionBlock();
 
       cmd.beginOptionBlock();
+      if (cmd.findOption("--illegal-obow-rej"))
+      {
+        dcmConvertUndefinedLengthOBOWtoSQ.set(OFFalse);
+      }
+      if (cmd.findOption("--illegal-obow-conv"))
+      {
+        dcmConvertUndefinedLengthOBOWtoSQ.set(OFTrue);
+      }
+      cmd.endOptionBlock();
+
+      cmd.beginOptionBlock();
+      if (cmd.findOption("--illegal-voi-rej"))
+      {
+        dcmConvertVOILUTSequenceOWtoSQ.set(OFFalse);
+      }
+      if (cmd.findOption("--illegal-voi-conv"))
+      {
+        dcmConvertVOILUTSequenceOWtoSQ.set(OFTrue);
+      }
+      cmd.endOptionBlock();
+      cmd.beginOptionBlock();
+      if (cmd.findOption("--abort-expl-pixdata"))
+      {
+        dcmUseExplLengthPixDataForEncTS.set(OFFalse);
+      }
+      if (cmd.findOption("--use-expl-pixdata"))
+      {
+        dcmUseExplLengthPixDataForEncTS.set(OFTrue);
+      }
+      cmd.endOptionBlock();
+
+      cmd.beginOptionBlock();
       if (cmd.findOption("--ignore-parse-errors"))
       {
         dcmIgnoreParsingErrors.set(OFTrue);
@@ -421,7 +461,7 @@ int main(int argc, char *argv[])
 #endif
 
       /* processing options */
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
       cmd.beginOptionBlock();
       if (cmd.findOption("--convert-to-utf8")) opt_convertToCharset = "ISO_IR 192";
       if (cmd.findOption("--convert-to-latin1")) opt_convertToCharset = "ISO_IR 100";
@@ -431,12 +471,12 @@ int main(int argc, char *argv[])
       if (cmd.findOption("--transliterate"))
       {
         app.checkDependence("--transliterate", "one of the --convert-to-xxx options", opt_convertToCharset != NULL);
-        opt_transliterate = OFTrue;
+        opt_conversionFlags |= DCMTypes::CF_transliterate;
       }
       if (cmd.findOption("--discard-illegal"))
       {
         app.checkDependence("--discard-illegal", "one of the --convert-to-xxx options", opt_convertToCharset != NULL);
-        opt_discardIllegal = OFTrue;
+        opt_conversionFlags |= DCMTypes::CF_discardIllegal;
       }
 #endif
       if (cmd.findOption("--no-invalid-groups")) opt_noInvalidGroups = OFTrue;
@@ -550,7 +590,7 @@ int main(int argc, char *argv[])
         OFLOG_INFO(dcmconvLogger, "remove all elements with an invalid group number");
         fileformat.removeInvalidGroups();
     }
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
     if (opt_convertToCharset != NULL)
     {
         OFString toCharset(opt_convertToCharset);
@@ -558,7 +598,7 @@ int main(int argc, char *argv[])
         OFLOG_INFO(dcmconvLogger, "converting all element values that are affected by "
             << "Specific Character Set (0008,0005) to '" << opt_convertToCharset << "'"
             << (toCharset.empty() ? " (ASCII)" : ""));
-        error = fileformat.convertCharacterSet(toCharset, opt_transliterate, opt_discardIllegal);
+        error = fileformat.convertCharacterSet(toCharset, opt_conversionFlags);
         if (error.bad())
         {
             OFLOG_FATAL(dcmconvLogger, error.text() << ": processing file: " << opt_ifname);
@@ -577,7 +617,12 @@ int main(int argc, char *argv[])
 
     DcmXfer opt_oxferSyn(opt_oxfer);
 
-    dataset->chooseRepresentation(opt_oxfer, NULL);
+    error = dataset->chooseRepresentation(opt_oxfer, NULL);
+    if (error.bad())
+    {
+        OFLOG_ERROR(dcmconvLogger, error.text());
+        /* reporting a fatal error and returning with an error code follows next */
+    }
 
     if (dataset->canWriteXfer(opt_oxfer))
     {
diff --git a/dcmdata/apps/dcmdump.cc b/dcmdata/apps/dcmdump.cc
index a407417..bd3a760 100644
--- a/dcmdata/apps/dcmdump.cc
+++ b/dcmdata/apps/dcmdump.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -36,7 +36,7 @@
 #ifdef WITH_ZLIB
 #include <zlib.h>                     /* for zlibVersion() */
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
 #include "dcmtk/ofstd/ofchrenc.h"     /* for OFCharacterEncoding */
 #endif
 
@@ -235,6 +235,15 @@ DCMTK_MAIN_FUNCTION
       cmd.addSubGroup("handling of wrong delimitation items:");
         cmd.addOption("--use-delim-items",     "-rd",    "use delimitation items from dataset (default)");
         cmd.addOption("--replace-wrong-delim", "+rd",    "replace wrong sequence/item delimitation items");
+      cmd.addSubGroup("handling of illegal undefined length OB/OW elements:");
+        cmd.addOption("--illegal-obow-rej",    "-oi",    "reject dataset with illegal element (default)");
+        cmd.addOption("--illegal-obow-conv",   "+oi",    "convert undefined length OB/OW element to SQ");
+      cmd.addSubGroup("handling of VOI LUT Sequence with OW VR and explicit length:");
+        cmd.addOption("--illegal-voi-rej",     "-vi",    "reject dataset with illegal VOI LUT (default)");
+        cmd.addOption("--illegal-voi-conv",    "+vi",    "convert illegal VOI LUT to SQ");
+      cmd.addSubGroup("handling of explicit length pixel data for encaps. transfer syntaxes:");
+        cmd.addOption("--abort-expl-pixdata",  "-pe",    "abort on explicit length pixel data (default)");
+        cmd.addOption("--use-expl-pixdata",    "+pe",    "use explicit length pixel data");
       cmd.addSubGroup("general handling of parser errors: ");
         cmd.addOption("--ignore-parse-errors", "+Ep",    "try to recover from parse errors");
         cmd.addOption("--handle-parse-errors", "-Ep",    "handle parse errors and stop parsing (default)");
@@ -250,7 +259,7 @@ DCMTK_MAIN_FUNCTION
         cmd.addOption("--bitstream-zlib",      "+bz",    "expect deflated zlib bitstream");
 #endif
 
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
     cmd.addGroup("processing options:");
       cmd.addSubGroup("specific character set:");
         cmd.addOption("--convert-to-utf8",     "+U8",    "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
@@ -304,7 +313,7 @@ DCMTK_MAIN_FUNCTION
         {
           app.printHeader(OFTrue /*print host identifier*/);
           COUT << OFendl << "External libraries used:";
-#if !defined(WITH_ZLIB) && !defined(WITH_LIBICONV)
+#if !defined(WITH_ZLIB) && !defined(DCMTK_ENABLE_CHARSET_CONVERSION)
           COUT << " none" << OFendl;
 #else
           COUT << OFendl;
@@ -312,7 +321,7 @@ DCMTK_MAIN_FUNCTION
 #ifdef WITH_ZLIB
           COUT << "- ZLIB, Version " << zlibVersion() << OFendl;
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
           COUT << "- " << OFCharacterEncoding::getLibraryVersionString() << OFendl;
 #endif
           return 0;
@@ -466,6 +475,39 @@ DCMTK_MAIN_FUNCTION
       cmd.endOptionBlock();
 
       cmd.beginOptionBlock();
+      if (cmd.findOption("--illegal-obow-rej"))
+      {
+        dcmConvertUndefinedLengthOBOWtoSQ.set(OFFalse);
+      }
+      if (cmd.findOption("--illegal-obow-conv"))
+      {
+        dcmConvertUndefinedLengthOBOWtoSQ.set(OFTrue);
+      }
+      cmd.endOptionBlock();
+
+      cmd.beginOptionBlock();
+      if (cmd.findOption("--illegal-voi-rej"))
+      {
+        dcmConvertVOILUTSequenceOWtoSQ.set(OFFalse);
+      }
+      if (cmd.findOption("--illegal-voi-conv"))
+      {
+        dcmConvertVOILUTSequenceOWtoSQ.set(OFTrue);
+      }
+      cmd.endOptionBlock();
+
+      cmd.beginOptionBlock();
+      if (cmd.findOption("--abort-expl-pixdata"))
+      {
+        dcmUseExplLengthPixDataForEncTS.set(OFFalse);
+      }
+      if (cmd.findOption("--use-expl-pixdata"))
+      {
+        dcmUseExplLengthPixDataForEncTS.set(OFTrue);
+      }
+      cmd.endOptionBlock();
+
+      cmd.beginOptionBlock();
       if (cmd.findOption("--ignore-parse-errors"))
       {
         dcmIgnoreParsingErrors.set(OFTrue);
@@ -501,7 +543,7 @@ DCMTK_MAIN_FUNCTION
 #endif
 
       /* processing options */
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
       if (cmd.findOption("--convert-to-utf8")) convertToUTF8 = OFTrue;
 #endif
 
@@ -747,7 +789,7 @@ static int dumpFile(STD_NAMESPACE ostream &out,
 
     if (loadIntoMemory) dfile.loadAllDataIntoMemory();
 
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
     if (convertToUTF8)
     {
         OFLOG_INFO(dcmdumpLogger, "converting all element values that are affected by Specific Character Set (0008,0005) to UTF-8");
diff --git a/dcmdata/apps/dcmgpdir.cc b/dcmdata/apps/dcmgpdir.cc
index f1d36ce..86aae1d 100644
--- a/dcmdata/apps/dcmgpdir.cc
+++ b/dcmdata/apps/dcmgpdir.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -509,7 +509,7 @@ DCMTK_MAIN_FUNCTION
     {
         if (!OFStandard::dirExists(opt_directory))
         {
-            OFLOG_FATAL(dcmgpdirLogger, "specified input directory does not exist");
+            OFLOG_FATAL(dcmgpdirLogger, OFFIS_CONSOLE_APPLICATION << ": specified input directory does not exist");
             return 1;
         }
     }
@@ -560,13 +560,21 @@ DCMTK_MAIN_FUNCTION
 #endif
 
     OFCondition result;
+    const char *action = "";
     /* create new general purpose DICOMDIR, append to or update existing one */
     if (opt_append)
+    {
+        action = "appending";
         result = ddir.appendToDicomDir(opt_profile, opt_output);
+    }
     else if (opt_update)
+    {
+        action = "updating";
         result = ddir.updateDicomDir(opt_profile, opt_output);
-    else
+    } else {
+        action = "creating";
         result = ddir.createNewDicomDir(opt_profile, opt_output, opt_fileset);
+    }
     if (result.good())
     {
         /* set fileset descriptor and character set */
@@ -619,10 +627,20 @@ DCMTK_MAIN_FUNCTION
             }
             /* write DICOMDIR file */
             if (result.good() && opt_write)
+            {
+                action = "writing";
                 result = ddir.writeDicomDir(opt_enctype, opt_glenc);
+            }
         }
     }
 
+    /* some final error reporting */
+    if (result.bad() && (result != EC_IllegalCall))
+    {
+        OFLOG_FATAL(dcmgpdirLogger, OFFIS_CONSOLE_APPLICATION << ": error ("
+            << result.text() << ") " << action << " file: " << opt_output);
+    }
+
 #ifdef BUILD_DCMGPDIR_AS_DCMMKDIR
     // deregister global decompression codecs
     DcmRLEDecoderRegistration::cleanup();
diff --git a/dcmdata/apps/dump2dcm.cc b/dcmdata/apps/dump2dcm.cc
index 5a212cf..a2181cf 100644
--- a/dcmdata/apps/dump2dcm.cc
+++ b/dcmdata/apps/dump2dcm.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -274,6 +274,12 @@ parseVR(char *&s, DcmEVR &vr)
         vr = EVR_UNKNOWN;
         s += 2;
     }
+    // dcmdump uses "??" in case of "Unknown Tag & Data" and implicit VR
+    else if ((*s == '?') && (*(s + 1) == '?'))
+    {
+        vr = EVR_UNKNOWN;
+        s += 2;
+    }
     else ok = OFFalse;
 
     return ok;
@@ -526,7 +532,7 @@ insertIntoSet(DcmStack &stack, const E_TransferSyntax xfer, const DcmTagKey &tag
         else if (newTagVR == EVR_pixelItem)
             newElement = new DcmPixelItem(DCM_PixelItemTag);
         else
-            newElementError = newDicomElement(newElement, tag);
+            newElementError = DcmItem::newDicomElement(newElement, tag);
 
         if (newElementError == EC_Normal)
         {
diff --git a/dcmdata/apps/xml2dcm.cc b/dcmdata/apps/xml2dcm.cc
index 4b16159..6da18d9 100644
--- a/dcmdata/apps/xml2dcm.cc
+++ b/dcmdata/apps/xml2dcm.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2016, OFFIS e.V.
+ *  Copyright (C) 2003-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -198,7 +198,7 @@ static OFCondition createNewElement(xmlNodePtr current,
             if (dcmEVR != EVR_UNKNOWN)
                 dcmTag.setVR(dcmVR);
             /* create DICOM element */
-            result = newDicomElement(newElem, dcmTag);
+            result = DcmItem::newDicomElement(newElem, dcmTag);
         } else {
             OFLOG_WARN(xml2dcmLogger, "invalid 'tag' attribute (" << elemTag << "), ignoring node");
             result = EC_InvalidTag;
@@ -787,9 +787,15 @@ int main(int argc, char *argv[])
 
         cmd.beginOptionBlock();
         if (cmd.findOption("--dont-overwrite-uids"))
+        {
+            app.checkDependence("--dont-overwrite-uids", "--generate-new-uids", opt_generateUIDs);
             opt_overwriteUIDs = OFFalse;
+        }
         if (cmd.findOption("--overwrite-uids"))
+        {
+            app.checkDependence("--overwrite-uids", "--generate-new-uids", opt_generateUIDs);
             opt_overwriteUIDs = OFTrue;
+        }
         cmd.endOptionBlock();
 
         /* output options */
diff --git a/dcmdata/data/dicom.dic b/dcmdata/data/dicom.dic
index e0f8c86..cbe39e2 100644
--- a/dcmdata/data/dicom.dic
+++ b/dcmdata/data/dicom.dic
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 1994-2016, OFFIS e.V.
+#  Copyright (C) 1994-2017, OFFIS e.V.
 #  All rights reserved.  See COPYRIGHT file for details.
 #
 #  This software and supporting documentation were developed by
@@ -21,12 +21,13 @@
 # DICONDE (Digital Imaging and Communication in Nondestructive Evaluation) and
 # DICOS (Digital Imaging and Communications in Security) standard.
 #
-# Generated automatically from DICOM PS 3.6-2016c and PS 3.7-2016c
-# File created on 2016-06-13 09:52:04 by J. Riesmeier on thinkpad.
+# Generated automatically from DICOM PS 3.6-2016e and PS 3.7-2016e
+# File created on 2016-11-23 13:16:19 by J. Riesmeier on thinkpad.
+# File updated manually on 2017-01-31 by J. Riesmeier.
 #
 # In addition, the data dictionary entries from the following final text
 # supplements and correction items (CP) have been incorporated:
-# - (none)
+# - CP 1619
 #
 # Each line represents an entry in the data dictionary.  Each line has 5 fields
 # (Tag, VR, Name, VM, Version).  Entries need not be in ascending tag order.
@@ -168,6 +169,9 @@
 (0008,0123)	SQ	ContextGroupIdentificationSequence	1	DICOM
 (0008,0124)	SQ	MappingResourceIdentificationSequence	1	DICOM
 (0008,0201)	SH	TimezoneOffsetFromUTC	1	DICOM
+(0008,0220)	SQ	ResponsibleGroupCodeSequence	1	DICOM
+(0008,0221)	CS	EquipmentModality	1	DICOM
+(0008,0222)	LO	ManufacturerRelatedModelGroup	1	DICOM
 (0008,0300)	SQ	PrivateDataElementCharacteristicsSequence	1	DICOM
 (0008,0301)	US	PrivateGroupReference	1	DICOM
 (0008,0302)	LO	PrivateCreatorReference	1	DICOM
@@ -176,6 +180,15 @@
 (0008,0305)	SQ	DeidentificationActionSequence	1	DICOM
 (0008,0306)	US	IdentifyingPrivateElements	1-n	DICOM
 (0008,0307)	CS	DeidentificationAction	1	DICOM
+(0008,0308)	US	PrivateDataElement	1	DICOM
+(0008,0309)	UL	PrivateDataElementValueMultiplicity	1-3	DICOM
+(0008,030A)	CS	PrivateDataElementValueRepresentation	1	DICOM
+(0008,030B)	UL	PrivateDataElementNumberOfItems	1-2	DICOM
+(0008,030C)	UC	PrivateDataElementName	1	DICOM
+(0008,030D)	UC	PrivateDataElementKeyword	1	DICOM
+(0008,030E)	UT	PrivateDataElementDescription	1	DICOM
+(0008,030F)	UT	PrivateDataElementEncoding	1	DICOM
+(0008,0310)	SQ	PrivateDataElementDefinitionSequence	1	DICOM
 (0008,1010)	SH	StationName	1	DICOM
 (0008,1030)	LO	StudyDescription	1	DICOM
 (0008,1032)	SQ	ProcedureCodeSequence	1	DICOM
@@ -298,6 +311,9 @@
 (0010,1010)	AS	PatientAge	1	DICOM
 (0010,1020)	DS	PatientSize	1	DICOM
 (0010,1021)	SQ	PatientSizeCodeSequence	1	DICOM
+(0010,1022)	DS	PatientBodyMassIndex	1	DICOM
+(0010,1023)	DS	MeasuredAPDimension	1	DICOM
+(0010,1024)	DS	MeasuredLateralDimension	1	DICOM
 (0010,1030)	DS	PatientWeight	1	DICOM
 (0010,1040)	LO	PatientAddress	1	DICOM
 (0010,1060)	PN	PatientMotherBirthName	1	DICOM
@@ -352,6 +368,8 @@
 (0012,0083)	SQ	ConsentForClinicalTrialUseSequence	1	DICOM
 (0012,0084)	CS	DistributionType	1	DICOM
 (0012,0085)	CS	ConsentForDistributionFlag	1	DICOM
+(0012,0086)	DA	EthicsCommitteeApprovalEffectivenessStartDate	1	DICOM
+(0012,0087)	DA	EthicsCommitteeApprovalEffectivenessEndDate	1	DICOM
 (0014,0025)	ST	ComponentManufacturingProcedure	1	DICOM/DICONDE
 (0014,0028)	ST	ComponentManufacturer	1	DICOM/DICONDE
 (0014,0030)	DS	MaterialThickness	1-n	DICOM/DICONDE
@@ -596,6 +614,8 @@
 (0018,1006)	LO	GridID	1	DICOM
 (0018,1007)	LO	CassetteID	1	DICOM
 (0018,1008)	LO	GantryID	1	DICOM
+(0018,1009)	UT	UniqueDeviceIdentifier	1	DICOM
+(0018,100A)	SQ	UDISequence	1	DICOM
 (0018,1010)	LO	SecondaryCaptureDeviceID	1	DICOM
 (0018,1012)	DA	DateOfSecondaryCapture	1	DICOM
 (0018,1014)	TM	TimeOfSecondaryCapture	1	DICOM
@@ -1066,7 +1086,7 @@
 (0018,9320)	SH	ImageFilter	1	DICOM
 (0018,9321)	SQ	CTExposureSequence	1	DICOM
 (0018,9322)	FD	ReconstructionPixelSpacing	2	DICOM
-(0018,9323)	CS	ExposureModulationType	1	DICOM
+(0018,9323)	CS	ExposureModulationType	1-n	DICOM
 (0018,9324)	FD	EstimatedDoseSaving	1	DICOM
 (0018,9325)	SQ	CTXRayDetailsSequence	1	DICOM
 (0018,9326)	SQ	CTPositionSequence	1	DICOM
@@ -1252,6 +1272,65 @@
 (0018,980E)	SQ	TransducerBeamSteeringCodeSequence	1	DICOM
 (0018,980F)	SQ	TransducerApplicationCodeSequence	1	DICOM
 (0018,9810)	xs	ZeroVelocityPixelValue	1	DICOM
+(0018,9900)	LO	ReferenceLocationLabel	1	DICOM
+(0018,9901)	UT	ReferenceLocationDescription	1	DICOM
+(0018,9902)	SQ	ReferenceBasisCodeSequence	1	DICOM
+(0018,9903)	SQ	ReferenceGeometryCodeSequence	1	DICOM
+(0018,9904)	DS	OffsetDistance	1	DICOM
+(0018,9905)	CS	OffsetDirection	1	DICOM
+(0018,9906)	SQ	PotentialScheduledProtocolCodeSequence	1	DICOM
+(0018,9907)	SQ	PotentialRequestedProcedureCodeSequence	1	DICOM
+(0018,9908)	UC	PotentialReasonsForProcedure	1-n	DICOM
+(0018,9909)	SQ	PotentialReasonsForProcedureCodeSequence	1	DICOM
+(0018,990A)	UC	PotentialDiagnosticTasks	1-n	DICOM
+(0018,990B)	SQ	ContraindicationsCodeSequence	1	DICOM
+(0018,990C)	SQ	ReferencedDefinedProtocolSequence	1	DICOM
+(0018,990D)	SQ	ReferencedPerformedProtocolSequence	1	DICOM
+(0018,990E)	SQ	PredecessorProtocolSequence	1	DICOM
+(0018,990F)	UT	ProtocolPlanningInformation	1	DICOM
+(0018,9910)	UT	ProtocolDesignRationale	1	DICOM
+(0018,9911)	SQ	PatientSpecificationSequence	1	DICOM
+(0018,9912)	SQ	ModelSpecificationSequence	1	DICOM
+(0018,9913)	SQ	ParametersSpecificationSequence	1	DICOM
+(0018,9914)	SQ	InstructionSequence	1	DICOM
+(0018,9915)	US	InstructionIndex	1	DICOM
+(0018,9916)	LO	InstructionText	1	DICOM
+(0018,9917)	UT	InstructionDescription	1	DICOM
+(0018,9918)	CS	InstructionPerformedFlag	1	DICOM
+(0018,9919)	DT	InstructionPerformedDateTime	1	DICOM
+(0018,991A)	UT	InstructionPerformanceComment	1	DICOM
+(0018,991B)	SQ	PatientPositioningInstructionSequence	1	DICOM
+(0018,991C)	SQ	PositioningMethodCodeSequence	1	DICOM
+(0018,991D)	SQ	PositioningLandmarkSequence	1	DICOM
+(0018,991E)	UI	TargetFrameOfReferenceUID	1	DICOM
+(0018,991F)	SQ	AcquisitionProtocolElementSpecificationSequence	1	DICOM
+(0018,9920)	SQ	AcquisitionProtocolElementSequence	1	DICOM
+(0018,9921)	US	ProtocolElementNumber	1	DICOM
+(0018,9922)	LO	ProtocolElementName	1	DICOM
+(0018,9923)	UT	ProtocolElementCharacteristicsSummary	1	DICOM
+(0018,9924)	UT	ProtocolElementPurpose	1	DICOM
+(0018,9930)	CS	AcquisitionMotion	1	DICOM
+(0018,9931)	SQ	AcquisitionStartLocationSequence	1	DICOM
+(0018,9932)	SQ	AcquisitionEndLocationSequence	1	DICOM
+(0018,9933)	SQ	ReconstructionProtocolElementSpecificationSequence	1	DICOM
+(0018,9934)	SQ	ReconstructionProtocolElementSequence	1	DICOM
+(0018,9935)	SQ	StorageProtocolElementSpecificationSequence	1	DICOM
+(0018,9936)	SQ	StorageProtocolElementSequence	1	DICOM
+(0018,9937)	LO	RequestedSeriesDescription	1	DICOM
+(0018,9938)	US	SourceAcquisitionProtocolElementNumber	1-n	DICOM
+(0018,9939)	US	SourceAcquisitionBeamNumber	1-n	DICOM
+(0018,993A)	US	SourceReconstructionProtocolElementNumber	1-n	DICOM
+(0018,993B)	SQ	ReconstructionStartLocationSequence	1	DICOM
+(0018,993C)	SQ	ReconstructionEndLocationSequence	1	DICOM
+(0018,993D)	SQ	ReconstructionAlgorithmSequence	1	DICOM
+(0018,993E)	SQ	ReconstructionTargetCenterLocationSequence	1	DICOM
+(0018,9941)	UT	ImageFilterDescription	1	DICOM
+(0018,9942)	FD	CTDIvolNotificationTrigger	1	DICOM
+(0018,9943)	FD	DLPNotificationTrigger	1	DICOM
+(0018,9944)	CS	AutoKVPSelectionType	1	DICOM
+(0018,9945)	FD	AutoKVPUpperBound	1	DICOM
+(0018,9946)	FD	AutoKVPLowerBound	1	DICOM
+(0018,9947)	CS	ProtocolDefinedPatientPosition	1	DICOM
 (0018,A001)	SQ	ContributingEquipmentSequence	1	DICOM
 (0018,A002)	DT	ContributionDateTime	1	DICOM
 (0018,A003)	ST	ContributionDescription	1	DICOM
@@ -1274,6 +1353,7 @@
 (0020,0200)	UI	SynchronizationFrameOfReferenceUID	1	DICOM
 (0020,0242)	UI	SOPInstanceUIDOfConcatenationSource	1	DICOM
 (0020,1002)	IS	ImagesInAcquisition	1	DICOM
+(0020,103F)	LO	TargetPositionReferenceIndicator	1	DICOM
 (0020,1040)	LO	PositionReferenceIndicator	1	DICOM
 (0020,1041)	DS	SliceLocation	1	DICOM
 (0020,1200)	IS	NumberOfPatientRelatedStudies	1	DICOM
@@ -1646,6 +1726,9 @@
 (0028,1222)	OW	SegmentedGreenPaletteColorLookupTableData	1	DICOM
 (0028,1223)	OW	SegmentedBluePaletteColorLookupTableData	1	DICOM
 (0028,1224)	OW	SegmentedAlphaPaletteColorLookupTableData	1	DICOM
+(0028,1230)	SQ	StoredValueColorRangeSequence	1	DICOM
+(0028,1231)	FD	MinimumStoredValueMapped	1	DICOM
+(0028,1232)	FD	MaximumStoredValueMapped	1	DICOM
 (0028,1300)	CS	BreastImplantPresent	1	DICOM
 (0028,1350)	CS	PartialView	1	DICOM
 (0028,1351)	ST	PartialViewDescription	1	DICOM
@@ -2321,6 +2404,7 @@
 (0062,0004)	US	SegmentNumber	1	DICOM
 (0062,0005)	LO	SegmentLabel	1	DICOM
 (0062,0006)	ST	SegmentDescription	1	DICOM
+(0062,0007)	SQ	SegmentationAlgorithmIdentificationSequence	1	DICOM
 (0062,0008)	CS	SegmentAlgorithmType	1	DICOM
 (0062,0009)	LO	SegmentAlgorithmName	1	DICOM
 (0062,000A)	SQ	SegmentIdentificationSequence	1	DICOM
@@ -2573,6 +2657,7 @@
 (0070,031A)	UI	FiducialUID	1	DICOM
 (0070,031C)	SQ	FiducialSetSequence	1	DICOM
 (0070,031E)	SQ	FiducialSequence	1	DICOM
+(0070,031F)	SQ	FiducialsPropertyCategoryCodeSequence	1	DICOM
 (0070,0401)	US	GraphicLayerRecommendedDisplayCIELabValue	3	DICOM
 (0070,0402)	SQ	BlendingSequence	1	DICOM
 (0070,0403)	FL	RelativeOpacity	1	DICOM
@@ -2890,6 +2975,7 @@
 (0082,0035)	SQ	RecommendedDefaultValueSequence	1	DICOM
 (0082,0036)	CS	ConstraintViolationSignificance	1	DICOM
 (0082,0037)	UT	ConstraintViolationCondition	1	DICOM
+(0082,0038)	CS	ModifiableConstraintFlag	1	DICOM
 (0088,0130)	SH	StorageMediaFileSetID	1	DICOM
 (0088,0140)	UI	StorageMediaFileSetUID	1	DICOM
 (0088,0200)	SQ	IconImageSequence	1	DICOM
@@ -3096,7 +3182,6 @@
 (3006,00B6)	SQ	ROIElementalCompositionSequence	1	DICOM
 (3006,00B7)	US	ROIElementalCompositionAtomicNumber	1	DICOM
 (3006,00B8)	FL	ROIElementalCompositionAtomicMassFraction	1	DICOM
-(3006,00B9)	SQ	AdditionalRTROIIdentificationCodeSequence	1	DICOM
 (3006,00C6)	DS	FrameOfReferenceTransformationMatrix	16	DICOM
 (3006,00C8)	LO	FrameOfReferenceTransformationComment	1	DICOM
 (3008,0010)	SQ	MeasuredDoseReferenceSequence	1	DICOM
@@ -3138,6 +3223,7 @@
 (3008,0064)	IS	MeasuredDoseReferenceNumber	1	DICOM
 (3008,0065)	AT	ParameterPointer	1	DICOM
 (3008,0066)	ST	OverrideReason	1	DICOM
+(3008,0067)	US	ParameterValueNumber	1	DICOM
 (3008,0068)	SQ	CorrectedParameterSequence	1	DICOM
 (3008,006A)	FL	CorrectionValue	1	DICOM
 (3008,0070)	SQ	CalculatedDoseReferenceSequence	1	DICOM
@@ -3530,6 +3616,7 @@
 (300A,0386)	FL	RangeModulatorGatingStartWaterEquivalentThickness	1	DICOM
 (300A,0388)	FL	RangeModulatorGatingStopWaterEquivalentThickness	1	DICOM
 (300A,038A)	FL	IsocenterToRangeModulatorDistance	1	DICOM
+(300A,038F)	FL	ScanSpotTimeOffset	1-n	DICOM
 (300A,0390)	SH	ScanSpotTuneID	1	DICOM
 (300A,0391)	IS	ScanSpotPrescribedIndices	1-n	DICOM
 (300A,0392)	IS	NumberOfScanSpotPositions	1	DICOM
@@ -4111,6 +4198,7 @@
 (2130,0080)	SQ	RETIRED_PresentationLUTContentSequence	1	DICOM/retired
 (2130,00A0)	SQ	RETIRED_ProposedStudySequence	1	DICOM/retired
 (2130,00C0)	SQ	RETIRED_OriginalImageSequence	1	DICOM/retired
+(3006,00B9)	SQ	RETIRED_AdditionalRTROIIdentificationCodeSequence	1	DICOM/retired
 (3006,00C0)	SQ	RETIRED_FrameOfReferenceRelationshipSequence	1	DICOM/retired
 (3006,00C2)	UI	RETIRED_RelatedFrameOfReferenceUID	1	DICOM/retired
 (3006,00C4)	CS	RETIRED_FrameOfReferenceTransformationType	1	DICOM/retired
@@ -4208,6 +4296,15 @@
 #
 #---------------------------------------------------------------------------
 #
+# Correction Item 1619
+#
+(0010,0221)	SQ	GeneticModificationsSequence	1	DICOM/CP_1619
+(0010,0222)	UC	GeneticModificationsDescription	1	DICOM/CP_1619
+(0010,0223)	LO	GeneticModificationsNomenclature	1	DICOM/CP_1619
+(0010,0229)	SQ	GeneticModificationsCodeSequence	1	DICOM/CP_1619
+#
+#---------------------------------------------------------------------------
+#
 # Private Creator Data Elements
 #
 (0009-o-FFFF,0000)	UL	PrivateGroupLength	1	PRIVATE
diff --git a/dcmsr/docs/dsrdump.man b/dcmdata/docs/dcm2json.man
similarity index 51%
copy from dcmsr/docs/dsrdump.man
copy to dcmdata/docs/dcm2json.man
index 6aa4d00..4479445 100644
--- a/dcmsr/docs/dsrdump.man
+++ b/dcmdata/docs/dcm2json.man
@@ -1,42 +1,44 @@
 /*!
 
 \if MANPAGES
-\page dsrdump Dump DICOM SR file and data set
+\page dcm2json Convert DICOM file and data set to JSON
 \else
-\page dsrdump dsrdump: Dump DICOM SR file and data set
+\page dcm2json dcm2json: Convert DICOM file and data set to JSON
 \endif
 
 \section synopsis SYNOPSIS
 
 \verbatim
-dsrdump [options] dsrfile-in...
+dcm2json [options] dcmfile-in [jsonfile-out]
 \endverbatim
 
 \section description DESCRIPTION
 
-The \b dsrdump utility dumps the contents of a DICOM Structured Reporting (SR)
-document (file format or raw data set) to stdout in textual form.  The output
-of the document content follows the format proposed in David Clunie's book
-"DICOM Structured Reporting" (PixelMed Publishing, 2000).
+The \b dcm2json utility converts the contents of a DICOM file (file format or
+raw data set) to JSON (JavaScript Object Notation).  The output refers to the
+"DICOM JSON Model", which is found in DICOM Part 18 Section F.
 
-If \b dsrdump reads a raw data set (DICOM data without a file format
+If \b dcm2json reads a raw data set (DICOM data without a file format
 meta-header) it will attempt to guess the transfer syntax by examining the
 first few bytes of the file.  It is not always possible to correctly guess the
 transfer syntax and it is better to convert a data set to a file format
 whenever possible (using the \b dcmconv utility).  It is also possible to use
-the \e -f and <em>-t[ieb]</em> options to force \b dsrdump to read a dataset
+the \e -f and <em>-t[ieb]</em> options to force \b dcm2json to read a data set
 with a particular transfer syntax.
 
 \section parameters PARAMETERS
 
 \verbatim
-dsrfile-in  DICOM SR input filename to be dumped
+dcmfile-in    DICOM input filename to be converted
+
+jsonfile-out  JSON output filename (default: stdout)
 \endverbatim
 
 \section options OPTIONS
 
 \subsection general_options general options
 \verbatim
+
   -h    --help
           print this help text and exit
 
@@ -94,135 +96,207 @@ input transfer syntax:
           read with implicit VR little endian TS
 \endverbatim
 
-\subsection processing_options processing options
-\verbatim
-additional information:
-
-  -Ip   --processing-details
-          show currently processed content item
-
-error handling:
-
-  -Er   --unknown-relationship
-          accept unknown/missing relationship type
-
-  -Ev   --invalid-item-value
-          accept invalid content item value
-          (e.g. violation of VR or VM definition)
-
-  -Ec   --ignore-constraints
-          ignore relationship content constraints
-
-  -Ee   --ignore-item-errors
-          do not abort on content item errors, just warn
-          (e.g. missing value type specific attributes)
-
-  -Ei   --skip-invalid-items
-          skip invalid content items (including sub-tree)
-
-  -Dv   --disable-vr-checker
-          disable check for VR-conformant string values
-
-specific character set:
-
-  +U8   --convert-to-utf8
-          convert all element values that are affected
-          by Specific Character Set (0008,0005) to UTF-8
-
-          # requires support from the libiconv toolkit
-\endverbatim
-
 \subsection output_options output options
 \verbatim
-general printing:
-
-  +Pf   --print-filename
-          print header with filename for each document
-
-  -Ph   --no-document-header
-          do not print general document information
-
-  +Pn   --number-nested-items
-          print position string in front of each line
+output format:
 
-  -Pn   --indent-nested-items
-          indent nested items by spaces (default)
+  +fc   --formatted-code
+          output file with human readable formatting (default)
 
-printing values:
+  -fc   --compact-code
+          output without formatting (single line of code)
 
-  +Pl   --print-long-values
-          print long item values completely
-
-  -Pl   --shorten-long-values
-          print long item values shortened (default)
-
-  +Pu   --print-instance-uid
-          print SOP instance UID of referenced objects
-
-  -Ps   --print-sopclass-short
-          print short SOP class name of referenced image objects,
-          e.g. "CT image" (default)
-
-  +Ps   --print-sopclass-long
-          print long SOP class name of referenced objects
-
-  +Psu  --print-sopclass-uid
-          print SOP class UID of referenced objects
-
-  +Pc   --print-all-codes
-          print all codes (including concept name codes)
-
-  +Pi   --print-invalid-codes
-          print invalid codes (for debugging purposes)
-
-  -Pi   --no-invalid-codes
-          print text "invalid code" instead (default)
-
-  +Pt   --print-template-id
-          print template identification information
-
-enhanced encoding mode:
-
-  +Pe   --indicate-enhanced
-          indicate that enhanced mode is used for codes
-
-  -Pe   --no-enhanced-mode
-          do not indicate enhanced mode (default)
+  +m    --write-meta
+          write data set with meta information
+\endverbatim
 
-color:
+\section json_format JSON Format
 
-  +C    --print-color
-          use ANSI escape codes for colored output
+The basic structure of the JSON output created from a DICOM file looks like
+the following (see DICOM Part 18 Section F for details):
 
-          # not available on Windows systems
+\verbatim
+{
+    "00080005": {
+        "vr": "CS",
+        "Value": [
+            "ISO_IR192"
+        ]
+    },
+    "00080020": {
+        "vr": "DT",
+        "Value": [
+            "20130409"
+        ]
+    },
+    "00080030": {
+        "vr": "TM",
+        "Value": [
+            "131600.0000"
+        ]
+    },
+    "00080050": {
+        "vr": "SH",
+        "Value": [
+            "11235813"
+        ]
+    },
+    "00080056": {
+        "vr": "CS",
+        "Value": [
+            "ONLINE"
+        ]
+    },
+    "00080061": {
+        "vr": "CS",
+        "Value": [
+            "CT",
+            "PET"
+        ]
+    },
+    "00080090": {
+        "vr": "PN",
+        "Value": [
+          {
+            "Alphabetic": "^Bob^^Dr."
+          }
+        ]
+    },
+    "00081190": {
+        "vr": "UR",
+        "Value": [
+            "http://wado.nema.org/studies/
+            1.2.392.200036.9116.2.2.2.1762893313.1029997326.945873"
+        ]
+    },
+    "00090010": {
+        "vr": "LO",
+        "Value": [
+            "Vendor A"
+        ]
+    },
+    "00091002": {
+        "vr": "UN",
+        "InlineBinary": "z0x9c8v7"
+    },
+    "00100010": {
+        "vr": "PN",
+        "Value": [
+          {
+            "Alphabetic": "Wang^XiaoDong"
+          }
+        ]
+    },
+    "00100020": {
+        "vr": "LO",
+        "Value": [
+            "12345"
+        ]
+    },
+    "00100021": {
+        "vr": "LO",
+        "Value": [
+            "Hospital A"
+        ]
+    },
+    "00100030": {
+        "vr": "DT",
+        "Value": [
+            "19670701"
+        ]
+    },
+    "00100040": {
+        "vr": "CS",
+        "Value": [
+            "M"
+        ]
+    },
+    "00101002": {
+        "vr": "SQ",
+        "Value": [
+            {
+                "00100020": {
+                    "vr": "LO",
+                    "Value": [
+                        "54321"
+                    ]
+                },
+                "00100021": {
+                    "vr": "LO",
+                    "Value": [
+                        "Hospital B"
+                    ]
+                }
+            },
+            {
+                "00100020": {
+                    "vr": "LO",
+                    "Value": [
+                        "24680"
+                    ]
+                },
+                "00100021": {
+                    "vr": "LO",
+                    "Value": [
+                        "Hospital C"
+                    ]
+                }
+            }
+        ]
+    },
+    "0020000D": {
+        "vr": "UI",
+        "Value": [
+            "1.2.392.200036.9116.2.2.2.1762893313.1029997326.945873"
+        ]
+    },
+    "00200010": {
+        "vr": "SH",
+        "Value": [
+            "11235813"
+        ]
+    },
+    "00201206": {
+        "vr": "IS",
+        "Value": [
+            4
+        ]
+    },
+    "00201208": {
+        "vr": "IS",
+        "Value": [
+            942
+        ]
+    }
+}
+\endverbatim
 
-  -C    --no-color
-          do not use any ANSI escape codes (default)
+\subsection bulk_data Bulk Data
 
-          # not available on Windows systems
-\endverbatim
+Binary data, i.e. DICOM element values with Value Representations (VR) of OB
+or OW, as well as OD, OF and UN values are by default not written to the JSON
+output because of their size.  Instead, for each element, a new Universally
+Unique Identifier (UUID) is being generated and written as an value of a
+BulkDataURI JSON element.  So far, there is no possibility to write an
+additional file to hold the binary data for each of the binary data chunks.
 
 \section notes NOTES
 
-\subsection dicom_conformance DICOM Conformance
+\subsection character_encoding Character Encoding
 
-The \b dsrdump utility supports the following SOP Classes:
+The JSON encoding is determined automatically from the DICOM attribute
+(0008,0005) "Specific Character Set" using the following mapping:
 
 \verbatim
-SpectaclePrescriptionReportStorage          1.2.840.10008.5.1.4.1.1.78.6
-MacularGridThicknessAndVolumeReportStorage  1.2.840.10008.5.1.4.1.1.79.1
-BasicTextSRStorage                          1.2.840.10008.5.1.4.1.1.88.11
-EnhancedSRStorage                           1.2.840.10008.5.1.4.1.1.88.22
-ComprehensiveSRStorage                      1.2.840.10008.5.1.4.1.1.88.33
-Comprehensive3DSRStorage                    1.2.840.10008.5.1.4.1.1.88.34
-ProcedureLogStorage                         1.2.840.10008.5.1.4.1.1.88.40
-MammographyCADSRStorage                     1.2.840.10008.5.1.4.1.1.88.50
-KeyObjectSelectionDocumentStorage           1.2.840.10008.5.1.4.1.1.88.59
-ChestCADSRStorage                           1.2.840.10008.5.1.4.1.1.88.65
-XRayRadiationDoseSRStorage                  1.2.840.10008.5.1.4.1.1.88.67
-RadiopharmaceuticalRadiationDoseSRStorage   1.2.840.10008.5.1.4.1.1.88.68
-ColonCADSRStorage                           1.2.840.10008.5.1.4.1.1.88.69
-ImplantationPlanSRDocumentStorage           1.2.840.10008.5.1.4.1.1.88.70
+ISO Latin 1   "ISO_IR 100"  =>  "UTF-8"
+ISO Latin 2   "ISO_IR 101"  =>  "UTF-8"
+ISO Latin 3   "ISO_IR 109"  =>  "UTF-8"
+ISO Latin 4   "ISO_IR 110"  =>  "UTF-8"
+ISO Latin 5   "ISO_IR 148"  =>  "UTF-8"
+Cyrillic      "ISO_IR 144"  =>  "UTF-8"
+Arabic        "ISO_IR 127"  =>  "UTF-8"
+Greek         "ISO_IR 126"  =>  "UTF-8"
+Hebrew        "ISO_IR 138"  =>  "UTF-8"
 \endverbatim
 
 \section logging LOGGING
@@ -268,7 +342,7 @@ longish and confusing command lines (an example is provided in file
 
 \section environment ENVIRONMENT
 
-The \b dsrdump utility will attempt to load DICOM data dictionaries specified
+The \b dcm2json utility will attempt to load DICOM data dictionaries specified
 in the \e DCMDICTPATH environment variable.  By default, i.e. if the
 \e DCMDICTPATH environment variable is not set, the file
 <em>\<datadir\>/dicom.dic</em> will be loaded unless the dictionary is built
@@ -282,12 +356,8 @@ a semicolon (";") is used as a separator.  The data dictionary code will
 attempt to load each file specified in the \e DCMDICTPATH environment variable.
 It is an error if no data dictionary can be loaded.
 
-\section see_also SEE ALSO
-
-<b>dcmconv</b>(1)
-
 \section copyright COPYRIGHT
 
-Copyright (C) 2000-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2016-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmdata/docs/dcm2xml.man b/dcmdata/docs/dcm2xml.man
index 985c1a7..b5b1129 100644
--- a/dcmdata/docs/dcm2xml.man
+++ b/dcmdata/docs/dcm2xml.man
@@ -130,7 +130,8 @@ specific character set:
           convert all element values that are affected
           by Specific Character Set (0008,0005) to UTF-8
 
-          # requires support from the libiconv toolkit
+          # requires support from an underlying character encoding library
+          # (see output of --version on which one is available)
 \endverbatim
 
 \subsection output_options output options
@@ -385,6 +386,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2002-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2002-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmdata/docs/dcmconv.man b/dcmdata/docs/dcmconv.man
index f57557f..f142f03 100644
--- a/dcmdata/docs/dcmconv.man
+++ b/dcmdata/docs/dcmconv.man
@@ -149,6 +149,30 @@ handling of wrong delimitation items:
   +rd  --replace-wrong-delim
          replace wrong sequence/item delimitation items
 
+handling of illegal undefined length OB/OW elements:
+
+  -oi  --illegal-obow-rej
+         reject dataset with illegal element (default)
+
+  +oi  --illegal-obow-conv
+         convert undefined length OB/OW element to SQ
+
+handling of VOI LUT Sequence with OW VR and explicit length:
+
+  -vi  --illegal-voi-rej
+         reject dataset with illegal VOI LUT (default)
+
+  +vi  --illegal-voi-conv
+         convert illegal VOI LUT to SQ
+
+handling of explicit length pixel data for encaps. transfer syntaxes:
+
+  -pe  --abort-expl-pixdata
+         abort on explicit length pixel data (default)
+
+  +pe  --use-expl-pixdata
+         use explicit length pixel data
+
 general handling of parser errors:
 
   +Ep  --ignore-parse-errors
@@ -183,7 +207,8 @@ bitstream format of deflated input:
 \verbatim
 specific character set:
 
-  # the following options require support from the libiconv toolkit
+  # the following options require support from an underlying character
+  # encoding library (see output of --version on which one is available)
 
   +U8  --convert-to-utf8
          convert all element values that are affected
@@ -358,6 +383,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 1994-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1994-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmdata/docs/dcmdata.dox b/dcmdata/docs/dcmdata.dox
index dbf84a0..54fd9ad 100644
--- a/dcmdata/docs/dcmdata.dox
+++ b/dcmdata/docs/dcmdata.dox
@@ -32,6 +32,7 @@ This module contains the following command line tools:
 \li \ref img2dcm
 \li \ref pdf2dcm
 \li \ref xml2dcm
+\li \ref dcm2json
 
 \section Files
 
diff --git a/dcmdata/docs/dcmdump.man b/dcmdata/docs/dcmdump.man
index cead41c..54175e9 100644
--- a/dcmdata/docs/dcmdump.man
+++ b/dcmdata/docs/dcmdump.man
@@ -187,6 +187,30 @@ handling of wrong delimitation items:
   +rd  --replace-wrong-delim
          replace wrong sequence/item delimitation items
 
+handling of illegal undefined length OB/OW elements:
+
+  -oi  --illegal-obow-rej
+         reject dataset with illegal element (default)
+
+  +oi  --illegal-obow-conv
+         convert undefined length OB/OW element to SQ
+
+handling of VOI LUT Sequence with OW VR and explicit length:
+
+  -vi  --illegal-voi-rej
+         reject dataset with illegal VOI LUT (default)
+
+  +vi  --illegal-voi-conv
+         convert illegal VOI LUT to SQ
+
+handling of explicit length pixel data for encaps. transfer syntaxes:
+
+  -pe  --abort-expl-pixdata
+         abort on explicit length pixel data (default)
+
+  +pe  --use-expl-pixdata
+         use explicit length pixel data
+
 general handling of parser errors:
 
   +Ep  --ignore-parse-errors
@@ -225,7 +249,8 @@ specific character set:
          convert all element values that are affected
          by Specific Character Set (0008,0005) to UTF-8
 
-         # requires support from the libiconv toolkit
+         # requires support from an underlying character encoding library
+         # (see output of --version on which one is available)
 \endverbatim
 
 \subsection output_options output options
@@ -392,6 +417,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 1994-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1994-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmdata/include/dcmtk/dcmdata/dcbytstr.h b/dcmdata/include/dcmtk/dcmdata/dcbytstr.h
index 3b739e2..ecb8686 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcbytstr.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcbytstr.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -29,6 +29,8 @@
 #include "dcmtk/dcmdata/dcelem.h"
 #include "dcmtk/ofstd/ofstring.h"
 
+// forward declarations
+class DcmJsonFormat;
 
 // include this file in doxygen documentation
 
@@ -54,13 +56,16 @@ class DCMTK_DCMDATA_EXPORT DcmByteString: public DcmElement
 
  public:
 
+    // Make friend with DcmItem which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmItem;
+
     /** constructor.
-     *  Create new element from given tag and length.
+     *  Create new element from given tag.
      *  @param tag DICOM tag for the new element
      *  @param len value length for the new element
      */
-    DcmByteString(const DcmTag &tag,
-                  const Uint32 len = 0);
+    DcmByteString(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
@@ -169,6 +174,7 @@ class DCMTK_DCMDATA_EXPORT DcmByteString: public DcmElement
      *  @param oxfer transfer syntax used to write the data
      *  @param enctype flag, specifying the encoding with undefined or explicit length
      *  @param wcache pointer to write cache object, may be NULL
+     *  @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition write(DcmOutputStream &outStream,
                               const E_TransferSyntax oxfer,
@@ -180,6 +186,7 @@ class DCMTK_DCMDATA_EXPORT DcmByteString: public DcmElement
      *  @param oxfer transfer syntax used to write the data
      *  @param enctype flag, specifying the encoding with undefined or explicit length
      *  @param wcache pointer to write cache object, may be NULL
+     *  @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition writeSignatureFormat(DcmOutputStream &outStream,
                                              const E_TransferSyntax oxfer,
@@ -276,8 +283,29 @@ class DCMTK_DCMDATA_EXPORT DcmByteString: public DcmElement
      */
     virtual OFBool isEmpty(const OFBool normalize = OFTrue);
 
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format);
+
  protected:
 
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmByteString(const DcmTag &tag,
+                  const Uint32 len);
+
     /// internal type used to specify the current string representation
     enum E_StringMode
     {
diff --git a/dcmdata/include/dcmtk/dcmdata/dcchrstr.h b/dcmdata/include/dcmtk/dcmdata/dcchrstr.h
index 50611b9..741ab78 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcchrstr.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcchrstr.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -40,6 +40,8 @@
 
 #include "dcmtk/dcmdata/dcbytstr.h"
 
+// forward declarations
+class DcmJsonFormat;
 
 /** base class for DICOM elements with value representation LO, LT, PN, SH, ST, UC and UT
  */
@@ -128,13 +130,15 @@ class DCMTK_DCMDATA_EXPORT DcmCharString
      */
     virtual OFCondition convertCharacterSet(DcmSpecificCharacterSet &converter);
 
-  protected:
-
-    /** delimiter characters specifying when to switch back to the default character set
-     *  (in case code extension techniques like ISO 2022 are used)
-     *  @param characters delimiter characters to be used for character set conversion
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
      */
-    void setDelimiterChars(const OFString &characters) { delimiterChars = characters; }
+    virtual OFCondition writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format);
+
+  protected:
 
     /** get value of the SpecificCharacterSet element of the surrounding dataset/item
      *  @param charset reference to variable that will store the result value. The
@@ -146,11 +150,13 @@ class DCMTK_DCMDATA_EXPORT DcmCharString
      */
     OFCondition getSpecificCharacterSet(OFString &charset);
 
-  private:
+    /** get delimiter characters specifying when to switch back to the default character
+     *  set (in case code extension techniques like ISO 2022 are used).
+     *  @return the delimiter characters for this VR, if any, a reference to an empty
+     *    OFString if no delimiter characters are defined for this VR.
+     */
+    virtual const OFString& getDelimiterChars() const;
 
-    /// delimiter characters specifying when to switch back to the default character set
-    /// (in case code extension techniques like ISO 2022 are used)
-    OFString delimiterChars;
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dccodec.h b/dcmdata/include/dcmtk/dcmdata/dccodec.h
index 5fad12c..9c65121 100644
--- a/dcmdata/include/dcmtk/dcmdata/dccodec.h
+++ b/dcmdata/include/dcmtk/dcmdata/dccodec.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2011, OFFIS e.V.
+ *  Copyright (C) 1997-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -52,7 +52,7 @@ public:
     virtual ~DcmCodecParameter() {}
 
     /** this methods creates a copy of type DcmCodecParameter *
-     *  it must be overweritten in every subclass.
+     *  it must be overwritten in every subclass.
      *  @return copy of this object
      */
     virtual DcmCodecParameter *clone() const = 0;
diff --git a/dcmdata/include/dcmtk/dcmdata/dcdatset.h b/dcmdata/include/dcmtk/dcmdata/dcdatset.h
index 9df3abc..78a8beb 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcdatset.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcdatset.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -29,6 +29,7 @@
 
 
 // forward declarations
+class DcmJsonFormat;
 class DcmInputStream;
 class DcmOutputStream;
 class DcmRepresentationParameter;
@@ -57,6 +58,7 @@ class DCMTK_DCMDATA_EXPORT DcmDataset
 
     /** assignment operator
      *  @param obj the dataset to be copied
+     *  @return reference to this object
      */
     DcmDataset& operator=(const DcmDataset& obj);
 
@@ -255,6 +257,28 @@ class DCMTK_DCMDATA_EXPORT DcmDataset
     virtual OFCondition writeXML(STD_NAMESPACE ostream &out,
                                  const size_t flags = 0);
 
+    /** write object in JSON format.
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format);
+
+    /** write object in JSON format.
+     *  @tparam Format the formatter class, e.g. DcmJsonFormatPretty.
+     *    Will be deduced automatically.
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    template<typename Format>
+    OFCondition writeJson(STD_NAMESPACE ostream &out,
+                          Format format)
+    {
+        return writeJson(out, OFstatic_cast(DcmJsonFormat&, format));
+    }
+
     /** load object from a DICOM file.
      *  This method only supports DICOM objects stored as a dataset, i.e. without meta header.
      *  Use DcmFileFormat::loadFile() to load files with meta header.
@@ -333,6 +357,17 @@ class DCMTK_DCMDATA_EXPORT DcmDataset
      */
     virtual OFBool checkForSpecificCharacterSet() const { return OFTrue; }
 
+  protected:
+
+    /** perform checks after reading of the dataset is considered complete. The
+     *  idea is that some checks cannot be performed when reading a specific
+     *  element, for different reasons, e.g. the values of other elements have
+     *  to be taken into account.
+     *  @return status, EC_Normal if no problems are found, an error code otherwise
+     */
+    OFCondition doPostReadChecks();
+
+
   private:
 
     /// original transfer syntax of the dataset
diff --git a/dcmdata/include/dcmtk/dcmdata/dcddirif.h b/dcmdata/include/dcmtk/dcmdata/dcddirif.h
index 4f0e273..61b6ba4 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcddirif.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcddirif.h
@@ -1182,6 +1182,7 @@ class DCMTK_DCMDATA_EXPORT DicomDirInterface
      *  @param dataset DICOM dataset containing data of the new record
      *  @param referencedFileID value of the Referenced File ID attribute
      *  @param sourceFilename name of the source DICOM file
+     *  @return OFTrue if the data is consistent, OFFalse otherwise
      */
     OFBool checkReferencedSOPInstance(DcmDirectoryRecord *record,
                                       DcmItem *dataset,
diff --git a/dcmdata/include/dcmtk/dcmdata/dcdeftag.h b/dcmdata/include/dcmtk/dcmdata/dcdeftag.h
index 87606fc..53c22fd 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcdeftag.h
@@ -4,7 +4,7 @@
 **
 **   User: joergr
 **   Host: thinkpad
-**   Date: 2016-06-13 09:57:12
+**   Date: 2017-01-31 14:11:01
 **   Prog: /home/joergr/Source/dcmtk-full/public/dcmdata/libsrc/mkdeftag
 **
 **   From: ../data/dicom.dic
@@ -17,12 +17,12 @@
 
 #include "dcmtk/dcmdata/dctagkey.h"
 
-#define DCM_DICT_DEFTAG_BUILD_DATE "2016-06-13 09:57:12"
+#define DCM_DICT_DEFTAG_BUILD_DATE "2017-01-31 14:11:01"
 
 
 /*
 ** Fixed Tags in ascending (gggg,eeee) order.
-** Number of entries: 4085
+** Number of entries: 4176
 ** Tags with a repeating component (repeating tags) are listed later.
 */
 #define DCM_CommandGroupLength                   DcmTagKey(0x0000, 0x0000)
@@ -181,6 +181,9 @@
 #define DCM_ContextGroupIdentificationSequence   DcmTagKey(0x0008, 0x0123)
 #define DCM_MappingResourceIdentificationSequence DcmTagKey(0x0008, 0x0124)
 #define DCM_TimezoneOffsetFromUTC                DcmTagKey(0x0008, 0x0201)
+#define DCM_ResponsibleGroupCodeSequence         DcmTagKey(0x0008, 0x0220)
+#define DCM_EquipmentModality                    DcmTagKey(0x0008, 0x0221)
+#define DCM_ManufacturerRelatedModelGroup        DcmTagKey(0x0008, 0x0222)
 #define DCM_PrivateDataElementCharacteristicsSequence DcmTagKey(0x0008, 0x0300)
 #define DCM_PrivateGroupReference                DcmTagKey(0x0008, 0x0301)
 #define DCM_PrivateCreatorReference              DcmTagKey(0x0008, 0x0302)
@@ -189,6 +192,15 @@
 #define DCM_DeidentificationActionSequence       DcmTagKey(0x0008, 0x0305)
 #define DCM_IdentifyingPrivateElements           DcmTagKey(0x0008, 0x0306)
 #define DCM_DeidentificationAction               DcmTagKey(0x0008, 0x0307)
+#define DCM_PrivateDataElement                   DcmTagKey(0x0008, 0x0308)
+#define DCM_PrivateDataElementValueMultiplicity  DcmTagKey(0x0008, 0x0309)
+#define DCM_PrivateDataElementValueRepresentation DcmTagKey(0x0008, 0x030a)
+#define DCM_PrivateDataElementNumberOfItems      DcmTagKey(0x0008, 0x030b)
+#define DCM_PrivateDataElementName               DcmTagKey(0x0008, 0x030c)
+#define DCM_PrivateDataElementKeyword            DcmTagKey(0x0008, 0x030d)
+#define DCM_PrivateDataElementDescription        DcmTagKey(0x0008, 0x030e)
+#define DCM_PrivateDataElementEncoding           DcmTagKey(0x0008, 0x030f)
+#define DCM_PrivateDataElementDefinitionSequence DcmTagKey(0x0008, 0x0310)
 #define DCM_RETIRED_NetworkID                    DcmTagKey(0x0008, 0x1000)
 #define DCM_StationName                          DcmTagKey(0x0008, 0x1010)
 #define DCM_StudyDescription                     DcmTagKey(0x0008, 0x1030)
@@ -326,6 +338,10 @@
 #define DCM_StrainSource                         DcmTagKey(0x0010, 0x0217)
 #define DCM_StrainAdditionalInformation          DcmTagKey(0x0010, 0x0218)
 #define DCM_StrainCodeSequence                   DcmTagKey(0x0010, 0x0219)
+#define DCM_GeneticModificationsSequence         DcmTagKey(0x0010, 0x0221)
+#define DCM_GeneticModificationsDescription      DcmTagKey(0x0010, 0x0222)
+#define DCM_GeneticModificationsNomenclature     DcmTagKey(0x0010, 0x0223)
+#define DCM_GeneticModificationsCodeSequence     DcmTagKey(0x0010, 0x0229)
 #define DCM_OtherPatientIDs                      DcmTagKey(0x0010, 0x1000)
 #define DCM_OtherPatientNames                    DcmTagKey(0x0010, 0x1001)
 #define DCM_OtherPatientIDsSequence              DcmTagKey(0x0010, 0x1002)
@@ -333,6 +349,9 @@
 #define DCM_PatientAge                           DcmTagKey(0x0010, 0x1010)
 #define DCM_PatientSize                          DcmTagKey(0x0010, 0x1020)
 #define DCM_PatientSizeCodeSequence              DcmTagKey(0x0010, 0x1021)
+#define DCM_PatientBodyMassIndex                 DcmTagKey(0x0010, 0x1022)
+#define DCM_MeasuredAPDimension                  DcmTagKey(0x0010, 0x1023)
+#define DCM_MeasuredLateralDimension             DcmTagKey(0x0010, 0x1024)
 #define DCM_PatientWeight                        DcmTagKey(0x0010, 0x1030)
 #define DCM_PatientAddress                       DcmTagKey(0x0010, 0x1040)
 #define DCM_RETIRED_InsurancePlanIdentification  DcmTagKey(0x0010, 0x1050)
@@ -388,6 +407,8 @@
 #define DCM_ConsentForClinicalTrialUseSequence   DcmTagKey(0x0012, 0x0083)
 #define DCM_DistributionType                     DcmTagKey(0x0012, 0x0084)
 #define DCM_ConsentForDistributionFlag           DcmTagKey(0x0012, 0x0085)
+#define DCM_EthicsCommitteeApprovalEffectivenessStartDate DcmTagKey(0x0012, 0x0086)
+#define DCM_EthicsCommitteeApprovalEffectivenessEndDate DcmTagKey(0x0012, 0x0087)
 #define DCM_RETIRED_CADFileFormat                DcmTagKey(0x0014, 0x0023)
 #define DCM_RETIRED_ComponentReferenceSystem     DcmTagKey(0x0014, 0x0024)
 #define DCM_ComponentManufacturingProcedure      DcmTagKey(0x0014, 0x0025)
@@ -640,6 +661,8 @@
 #define DCM_GridID                               DcmTagKey(0x0018, 0x1006)
 #define DCM_CassetteID                           DcmTagKey(0x0018, 0x1007)
 #define DCM_GantryID                             DcmTagKey(0x0018, 0x1008)
+#define DCM_UniqueDeviceIdentifier               DcmTagKey(0x0018, 0x1009)
+#define DCM_UDISequence                          DcmTagKey(0x0018, 0x100a)
 #define DCM_SecondaryCaptureDeviceID             DcmTagKey(0x0018, 0x1010)
 #define DCM_RETIRED_HardcopyCreationDeviceID     DcmTagKey(0x0018, 0x1011)
 #define DCM_DateOfSecondaryCapture               DcmTagKey(0x0018, 0x1012)
@@ -1319,6 +1342,65 @@
 #define DCM_TransducerBeamSteeringCodeSequence   DcmTagKey(0x0018, 0x980e)
 #define DCM_TransducerApplicationCodeSequence    DcmTagKey(0x0018, 0x980f)
 #define DCM_ZeroVelocityPixelValue               DcmTagKey(0x0018, 0x9810)
+#define DCM_ReferenceLocationLabel               DcmTagKey(0x0018, 0x9900)
+#define DCM_ReferenceLocationDescription         DcmTagKey(0x0018, 0x9901)
+#define DCM_ReferenceBasisCodeSequence           DcmTagKey(0x0018, 0x9902)
+#define DCM_ReferenceGeometryCodeSequence        DcmTagKey(0x0018, 0x9903)
+#define DCM_OffsetDistance                       DcmTagKey(0x0018, 0x9904)
+#define DCM_OffsetDirection                      DcmTagKey(0x0018, 0x9905)
+#define DCM_PotentialScheduledProtocolCodeSequence DcmTagKey(0x0018, 0x9906)
+#define DCM_PotentialRequestedProcedureCodeSequence DcmTagKey(0x0018, 0x9907)
+#define DCM_PotentialReasonsForProcedure         DcmTagKey(0x0018, 0x9908)
+#define DCM_PotentialReasonsForProcedureCodeSequence DcmTagKey(0x0018, 0x9909)
+#define DCM_PotentialDiagnosticTasks             DcmTagKey(0x0018, 0x990a)
+#define DCM_ContraindicationsCodeSequence        DcmTagKey(0x0018, 0x990b)
+#define DCM_ReferencedDefinedProtocolSequence    DcmTagKey(0x0018, 0x990c)
+#define DCM_ReferencedPerformedProtocolSequence  DcmTagKey(0x0018, 0x990d)
+#define DCM_PredecessorProtocolSequence          DcmTagKey(0x0018, 0x990e)
+#define DCM_ProtocolPlanningInformation          DcmTagKey(0x0018, 0x990f)
+#define DCM_ProtocolDesignRationale              DcmTagKey(0x0018, 0x9910)
+#define DCM_PatientSpecificationSequence         DcmTagKey(0x0018, 0x9911)
+#define DCM_ModelSpecificationSequence           DcmTagKey(0x0018, 0x9912)
+#define DCM_ParametersSpecificationSequence      DcmTagKey(0x0018, 0x9913)
+#define DCM_InstructionSequence                  DcmTagKey(0x0018, 0x9914)
+#define DCM_InstructionIndex                     DcmTagKey(0x0018, 0x9915)
+#define DCM_InstructionText                      DcmTagKey(0x0018, 0x9916)
+#define DCM_InstructionDescription               DcmTagKey(0x0018, 0x9917)
+#define DCM_InstructionPerformedFlag             DcmTagKey(0x0018, 0x9918)
+#define DCM_InstructionPerformedDateTime         DcmTagKey(0x0018, 0x9919)
+#define DCM_InstructionPerformanceComment        DcmTagKey(0x0018, 0x991a)
+#define DCM_PatientPositioningInstructionSequence DcmTagKey(0x0018, 0x991b)
+#define DCM_PositioningMethodCodeSequence        DcmTagKey(0x0018, 0x991c)
+#define DCM_PositioningLandmarkSequence          DcmTagKey(0x0018, 0x991d)
+#define DCM_TargetFrameOfReferenceUID            DcmTagKey(0x0018, 0x991e)
+#define DCM_AcquisitionProtocolElementSpecificationSequence DcmTagKey(0x0018, 0x991f)
+#define DCM_AcquisitionProtocolElementSequence   DcmTagKey(0x0018, 0x9920)
+#define DCM_ProtocolElementNumber                DcmTagKey(0x0018, 0x9921)
+#define DCM_ProtocolElementName                  DcmTagKey(0x0018, 0x9922)
+#define DCM_ProtocolElementCharacteristicsSummary DcmTagKey(0x0018, 0x9923)
+#define DCM_ProtocolElementPurpose               DcmTagKey(0x0018, 0x9924)
+#define DCM_AcquisitionMotion                    DcmTagKey(0x0018, 0x9930)
+#define DCM_AcquisitionStartLocationSequence     DcmTagKey(0x0018, 0x9931)
+#define DCM_AcquisitionEndLocationSequence       DcmTagKey(0x0018, 0x9932)
+#define DCM_ReconstructionProtocolElementSpecificationSequence DcmTagKey(0x0018, 0x9933)
+#define DCM_ReconstructionProtocolElementSequence DcmTagKey(0x0018, 0x9934)
+#define DCM_StorageProtocolElementSpecificationSequence DcmTagKey(0x0018, 0x9935)
+#define DCM_StorageProtocolElementSequence       DcmTagKey(0x0018, 0x9936)
+#define DCM_RequestedSeriesDescription           DcmTagKey(0x0018, 0x9937)
+#define DCM_SourceAcquisitionProtocolElementNumber DcmTagKey(0x0018, 0x9938)
+#define DCM_SourceAcquisitionBeamNumber          DcmTagKey(0x0018, 0x9939)
+#define DCM_SourceReconstructionProtocolElementNumber DcmTagKey(0x0018, 0x993a)
+#define DCM_ReconstructionStartLocationSequence  DcmTagKey(0x0018, 0x993b)
+#define DCM_ReconstructionEndLocationSequence    DcmTagKey(0x0018, 0x993c)
+#define DCM_ReconstructionAlgorithmSequence      DcmTagKey(0x0018, 0x993d)
+#define DCM_ReconstructionTargetCenterLocationSequence DcmTagKey(0x0018, 0x993e)
+#define DCM_ImageFilterDescription               DcmTagKey(0x0018, 0x9941)
+#define DCM_CTDIvolNotificationTrigger           DcmTagKey(0x0018, 0x9942)
+#define DCM_DLPNotificationTrigger               DcmTagKey(0x0018, 0x9943)
+#define DCM_AutoKVPSelectionType                 DcmTagKey(0x0018, 0x9944)
+#define DCM_AutoKVPUpperBound                    DcmTagKey(0x0018, 0x9945)
+#define DCM_AutoKVPLowerBound                    DcmTagKey(0x0018, 0x9946)
+#define DCM_ProtocolDefinedPatientPosition       DcmTagKey(0x0018, 0x9947)
 #define DCM_ContributingEquipmentSequence        DcmTagKey(0x0018, 0xa001)
 #define DCM_ContributionDateTime                 DcmTagKey(0x0018, 0xa002)
 #define DCM_ContributionDescription              DcmTagKey(0x0018, 0xa003)
@@ -1361,6 +1443,7 @@
 #define DCM_RETIRED_AcquisitionsInStudy          DcmTagKey(0x0020, 0x1004)
 #define DCM_RETIRED_ImagesInStudy                DcmTagKey(0x0020, 0x1005)
 #define DCM_RETIRED_Reference                    DcmTagKey(0x0020, 0x1020)
+#define DCM_TargetPositionReferenceIndicator     DcmTagKey(0x0020, 0x103f)
 #define DCM_PositionReferenceIndicator           DcmTagKey(0x0020, 0x1040)
 #define DCM_SliceLocation                        DcmTagKey(0x0020, 0x1041)
 #define DCM_RETIRED_OtherStudyNumbers            DcmTagKey(0x0020, 0x1070)
@@ -1807,6 +1890,9 @@
 #define DCM_SegmentedGreenPaletteColorLookupTableData DcmTagKey(0x0028, 0x1222)
 #define DCM_SegmentedBluePaletteColorLookupTableData DcmTagKey(0x0028, 0x1223)
 #define DCM_SegmentedAlphaPaletteColorLookupTableData DcmTagKey(0x0028, 0x1224)
+#define DCM_StoredValueColorRangeSequence        DcmTagKey(0x0028, 0x1230)
+#define DCM_MinimumStoredValueMapped             DcmTagKey(0x0028, 0x1231)
+#define DCM_MaximumStoredValueMapped             DcmTagKey(0x0028, 0x1232)
 #define DCM_BreastImplantPresent                 DcmTagKey(0x0028, 0x1300)
 #define DCM_PartialView                          DcmTagKey(0x0028, 0x1350)
 #define DCM_PartialViewDescription               DcmTagKey(0x0028, 0x1351)
@@ -2606,6 +2692,7 @@
 #define DCM_SegmentNumber                        DcmTagKey(0x0062, 0x0004)
 #define DCM_SegmentLabel                         DcmTagKey(0x0062, 0x0005)
 #define DCM_SegmentDescription                   DcmTagKey(0x0062, 0x0006)
+#define DCM_SegmentationAlgorithmIdentificationSequence DcmTagKey(0x0062, 0x0007)
 #define DCM_SegmentAlgorithmType                 DcmTagKey(0x0062, 0x0008)
 #define DCM_SegmentAlgorithmName                 DcmTagKey(0x0062, 0x0009)
 #define DCM_SegmentIdentificationSequence        DcmTagKey(0x0062, 0x000a)
@@ -2866,6 +2953,7 @@
 #define DCM_FiducialUID                          DcmTagKey(0x0070, 0x031a)
 #define DCM_FiducialSetSequence                  DcmTagKey(0x0070, 0x031c)
 #define DCM_FiducialSequence                     DcmTagKey(0x0070, 0x031e)
+#define DCM_FiducialsPropertyCategoryCodeSequence DcmTagKey(0x0070, 0x031f)
 #define DCM_GraphicLayerRecommendedDisplayCIELabValue DcmTagKey(0x0070, 0x0401)
 #define DCM_BlendingSequence                     DcmTagKey(0x0070, 0x0402)
 #define DCM_RelativeOpacity                      DcmTagKey(0x0070, 0x0403)
@@ -3188,6 +3276,7 @@
 #define DCM_RecommendedDefaultValueSequence      DcmTagKey(0x0082, 0x0035)
 #define DCM_ConstraintViolationSignificance      DcmTagKey(0x0082, 0x0036)
 #define DCM_ConstraintViolationCondition         DcmTagKey(0x0082, 0x0037)
+#define DCM_ModifiableConstraintFlag             DcmTagKey(0x0082, 0x0038)
 #define DCM_StorageMediaFileSetID                DcmTagKey(0x0088, 0x0130)
 #define DCM_StorageMediaFileSetUID               DcmTagKey(0x0088, 0x0140)
 #define DCM_IconImageSequence                    DcmTagKey(0x0088, 0x0200)
@@ -3441,7 +3530,7 @@
 #define DCM_ROIElementalCompositionSequence      DcmTagKey(0x3006, 0x00b6)
 #define DCM_ROIElementalCompositionAtomicNumber  DcmTagKey(0x3006, 0x00b7)
 #define DCM_ROIElementalCompositionAtomicMassFraction DcmTagKey(0x3006, 0x00b8)
-#define DCM_AdditionalRTROIIdentificationCodeSequence DcmTagKey(0x3006, 0x00b9)
+#define DCM_RETIRED_AdditionalRTROIIdentificationCodeSequence DcmTagKey(0x3006, 0x00b9)
 #define DCM_RETIRED_FrameOfReferenceRelationshipSequence DcmTagKey(0x3006, 0x00c0)
 #define DCM_RETIRED_RelatedFrameOfReferenceUID   DcmTagKey(0x3006, 0x00c2)
 #define DCM_RETIRED_FrameOfReferenceTransformationType DcmTagKey(0x3006, 0x00c4)
@@ -3486,6 +3575,7 @@
 #define DCM_MeasuredDoseReferenceNumber          DcmTagKey(0x3008, 0x0064)
 #define DCM_ParameterPointer                     DcmTagKey(0x3008, 0x0065)
 #define DCM_OverrideReason                       DcmTagKey(0x3008, 0x0066)
+#define DCM_ParameterValueNumber                 DcmTagKey(0x3008, 0x0067)
 #define DCM_CorrectedParameterSequence           DcmTagKey(0x3008, 0x0068)
 #define DCM_CorrectionValue                      DcmTagKey(0x3008, 0x006a)
 #define DCM_CalculatedDoseReferenceSequence      DcmTagKey(0x3008, 0x0070)
@@ -3881,6 +3971,7 @@
 #define DCM_RangeModulatorGatingStartWaterEquivalentThickness DcmTagKey(0x300a, 0x0386)
 #define DCM_RangeModulatorGatingStopWaterEquivalentThickness DcmTagKey(0x300a, 0x0388)
 #define DCM_IsocenterToRangeModulatorDistance    DcmTagKey(0x300a, 0x038a)
+#define DCM_ScanSpotTimeOffset                   DcmTagKey(0x300a, 0x038f)
 #define DCM_ScanSpotTuneID                       DcmTagKey(0x300a, 0x0390)
 #define DCM_ScanSpotPrescribedIndices            DcmTagKey(0x300a, 0x0391)
 #define DCM_NumberOfScanSpotPositions            DcmTagKey(0x300a, 0x0392)
diff --git a/dcmdata/include/dcmtk/dcmdata/dcdirrec.h b/dcmdata/include/dcmtk/dcmdata/dcdirrec.h
index b53c7ff..c409eab 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcdirrec.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcdirrec.h
@@ -237,22 +237,17 @@ public:
      *  @param fromCharset name of the source character set(s) used for the conversion
      *  @param toCharset name of the destination character set used for the conversion.
      *    Only a single value is permitted (i.e. no code extensions).
-     *  @param transliterate mode specifying whether a character that cannot be
-     *    represented in the destination character encoding is approximated through one
-     *    or more characters that look similar to the original one
+     *  @param flags optional flag used to customize the conversion (see DCMTypes::CF_xxx)
      *  @param updateCharset if OFTrue, the SpecificCharacterSet (0008,0005) element is
      *    updated, i.e.\ the current value is either replaced or a new element is inserted
      *    or the existing element is deleted. If OFFalse the SpecificCharacterSet element
      *    remains unchanged.
-     *  @param discardIllegal mode specifying whether characters that cannot be represented
-     *    in the destination character encoding will be silently discarded
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition convertCharacterSet(const OFString &fromCharset,
                                             const OFString &toCharset,
-                                            const OFBool transliterate = OFFalse,
-                                            const OFBool updateCharset = OFFalse,
-                                            const OFBool discardIllegal = OFFalse);
+                                            const size_t flags = 0,
+                                            const OFBool updateCharset = OFFalse);
 
     /** convert all element values that are contained in this record and that are
      *  affected by SpecificCharacterSet to the given destination character set. If not
@@ -263,19 +258,14 @@ public:
      *  denotes the default character repertoire, which is ASCII (7-bit).
      *  @param toCharset name of the destination character set used for the conversion.
      *    Only a single value is permitted (i.e. no code extensions).
-     *  @param transliterate mode specifying whether a character that cannot be
-     *    represented in the destination character encoding is approximated through one
-     *    or more characters that look similar to the original one
+     *  @param flags optional flag used to customize the conversion (see DCMTypes::CF_xxx)
      *  @param ignoreCharset if OFTrue, the value of SpecificCharacterSet is ignored.
      *    Also see checkForSpecificCharacterSet().
-     *  @param discardIllegal mode specifying whether characters that cannot be represented
-     *    in the destination character encoding will be silently discarded
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition convertCharacterSet(const OFString &toCharset,
-                                            const OFBool transliterate = OFFalse,
-                                            const OFBool ignoreCharset = OFFalse,
-                                            const OFBool discardIllegal = OFFalse);
+                                            const size_t flags = 0,
+                                            const OFBool ignoreCharset = OFFalse);
 
     /** convert all element values that are contained in this record and that are
      *  affected by SpecificCharacterSet from the currently selected source character
diff --git a/dcmdata/include/dcmtk/dcmdata/dcelem.h b/dcmdata/include/dcmtk/dcmdata/dcelem.h
index bc330ad..f478c1f 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcelem.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcelem.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -30,6 +30,7 @@
 
 // forward declarations
 class DcmInputStreamFactory;
+class DcmJsonFormat;
 class DcmFileCache;
 class DcmItem;
 
@@ -214,6 +215,14 @@ class DCMTK_DCMDATA_EXPORT DcmElement
     virtual OFCondition writeXML(STD_NAMESPACE ostream &out,
                                  const size_t flags = 0);
 
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format);
+
     /** special write method for creation of digital signatures
      *  @param outStream DICOM output stream
      *  @param oxfer output transfer syntax
@@ -826,6 +835,7 @@ class DCMTK_DCMDATA_EXPORT DcmElement
     /** This function creates a byte array of Length bytes and returns this
      *  array. In case Length is odd, an array of Length+1 bytes will be
      *  created and Length will be increased by 1.
+     *  @return pointer to created byte array
      */
     virtual Uint8 *newValueField();
 
@@ -851,6 +861,20 @@ class DCMTK_DCMDATA_EXPORT DcmElement
     virtual void writeXMLEndTag(STD_NAMESPACE ostream &out,
                                 const size_t flags);
 
+    /** write element start tag in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format the output
+     */
+    virtual void writeJsonOpener(STD_NAMESPACE ostream &out,
+                                 DcmJsonFormat &format);
+
+    /** write element end tag in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format the output
+     */
+    virtual void writeJsonCloser(STD_NAMESPACE ostream &out,
+                                 DcmJsonFormat &format);
+
     /** return the current byte order of the value field
      *  @return current byte order of the value field
      */
diff --git a/dcmdata/include/dcmtk/dcmdata/dcerror.h b/dcmdata/include/dcmtk/dcmdata/dcerror.h
index 5aa0262..3b1c283 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcerror.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcerror.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -70,7 +70,7 @@ const unsigned short OFM_dcmiod   = 29;
 const unsigned short OFM_dcmseg   = 30;
 const unsigned short OFM_dcmfg    = 31;
 const unsigned short OFM_dcmtract = 32;
-
+const unsigned short OFM_dcmpmap  = 33;
 
 // condition constants
 
@@ -161,6 +161,12 @@ extern DCMTK_DCMDATA_EXPORT const OFConditionConst EC_MissingAttribute;
 extern DCMTK_DCMDATA_EXPORT const OFConditionConst EC_InternalError;
 /// Invalid character, e.g. non-ASCII character used but no Specific Character Set defined
 extern DCMTK_DCMDATA_EXPORT const OFConditionConst EC_InvalidCharacter;
+/// Illegal element with OB or OW Value Representation and undefined length encountered
+extern DCMTK_DCMDATA_EXPORT const OFConditionConst EC_UndefinedLengthOBOW;
+/// Illegal VOI LUT Sequence element with OB or OW Value Representation and explicit length encountered
+extern DCMTK_DCMDATA_EXPORT const OFConditionConst EC_VOI_LUT_OBOW;
+/// Pixel data in top level dataset in compressed Transfer Syntax uses explicit length (undefined required)
+extern DCMTK_DCMDATA_EXPORT const OFConditionConst EC_PixelDataExplLengthIllegal;
 //@}
 
 // status code constants
@@ -174,5 +180,4 @@ extern DCMTK_DCMDATA_EXPORT const unsigned short EC_CODE_CannotConvertToXML;
 /// error, cannot determine start fragment (of compressed pixel data)
 extern DCMTK_DCMDATA_EXPORT const unsigned short EC_CODE_CannotDetermineStartFragment;
 
-
 #endif /* !DCERROR_H */
diff --git a/dcmdata/include/dcmtk/dcmdata/dcfilefo.h b/dcmdata/include/dcmtk/dcmdata/dcfilefo.h
index 6a3e331..6d48e74 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcfilefo.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcfilefo.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -31,6 +31,7 @@
 
 // forward declarations
 class DcmMetaInfo;
+class DcmJsonFormat;
 class DcmInputStream;
 class DcmOutputStream;
 class DcmRepresentationParameter;
@@ -128,6 +129,7 @@ class DCMTK_DCMDATA_EXPORT DcmFileFormat
      *  in metainfo and contain correct values.
      *  @param oxfer the transfer syntax which shall be used
      *  @param writeMode flag indicating whether to update the file meta information or not
+     *  @return EC_Normal if valid, an error code otherwise
      */
     virtual OFCondition validateMetaInfo(const E_TransferSyntax oxfer,
                                          const E_FileWriteMode writeMode = EWM_fileformat);
@@ -232,6 +234,28 @@ class DCMTK_DCMDATA_EXPORT DcmFileFormat
     virtual OFCondition writeXML(STD_NAMESPACE ostream &out,
                                  const size_t flags = 0);
 
+    /** write object in JSON format.
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format);
+
+    /** write object in JSON format.
+     *  @tparam Format the formatter class, e.g. DcmJsonFormatPretty.
+     *    Will be deduced automatically.
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    template<typename Format>
+    OFCondition writeJson(STD_NAMESPACE ostream &out,
+                          Format format)
+    {
+        return writeJson(out, OFstatic_cast(DcmJsonFormat&, format));
+    }
+
     /** load object from a DICOM file.
      *  This method supports DICOM objects stored as a file (with meta header) or as a
      *  dataset (without meta header).  By default, the presence of a meta header is
@@ -374,17 +398,12 @@ class DCMTK_DCMDATA_EXPORT DcmFileFormat
      *  @param fromCharset name of the source character set(s) used for the conversion
      *  @param toCharset name of the destination character set used for the conversion.
      *    Only a single value is permitted (i.e. no code extensions).
-     *  @param transliterate mode specifying whether a character that cannot be
-     *    represented in the destination character encoding is approximated through one
-     *    or more characters that look similar to the original one
-     *  @param discardIllegal mode specifying whether characters that cannot be represented
-     *    in the destination character encoding will be silently discarded
+     *  @param flags optional flag used to customize the conversion (see DCMTypes::CF_xxx)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition convertCharacterSet(const OFString &fromCharset,
                                             const OFString &toCharset,
-                                            const OFBool transliterate = OFFalse,
-                                            const OFBool discardIllegal = OFFalse);
+                                            const size_t flags = 0);
 
     /** convert all element values that are contained in the dataset and that are affected
      *  by SpecificCharacterSet to the given destination character set. The source
@@ -397,16 +416,11 @@ class DCMTK_DCMDATA_EXPORT DcmFileFormat
      *      checked nor updated, since the Basic Directory IOD has no SOP Common Module.
      *  @param toCharset name of the destination character set used for the conversion.
      *    Only a single value is permitted (i.e. no code extensions).
-     *  @param transliterate mode specifying whether a character that cannot be
-     *    represented in the destination character encoding is approximated through one
-     *    or more characters that look similar to the original one
-     *  @param discardIllegal mode specifying whether characters that cannot be represented
-     *    in the destination character encoding will be silently discarded
+     *  @param flags optional flag used to customize the conversion (see DCMTypes::CF_xxx)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition convertCharacterSet(const OFString &toCharset,
-                                            const OFBool transliterate = OFFalse,
-                                            const OFBool discardIllegal = OFFalse);
+                                            const size_t flags = 0);
 
     /** convert all element values that are contained in the dataset and that are affected
      *  by SpecificCharacterSet from the currently selected source character set to the
@@ -419,7 +433,8 @@ class DCMTK_DCMDATA_EXPORT DcmFileFormat
     /** convert all element values that are contained in the dataset and that are
      *  affected by SpecificCharacterSet to UTF-8 (Unicode). The value of the
      *  SpecificCharacterSet (0008,0005) element is updated, set or deleted automatically
-     *  if needed. The transliteration mode is disabled - see convertCharacterSet().
+     *  if needed. The transliteration mode is disabled, i.e. the conversion flags are
+     *  explicitly set to 0 - see convertCharacterSet().
      *  NB: In case of a DICOMDIR, the SpecificCharacterSet in the main dataset is neither
      *      checked nor updated, since the Basic Directory IOD has no SOP Common Module.
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmdata/include/dcmtk/dcmdata/dcitem.h b/dcmdata/include/dcmtk/dcmdata/dcitem.h
index 0c91735..a06dfa0 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcitem.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcitem.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,8 +33,9 @@
 
 
 // forward declarations
-class DcmSequenceOfItems;
 class DcmElement;
+class DcmJsonFormat;
+class DcmSequenceOfItems;
 class DcmSpecificCharacterSet;
 
 
@@ -262,6 +263,14 @@ class DCMTK_DCMDATA_EXPORT DcmItem
     virtual OFCondition writeXML(STD_NAMESPACE ostream&out,
                                  const size_t flags = 0);
 
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream&out,
+                                  DcmJsonFormat &format);
+
     /** special write method for creation of digital signatures
      *  @param outStream DICOM output stream
      *  @param oxfer output transfer syntax
@@ -318,22 +327,17 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  @param fromCharset name of the source character set(s) used for the conversion
      *  @param toCharset name of the destination character set used for the conversion.
      *    Only a single value is permitted (i.e. no code extensions).
-     *  @param transliterate mode specifying whether a character that cannot be
-     *    represented in the destination character encoding is approximated through one
-     *    or more characters that look similar to the original one
+     *  @param flags optional flag used to customize the conversion (see DCMTypes::CF_xxx)
      *  @param updateCharset if OFTrue, the SpecificCharacterSet (0008,0005) element is
      *    updated, i.e.\ the current value is either replaced or a new element is inserted
      *    or the existing element is deleted. If OFFalse the SpecificCharacterSet element
      *    remains unchanged.
-     *  @param discardIllegal mode specifying whether characters that cannot be represented
-     *    in the destination character encoding will be silently discarded
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition convertCharacterSet(const OFString &fromCharset,
                                             const OFString &toCharset,
-                                            const OFBool transliterate = OFFalse,
-                                            const OFBool updateCharset = OFFalse,
-                                            const OFBool discardIllegal = OFFalse);
+                                            const size_t flags = 0,
+                                            const OFBool updateCharset = OFFalse);
 
     /** convert all element values that are contained in this item and that are affected
      *  by SpecificCharacterSet to the given destination character set. If not disabled,
@@ -344,19 +348,14 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  default character repertoire, which is ASCII (7-bit).
      *  @param toCharset name of the destination character set used for the conversion.
      *    Only a single value is permitted (i.e. no code extensions).
-     *  @param transliterate mode specifying whether a character that cannot be
-     *    represented in the destination character encoding is approximated through one
-     *    or more characters that look similar to the original one
+     *  @param flags optional flag used to customize the conversion (see DCMTypes::CF_xxx)
      *  @param ignoreCharset if OFTrue, the value of SpecificCharacterSet is ignored.
      *    Also see checkForSpecificCharacterSet().
-     *  @param discardIllegal mode specifying whether characters that cannot be represented
-     *    in the destination character encoding will be silently discarded
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition convertCharacterSet(const OFString &toCharset,
-                                            const OFBool transliterate = OFFalse,
-                                            const OFBool ignoreCharset = OFFalse,
-                                            const OFBool discardIllegal = OFFalse);
+                                            const size_t flags = 0,
+                                            const OFBool ignoreCharset = OFFalse);
 
     /** convert all element values that are contained in this item and that are affected
      *  by SpecificCharacterSet from the currently selected source character set to the
@@ -369,7 +368,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem
     /** convert all element values that are contained in this item and that are affected
      *  by SpecificCharacterSet to UTF-8 (Unicode). The value of the SpecificCharacterSet
      *  (0008,0005) element is updated, set or deleted automatically if needed. The
-     *  transliteration mode is disabled - see convertCharacterSet().
+     *  transliteration mode is disabled, i.e. the conversion flags are explicitly set to
+     *  0 - see convertCharacterSet().
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition convertToUTF8();
@@ -1211,6 +1211,21 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                    DcmItem *item,
                                    const signed long itemNum = -2);
 
+    /** creates new DICOM element from given attribute tag
+     *  @param tag attribute tag of the element to be created
+     *  @return pointer to newly created element upon success, NULL pointer otherwise
+     */
+     static DcmElement *newDicomElement(const DcmTagKey &tag);
+
+    /** creates new DICOM element from given attribute tag
+     *  @param newElement pointer to newly created element returned in this parameter
+     *    upon success, NULL pointer otherwise
+     *  @param tag attribute tag of the element to be created
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition newDicomElement(DcmElement *&newElement,
+                                       const DcmTagKey &tag);
+
   protected:
 
     /// the list of elements maintained by this object
@@ -1228,8 +1243,6 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      */
     offile_off_t fStartPosition;
 
-  protected:
-
     /** This function reads tag and length information from inStream and
      *  returns this information to the caller. When reading information,
      *  the transfer syntax which was passed is accounted for. If the
@@ -1308,6 +1321,31 @@ class DCMTK_DCMDATA_EXPORT DcmItem
     void updateSpecificCharacterSet(OFCondition &status,
                                     const DcmSpecificCharacterSet &converter);
 
+    /** creates new DICOM element from given attribute tag.
+     *  Helper function used by DICOM parser (friend of this class) and thus
+     *  hidden from the public interface. DcmItem's readSubElement() uses
+     *  this function when reading new elements from input data. This method
+     *  internally sets the length of the new element, but does not allocate
+     *  any memory for the element's value. Thus subsequent access to an element
+     *  created by this method can lead to crashes. DcmItem instead initializes
+     *  the value itself a bit later during the read process.
+     *  @param newElement pointer to newly created element returned in this
+     *    parameter upon success, NULL pointer otherwise
+     *  @param tag attribute tag of the element to be created. VR of tag may be
+     *    updated within the method.
+     *  @param length attribute value length of the element to be created
+     *  @param privateCreatorCache cache object for private creator strings in
+     *    the current dataset
+     *  @param readAsUN flag indicating whether parser is currently handling
+     *    UN element that must be read in implicit VR little endian; updated
+     *    upon return
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition newDicomElement(DcmElement *&newElement,
+                                       DcmTag &tag,
+                                       const Uint32 length,
+                                       DcmPrivateTagCache *privateCreatorCache,
+                                       OFBool& readAsUN);
 
   private:
 
@@ -1390,41 +1428,6 @@ inline OFBool operator>=(const DcmItem& lhs, const DcmItem& rhs)
 // SUPPORT FUNCTIONS
 //
 
-/** helper function for DICOM parser. Creates new DICOM element from given attribute tag
- *  @param newElement pointer to newly created element returned in this parameter upon success,
- *    NULL pointer otherwise
- *  @param tag attribute tag of the element to be created
- *  @param length attribute value length of the element to be created
- *  @param privateCreatorCache cache object for private creator strings in the current dataset
- *  @param readAsUN flag indicating whether parser is currently handling a UN element that
- *    must be read in implicit VR little endian; updated upon return
- *  @return EC_Normal upon success, an error code otherwise
- */
-DCMTK_DCMDATA_EXPORT OFCondition newDicomElement(DcmElement *&newElement,
-                            DcmTag &tag,
-                            const Uint32 length,
-                            DcmPrivateTagCache *privateCreatorCache,
-                            OFBool& readAsUN);
-
-/** helper function for DICOM parser. Creates new DICOM element from given attribute tag
- *  @param newElement pointer to newly created element returned in this parameter upon success,
- *    NULL pointer otherwise
- *  @param tag attribute tag of the element to be created
- *  @param length attribute value length of the element to be created
- *  @return EC_Normal upon success, an error code otherwise
- */
-DCMTK_DCMDATA_EXPORT OFCondition newDicomElement(DcmElement *&newElement,
-                            const DcmTag &tag,
-                            const Uint32 length = 0);
-
-/** helper function for DICOM parser. Creates new DICOM element from given attribute tag
- *  @param tag attribute tag of the element to be created
- *  @param length attribute value length of the element to be created
- *  @return pointer to newly created element returned in this parameter upon success,
- *    NULL pointer otherwise
- */
-DCMTK_DCMDATA_EXPORT DcmElement *newDicomElement(const DcmTag &tag,
-                            const Uint32 length = 0);
 
 /** helper function for DcmElement::nextObject.
  *  hierarchically traverses all datasets/items after the position indicated by the call stack
diff --git a/dcmdata/include/dcmtk/dcmdata/dcjson.h b/dcmdata/include/dcmtk/dcmdata/dcjson.h
new file mode 100755
index 0000000..6fa0c27
--- /dev/null
+++ b/dcmdata/include/dcmtk/dcmdata/dcjson.h
@@ -0,0 +1,407 @@
+/*
+*
+*  Copyright (C) 2017, OFFIS e.V.
+*  All rights reserved.  See COPYRIGHT file for details.
+*
+*  This software and supporting documentation were developed by
+*
+*    OFFIS e.V.
+*    R&D Division Health
+*    Escherweg 2
+*    D-26121 Oldenburg, Germany
+*
+*
+*  Module:  dcmdata
+*
+*  Author:  Sebastian Grallert
+*
+*  Purpose: Providing basic JSON formatting functionalities
+*
+*/
+
+#ifndef DCJSON_H
+#define DCJSON_H
+
+#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/ofdefine.h"
+#include "dcmtk/ofstd/ofstring.h"
+
+#include "dcmtk/dcmdata/dctagkey.h"
+
+/** Class for handling JSON format options.
+ *  Base class to implement custom formatting.
+ *  Purpose:
+ *    - individual output formatting
+ *    - normalization of DecimalString and IntegerString e.g.\ normalization of leading zeros
+ *    - escaping of special JSON control characters
+ *    - outputting the correct indention and symbols for "Value", "BulkDataURI", etc.
+ *
+ *  <h3>Usage Example:</h3>
+ *  @code{.cpp}
+    #include "dcmtk/dcmdata/dcjson.h"
+    // ...
+    DcmFileFormat fileformat;
+    if(fileformat.loadFile("test.dcm").good())
+    {
+        // print the DICOM file in JSON format
+        // using the pretty format (muti-line with indention and other whitespace)
+        fileformat.writeJson(COUT, DcmJsonFormatPretty(OFTrue));
+
+        // using the compact (single line, without unneeded whitespace) format
+        fileformat.writeJson(COUT, DcmJsonFormatCompact(OFTrue));
+    }
+    @endcode
+ *  <h3>Implementing a custom formatter:</h3>
+ *  @code{.cpp}
+    struct CustomJsonFormat : DcmJsonFormatPretty
+    {
+      CustomJsonFormat(const OFBool printMetaheaderInformation = OFTrue)
+      : DcmJsonFormatPretty(printMetaheaderInformation)
+      {
+
+      }
+
+      OFString OFJsonFormatExample::space()
+      {
+        // use tabstops instead of spaces for indention
+        return "\t";
+      }
+    }
+    @endcode
+ */
+class DCMTK_DCMDATA_EXPORT DcmJsonFormat
+{
+public:
+    /** A class to create small proxy objects that ease indention handling.
+     *  Each Indention object only contains a reference to the DcmJsonFormat object
+     *  that created it and its only purpose is to call the respective methods
+     *  of that object when one of its overloaded operators is used.
+     */
+    class Indention
+    {
+    public:
+        /** output current indention to an output stream.
+         *  @param out the output stream to use
+         *  @param indention the indention to print
+         *  @return out
+         */
+        friend inline STD_NAMESPACE ostream& operator<<(STD_NAMESPACE ostream& out, const Indention& indention)
+        {
+            indention.printIndention(out);
+            return out;
+        }
+
+        /** increases current indention.
+         *  @return *this
+         */
+        inline Indention& operator++()
+        {
+            m_Format.increaseIndention();
+            return *this;
+        }
+
+        /** decreases current indention
+         *  @return *this
+         */
+        inline Indention& operator--()
+        {
+            m_Format.decreaseIndention();
+            return *this;
+        }
+
+    private:
+        /// allow DcmJsonFormat to use this class' private members
+        friend class DcmJsonFormat;
+
+        /// private constructor, used by DcmJsonFormat
+        inline Indention(DcmJsonFormat& format) : m_Format(format)
+        {
+
+        }
+
+        /// prints the current indention using the parent formatter
+        inline void printIndention(STD_NAMESPACE ostream& out) const
+        {
+            m_Format.printIndention(out);
+        }
+
+        /// reference to the parent formatter object
+        DcmJsonFormat& m_Format;
+    };
+
+    /** Escapes all forbidden control characters in JSON
+     *  @param out output stream to which the escaped String is written
+     *  @param value String that should be escaped
+     */
+    static void escapeControlCharacters(STD_NAMESPACE ostream &out, OFString const &value);
+
+    /** Normalize Decimal String to specific JSON format.
+     *  remove leading zeros, except before dot.
+     *  @b Example:
+     *  @code{.txt}
+        00.123 --> 0.123
+        023.12 --> 23.12
+        -01.00 --> -1.00
+          0200 --> 200
+           .12 --> 0.12
+         000.1 --> 0.1
+        @endcode
+     *  @param value String that should be normalize
+     */
+    static void normalizeDecimalString(OFString &value);
+
+    /** Normalize Integer String to specific JSON format.
+     *  remove leading zeros, except before dot.
+     *  @b Example:
+     *  @code{.txt}
+         000 --> 0
+         023 --> 23
+         -01 --> -1
+        0200 --> 200
+        @endcode
+     *  @param value String that should be normalize
+     */
+    static void normalizeIntegerString(OFString &value);
+
+    /** Prints either null if empty or the string value
+     *  (with all illegal characters escaped).
+     *  @param out output stream to which the Value prefix is written
+     *  @param value String that should be printed
+     */
+    static void printString(STD_NAMESPACE ostream &out,
+                            const OFString &value);
+
+    /** Prints either null if empty or a quoted string
+     *  (with leading and ending quotation marks and all
+     *  illegal characters escaped).
+     *  @param out output stream to which the Value prefix is written
+     *  @param value String that should be printed
+     */
+    static void printValueString(STD_NAMESPACE ostream &out,
+                                 const OFString &value);
+
+    /** Print either null if empty or a Number as normelized IntegerString
+     *  @param out output stream to which the Value prefix is written
+     *  @param value String that should be printed
+     */
+    static void printNumberInteger(STD_NAMESPACE ostream &out,
+                                   OFString &value);
+
+    /** Print either null if empty or a Number as normelized IntegerDecimal
+     *  @param out output stream to which the Value prefix is written
+     *  @param value String that should be printed
+     */
+    static void printNumberDecimal(STD_NAMESPACE ostream &out,
+                                   OFString &value);
+
+    /** Constructor
+     *  @param printMetaheaderInformation parameter that defines if meta information should be written
+     */
+    inline DcmJsonFormat(const OFBool printMetaheaderInformation)
+    : printMetaheaderInformation(printMetaheaderInformation)
+    {
+
+    }
+
+    /** Method to return line break(s)
+     *  @return line break(s).
+     */
+    virtual OFString newline() = 0;
+
+    /** Method to return whitespace(s)
+     *  @return whitespace(s).
+     */
+    virtual OFString space() = 0;
+
+    /** Method to return an indention proxy object for increasing, decreasing or printing indention
+     *  @return an indention proxy object.
+     */
+    inline Indention indent()
+    {
+        return Indention(*this);
+    }
+
+    /** Check if an attribute should be exported as BulkDataURI.
+     *  Override this function to implement bulk data URI output.
+     *  @param tag the tag of the attribute being printed, for letting
+     *    the implementation decide how to handle it.
+     *  @param uri the resulting URI to output.
+     *  @return OFTrue if yes, OFFalse if no.
+     *  @details
+     *  <h3>Usage Example:</h3>
+     *  @code{.cpp}
+        struct BulkDataURIJsonFormat : DcmJsonFormatPretty
+        {
+          CustomJsonFormat(const OFBool printMetaheaderInformation = OFTrue,
+                           ... bulkDataURIDatabase)
+          : DcmJsonFormatPretty(printMetaheaderInformation)
+          , TheDatabase(bulkDataURIDatabase)
+          {
+
+          }
+
+          virtual OFBool asBulkDataURI(const DcmTagKey& tag, OFString& uri)
+          {
+            ... result = TheDatabase.findBulkDataFor(tag);
+            if (result.found())
+            {
+              uri = result.uri();
+              return OFTrue;
+            }
+            return OFFalse;
+          }
+
+          ... TheDatabase;
+        }
+        @endcode
+     */
+    virtual OFBool asBulkDataURI(const DcmTagKey& tag, OFString& uri);
+
+    /** Print the Prefix which for JSON Values needed
+     *  with indention and newlines as in the format Variable given.
+     *  @b Example:
+     *  @code{.txt}
+        ,"Value":[
+        @endcode
+     *  @param out output stream to which the Value prefix is written
+     */
+    virtual void printValuePrefix(STD_NAMESPACE ostream &out);
+
+    /** Print the Suffix which for JSON Values needed
+     *  with indention and newlines as in the format Variable given.
+     *  @b Example:
+     *  @code{.txt}
+        ]\n
+        @endcode
+     *  @param out output stream to which the Value prefix is written
+     */
+    virtual void printValueSuffix(STD_NAMESPACE ostream &out);
+
+    /** Print the Prefix which for JSON BulkDataURI needed
+     *  with indention and newlines as in the format Variable given.
+     *  @b Example:
+     *  @code{.txt}
+        ,"BulkDataURI":
+        @endcode
+     *  @param out output stream to which the Value prefix is written
+     */
+    virtual void printBulkDataURIPrefix(STD_NAMESPACE ostream &out);
+
+    /** Print the Prefix which for JSON InlineBinary needed
+     *  with indention and newlines as the format specifies.
+     *  @b Example:
+     *  @code{.txt}
+        ,"InlineBinary":
+        @endcode
+     *  @param out output stream to which the Value prefix is written
+     */
+    virtual void printInlineBinaryPrefix(STD_NAMESPACE ostream &out);
+
+    /** Print the prefix for array elements (except the first one), with
+     *  indention and newlines as the format specifies.
+     *  @b Example:
+     *  @code{.txt}
+            Example,\n
+            Example...
+        @endcode
+     *  @param out output stream to which the Value prefix is written
+     */
+    virtual void printNextArrayElementPrefix(STD_NAMESPACE ostream &out);
+
+    /** Option that defines if metaheader information should be printed.
+     */
+    const OFBool printMetaheaderInformation;
+
+protected:
+    /** Indent to the specific level.
+     *  @param out output stream to which the indention is written.
+     */
+    virtual void printIndention(STD_NAMESPACE ostream& out) = 0;
+
+    /** Used for increasing the indention level.
+     */
+    virtual void increaseIndention() = 0;
+
+    /** Used for decreasing the indention level.
+     */
+    virtual void decreaseIndention() = 0;
+};
+
+
+/** Subclass for handling JSON formatted output.
+ *  Standard class for formatted output.
+ */
+class DCMTK_DCMDATA_EXPORT DcmJsonFormatPretty : public DcmJsonFormat
+{
+private:
+    /** Variable for the indentenlevel of DcmJsonFormat
+     */
+    unsigned m_IndentionLevel;
+
+public:
+    /** DcmJsonFormatPretty constructor
+     *  @param printMetaheaderInformation Enable/Disable including Metaheader in the output
+     */
+    explicit DcmJsonFormatPretty(const OFBool printMetaheaderInformation = OFTrue);
+
+    /** Indent to the specific level.
+     *  @param out output stream to which the indention is written.
+     */
+    void printIndention(STD_NAMESPACE ostream& out);
+
+    /** Increase the indention level.
+     */
+    void increaseIndention();
+
+    /** Decrease the indention level.
+     */
+    void decreaseIndention();
+
+    /** Print a newline
+     *  @returns a newline
+     */
+    OFString newline();
+
+    /** Print a space
+     *  @returns a space
+     */
+    OFString space();
+};
+
+/** Subclass for handling JSON formatted output.
+ *  Standard class for non-formatted output.
+ */
+class DCMTK_DCMDATA_EXPORT DcmJsonFormatCompact : public DcmJsonFormat
+{
+public:
+    /** DcmJsonFormatCompact constructor
+     *  @param printMetaheaderInformation Enable/Disable including Metaheader in the output
+     */
+    explicit DcmJsonFormatCompact(const OFBool printMetaheaderInformation = OFTrue);
+
+    /** Does nothing.
+     *  @param out output stream to which the indention is written.
+     */
+    void printIndention(STD_NAMESPACE ostream& out);
+
+    /** Does nothing.
+     */
+    void increaseIndention();
+
+    /** Does nothing.
+     */
+    void decreaseIndention();
+
+    /** Does nothing.
+     *  @returns a empty String.
+     */
+    OFString newline();
+
+    /** Does nothing.
+     *  @returns a empty String.
+     */
+    OFString space();
+};
+
+#endif /* DCJSON_H */
diff --git a/dcmdata/include/dcmtk/dcmdata/dcmatch.h b/dcmdata/include/dcmtk/dcmdata/dcmatch.h
new file mode 100644
index 0000000..31e1b7e
--- /dev/null
+++ b/dcmdata/include/dcmtk/dcmdata/dcmatch.h
@@ -0,0 +1,246 @@
+/*
+ *
+ *  Copyright (C) 2017, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmdata
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: Implementing attribute matching for being used in dcmqrdb and dcmwlm etc.
+ *
+ */
+
+
+#ifndef DCMATCH_H
+#define DCMATCH_H
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/ofcond.h"
+#include "dcmtk/dcmdata/dcdefine.h"
+
+// forward declaration of DcmVR
+class DcmVR;
+
+/** A class that implements the different kinds attribute matching.
+ *  DcmAttributeMatching may either be used by directly calling the appropriate matching function,
+ *  e.g. wildCardMatching() or by creating a DcmAttributeMatching object for a specific VR.
+ *  In the latter case, DcmAttributeMatching will choose the appropriate matching function for
+ *  the VR in its constructor and remember the result during its lifetime.
+ */
+class DCMTK_DCMDATA_EXPORT DcmAttributeMatching
+{
+public:
+
+    /** Match the query data and the candidate using Single Value Matching, as defined by the DICOM standard.
+     *  @param queryData a pointer to some data.
+     *  @param querySize the size (in bytes) of the data queryData refers to.
+     *  @param candidateData a pointer to some data.
+     *  @param candidateSize the size (in bytes) of the data candidateData refers to.
+     *  @return OFTrue if the query and the candidate match, OFFalse otherwise.
+     *  @details
+     *  If querySize equals zero, the result will be OFTrue, as appropriate for Universal Matching.
+     *  Otherwise the result will only be OFTrue if both data pieces have the same size are bitwise
+     *  equal.
+     */
+    static OFBool singleValueMatching( const void* queryData, const size_t querySize,
+                                       const void* candidateData, const size_t candidateSize );
+
+    /** Match the query and the candidate string using Wild Card Matching, as defined by the DICOM standard.
+     *  @param queryData a pointer to a character string potentially containing Wild Card characters.
+     *  @param querySize the size (in bytes) of the string queryData refers to.
+     *  @param candidateData a pointer to a character string.
+     *  @param candidateSize the size (in bytes) of the string candidateData refers to.
+     *  @return OFTrue if the query and the candidate match, OFFalse otherwise.
+     *  @details
+     *  If querySize equals zero, the result will be OFTrue, as appropriate for Universal Matching.
+     *  If the query contains no Wild Card characters ('?' and '*') the result will be the same
+     *  as if singleValueMatching() was called.
+     *  @note It is therefore not necessary to check for Wild Card characters and manually decided whether
+     *    to use wildCardMatching() or singleValueMatching(), simply use wildCardMatching() if the query
+     *    may <i>potentially</i> contain Wild Card characters.
+     */
+    static OFBool wildCardMatching( const void* queryData, const size_t querySize,
+                                    const void* candidateData, const size_t candidateSize );
+
+    /** Match the query date or date range and the candidate date.
+     *  @param queryData a pointer to a character string that contains a DICOM Date (DA) or
+     *    a date range.
+     *  @param querySize the size (in bytes) of the string queryData refers to.
+     *  @param candidateData a pointer to a character string that contains a DICOM Date (DA).
+     *  @param candidateSize the size (in bytes) of the string candidateData refers to.
+     *  @return OFTrue if the query and the candidate match, OFFalse otherwise.
+     *  @details
+     *  If querySize equals zero, the result will be OFTrue, as appropriate for Universal Matching.
+     *  Otherwise query will be converted to an OFDate or a range defined by two OFDates and candidate
+     *  will be converted to an OFDate. It will then be tested whether the candidate date lies within
+     *  the range given by the query or is equal to the queried date as appropriate. If the conversion
+     *  to OFDate is unsuccessful for any of the dates, the result will be OFFalse.
+     */
+    static OFBool rangeMatchingDate( const void* queryData, const size_t querySize,
+                                     const void* candidateData, const size_t candidateSize );
+
+    /** Match the query time or time range and the candidate time.
+     *  @param queryData a pointer to a character string that contains a DICOM Time (TM) or
+     *    a time range.
+     *  @param querySize the size (in bytes) of the string queryData refers to.
+     *  @param candidateData a pointer to a character string that contains a DICOM Time (TM).
+     *  @param candidateSize the size (in bytes) of the string candidateData refers to.
+     *  @return OFTrue if the query and the candidate match, OFFalse otherwise.
+     *  @details
+     *  If querySize equals zero, the result will be OFTrue, as appropriate for Universal Matching.
+     *  Otherwise query will be converted to an OFTime or a range defined by two OFTimes and candidate
+     *  will be converted to an OFTime. It will then be tested whether the candidate time lies within
+     *  the range given by the query or is equal to the queried time as appropriate. If the conversion
+     *  to OFTime is unsuccessful for any of the times, the result will be OFFalse.
+     */
+    static OFBool rangeMatchingTime( const void* queryData, const size_t querySize,
+                                     const void* candidateData, const size_t candidateSize );
+
+    /** Match the query date time or date time range and the candidate date time.
+     *  @param queryData a pointer to a character string that contains a DICOM Date Time (DT) or
+     *    a date time range.
+     *  @param querySize the size (in bytes) of the string queryData refers to.
+     *  @param candidateData a pointer to a character string that contains a DICOM Date Time (DT).
+     *  @param candidateSize the size (in bytes) of the string candidateData refers to.
+     *  @return OFTrue if the query and the candidate match, OFFalse otherwise.
+     *  @details
+     *  If querySize equals zero, the result will be OFTrue, as appropriate for Universal Matching.
+     *  Otherwise query will be converted to an OFDateTime or a range defined by two OFDateTimes and
+     *  candidate will be converted to an OFDateTime. It will then be tested whether the candidate date
+     *  time lies within the range given by the query or is equal to the queried date time as appropriate.
+     *  If the conversion to OFDateTime is unsuccessful for any of the date times, the result will be
+     *  OFFalse.
+     */
+    static OFBool rangeMatchingDateTime( const void* queryData, const size_t querySize,
+                                         const void* candidateData, const size_t candidateSize );
+
+    /** Match the query date and time or date and time range and the candidate date and time using
+     *  combined datetime matching.
+     *  @param dateQueryData a pointer to a character string that contains a DICOM Date (DA) or
+     *    a date range.
+     *  @param dateQuerySize the size (in bytes) of the string dateQueryData refers to.
+     *  @param timeQueryData a pointer to a character string that contains a DICOM Time (TM) or
+     *    a time range.
+     *  @param timeQuerySize the size (in bytes) of the string timeQueryData refers to.
+     *  @param dateCandidateData a pointer to a character string that contains a DICOM Date (DA).
+     *  @param dateCandidateSize the size (in bytes) of the string dateCandidateData refers to.
+     *  @param timeCandidateData a pointer to a character string that contains a DICOM Time (TM).
+     *  @param timeCandidateSize the size (in bytes) of the string timeCandidateData refers to.
+     *  @return OFTrue if the query and the candidate match, OFFalse otherwise.
+     *  @details
+     *  If dateQuerySize and timeQuerySize equal zero, the result will be OFTrue, as appropriate for
+     *  Universal Matching.
+     *  Otherwise the query will be converted to an OFDateTime or a range defined by two OFDateTimes and
+     *  candidate will be converted to an OFDateTime as defined by combined datetime matching.
+     *  It will then be tested whether the candidate date time lies within the range given by the query or is
+     *  equal to the queried date time as appropriate.
+     *  If the conversion to OFDateTime is unsuccessful for any of the dates or times, the result will
+     *  be OFFalse.
+     */
+    static OFBool rangeMatchingDateTime( const void* dateQueryData, const size_t dateQuerySize,
+                                         const void* timeQueryData, const size_t timeQuerySize,
+                                         const void* dateCandidateData, const size_t dateCandidateSize,
+                                         const void* timeCandidateData, const size_t timeCandidateSize );
+
+    /** Match the query list of UIDs with the candidate UID.
+     *  @param queryData a pointer to a character string that contains a backslash separated list of UIDs.
+     *  @param querySize the size (in bytes) of the string queryData refers to.
+     *  @param candidateData a pointer to a character string that contains an UID.
+     *  @param candidateSize the size (in bytes) of the string candidateData refers to.
+     *  @return OFTrue if at least one of the UIDs from the query match the candidate, OFFalse otherwise.
+     *  @details
+     *  If querySize equals zero, the result will be OFTrue, as appropriate for Universal Matching.
+     */
+    static OFBool listOfUIDMatching( const void* queryData, const size_t querySize,
+                                     const void* candidateData, const size_t candidateSize );
+
+    /** Default construct an empty DcmAttributeMatching object.
+     */
+    DcmAttributeMatching();
+
+    /** Construct an DcmAttributeMatching object that is appropriate for the given VR.
+     *  @param vr the DICOM Value Representation of the data that this object will be
+     *    used on for matching.
+     */
+    DcmAttributeMatching( const DcmVR vr );
+
+    /** Test whether this object may be used for matching, i.e.\ whether it is not empty.
+     *  @return OFTrue if this object may be used for matching, OFFalse otherwise.
+     */
+#ifdef DCMTK_USE_CXX11_STL
+    explicit
+#endif
+    operator OFBool() const;
+
+    /** Test whether this object cannot be used for matching, i.e.\ whether it is empty.
+     *  @return OFTrue if this object cannot be used for matching, OFFalse otherwise.
+     */
+    OFBool operator!() const;
+
+    /** Match the given query and candidate using the internally stored matching function.
+     *  @param queryData a pointer some DICOM data that uses the same VR that was given
+     *    during construction of this object.
+     *  @param querySize the size (in bytes) of the data queryData refers to.
+     *  @param candidateData a pointer to some DICOM data that used the same VR that was
+     *    given during construction of this object.
+     *  @param candidateSize the size (in bytes) of the data candidateData refers to.
+     *  @return compares the query data with the candidate data using the appropriate
+     *    matching function for the given VR, returns OFTrue if they match, OFFalse
+     *    if not or if an error occured.
+     *  @details
+     *  @pre (*this) must have been constructed for a specific VR that matches the one
+     *    of the query and candidate data, i.e.\ !(*this) must evaluate to OFFalse.
+     *  @details
+     *  <h3>Usage Example</h3>
+     *  @code{.cpp}
+        DcmAttributeMatching match( EVR_DA );
+        match( "20160101-20181231", 17, "20170713", 8 ); // -> OFTrue
+        match = DcmAttributeMatching( EVR_TM );
+        match( "-12", 3, "11", 2 ) // -> OFTrue
+        DcmAttributeMatching( EVR_PN )( "M?ller", 6, "^Martin", 7 ) // -> OFFalse
+        @endcode
+     */
+    OFBool operator()( const void* queryData, const size_t querySize,
+                       const void* candidateData, const size_t candidateSize ) const;
+
+private:
+
+    /// Helper class for implementing Wild Card Matching
+    class WildCardMatcher;
+
+    /// Helper class for parsing dash-separated value pairs, as in date/time ranges.
+    class DashSeparated;
+
+    /** Helper template function for generically implementing range matching.
+     *  @tparam T the type to parse the data int (e.g. OFDate), deduced automatically.
+     *  @param parse a pointer to a function that parses a string as a T.
+     *  @param queryData a pointer to a character string that can be parsed as a T or
+     *    a dash separated range of two Ts.
+     *  @param querySize the size (in bytes) of the string queryData refers to.
+     *  @param candidateData a pointer to a character string that can be parsed as a T
+     *    for comparing it with the query.
+     *  @param candidateSize the size (in bytes) of the string candidateData refers to.
+     *  @return OFTrue if parsing of the query and the candidate as a T was successful
+     *    and the T value represented by candidateData equals the one from the query or
+     *    lies within the range defined by the query. OFFalse otherwise.
+     */
+    template<typename T>
+    static OFBool rangeMatchingTemplate( OFCondition (*parse)(const char*,const size_t,T&),
+                                         const void* queryData, const size_t querySize,
+                                         const void* candidateData, const size_t candidateSize);
+
+    /// A pointer to one of the matching functions that is appropriate for the given VR.
+    OFBool (*m_pMatch)(const void*,const size_t,const void*,const size_t);
+};
+
+#endif // DCMATCH_H
diff --git a/dcmdata/include/dcmtk/dcmdata/dcmetinf.h b/dcmdata/include/dcmtk/dcmdata/dcmetinf.h
index 8fc3903..f0c880d 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcmetinf.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcmetinf.h
@@ -27,6 +27,9 @@
 
 #include "dcmtk/dcmdata/dcitem.h"
 
+// forward declarations
+class DcmJsonFormat;
+
 
 /// magic string identifying DICOM files
 #define DCM_Magic "DICM"
@@ -60,6 +63,7 @@ class DCMTK_DCMDATA_EXPORT DcmMetaInfo
 
     /** assignment operator.
      *  @param obj the metainfo to be copied
+     *  @return reference to this object
      */
     DcmMetaInfo &operator=(const DcmMetaInfo &obj);
 
@@ -99,7 +103,8 @@ class DCMTK_DCMDATA_EXPORT DcmMetaInfo
     virtual void removeInvalidGroups();
 
     /** return the transfer syntax in which this dataset was originally read.
-     *  @return transfer syntax in which this dataset was originally read, EXS_Unknown if the dataset was created in memory
+     *  @return transfer syntax in which this dataset was originally read, EXS_Unknown
+     *    if the dataset was created in memory
      */
     E_TransferSyntax getOriginalXfer() const;
 
@@ -176,6 +181,14 @@ class DCMTK_DCMDATA_EXPORT DcmMetaInfo
     virtual OFCondition writeXML(STD_NAMESPACE ostream &out,
                                  const size_t flags = 0);
 
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format);
+
     /** load object from a DICOM file.  If the file preamble is missing, an error is returned.
      *  @param fileName name of the file to load (may contain wide chars if support enabled).
      *    Since there are various constructors for the OFFilename class, a "char *", "OFString"
@@ -213,6 +226,7 @@ class DCMTK_DCMDATA_EXPORT DcmMetaInfo
 
     /** peeks into the input stream and checks whether the next element
      *  is group 0002, i.e. belongs to the meta-header
+     *  @param inStream input stream
      *  @return true if next element is part of meta-header, false otherwise
      */
     OFBool nextTagIsMeta(DcmInputStream &inStream);
@@ -225,7 +239,8 @@ class DCMTK_DCMDATA_EXPORT DcmMetaInfo
      *  @param xtag attribute tag for group length
      *  @param glenc handling of group length encoding element in dataset
      *  @param headerLen output parameter; length of meta-header as encoded in group length element
-     *  @param bytesRead output parameter; number of bytes read when reading group length (for counting the remaining number of meta-header bytes)
+     *  @param bytesRead output parameter; number of bytes read when reading group length
+     *    (for counting the remaining number of meta-header bytes)
      *  @param maxReadLength max read length for elements
      *  @return EC_Normal if successful, an error code otherwise
      */
diff --git a/dcmdata/include/dcmtk/dcmdata/dcobject.h b/dcmdata/include/dcmtk/dcmdata/dcobject.h
index ed8c18d..4dadd59 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcobject.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcobject.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -36,6 +36,7 @@
 
 // forward declarations
 class DcmItem;
+class DcmJsonFormat;
 class DcmOutputStream;
 class DcmInputStream;
 class DcmWriteCache;
@@ -199,6 +200,32 @@ extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmIgnoreFileMetaInformationGroupLe
  */
 extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmReplaceWrongDelimitationItem; /* default OFFalse */
 
+/** This flag enables the "silent" conversion of illegal OB/OW elements
+ *  with undefined length (other than PixelData) to SQ elements while reading.
+ *  The default behaviour is to reject such elements with an error message.
+ */
+extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmConvertUndefinedLengthOBOWtoSQ; /* default OFFalse */
+
+/** This flag enables the "silent" conversion of incorrectly encoded
+ *  VOI LUT Sequence elements with VR=OW and explicit length into a sequence.
+ *  This incorrect encoding was detected "in the wild" in 2016.
+ */
+extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmConvertVOILUTSequenceOWtoSQ; /* default OFFalse */
+
+/** This flag influences the behaviour when reading Pixel Data elements.
+ *  Pixel Data in those top level datasets that are using a compression-enabled
+ *  Transfer Syntax (with few exceptions such as Deflated TS),
+ *  is being stored in an encapsulated way. That means DICOM requires that the
+ *  Pixel Data then element uses an undefined length and internally uses a
+ *  pseudo sequence structure called Pixel Sequence with Pixel items inside.
+ *  If this flag is set to OFFalse (default), an error is reported when reading
+ *  datasets with encapsulated Transfer Syntaxes but with Pixel Data being
+ *  stored using explicit length encoding.
+ *  If this flag is set to OFTrue, such an invalid Pixel Data encoding is
+ *  accepted and the element is read with the given length as if it would be the
+ *  case for datasets in uncompressed transfer syntaxes.
+ */
+extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmUseExplLengthPixDataForEncTS; /* default OFFalse */
 
 /** Abstract base class for most classes in module dcmdata. As a rule of thumb,
  *  everything that is either a dataset or that can be identified with a DICOM
@@ -350,6 +377,7 @@ class DCMTK_DCMDATA_EXPORT DcmObject
 
     /** set parent of this object. NULL means no parent.
      *  NB: This method is used by derived classes for internal purposes only.
+     *  @param parent pointer to the parent of this object
      */
     inline void setParent(DcmObject *parent) { Parent = parent; }
 
@@ -453,6 +481,14 @@ class DCMTK_DCMDATA_EXPORT DcmObject
     virtual OFCondition writeXML(STD_NAMESPACE ostream&out,
                                  const size_t flags = 0);
 
+    /** write object in JSON format to a stream
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, always returns EC_Illegal Call
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream&out,
+                                  DcmJsonFormat &format);
+
     /** special write method for creation of digital signatures (abstract)
      *  @param outStream DICOM output stream
      *  @param oxfer output transfer syntax
diff --git a/dcmdata/include/dcmtk/dcmdata/dcovlay.h b/dcmdata/include/dcmtk/dcmdata/dcovlay.h
index ae34077..062f904 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcovlay.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcovlay.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -57,6 +57,7 @@ public:
 
     /** copy assignment operator
      *  @param obj element to be copied
+     *  @return reference to this object
      */
     DcmOverlayData &operator=(const DcmOverlayData &obj)
     {
diff --git a/dcmdata/include/dcmtk/dcmdata/dcpixseq.h b/dcmdata/include/dcmtk/dcmdata/dcpixseq.h
index 647522b..ccb7db5 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcpixseq.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcpixseq.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -53,11 +53,14 @@ class DCMTK_DCMDATA_EXPORT DcmPixelSequence : public DcmSequenceOfItems
 {
 public:
 
+    // Make friend with DcmPixelData which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmPixelData;
+
     /** constructor
      *  @param tag attribute tag
-     *  @param len length of the attribute value
      */
-    DcmPixelSequence(const DcmTag &tag, const Uint32 len = 0);
+    DcmPixelSequence(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
@@ -69,6 +72,7 @@ public:
 
     /** copy assignment operator
      *  @param obj element to be copied
+     *  @return reference to this object
      */
     DcmPixelSequence &operator=(const DcmPixelSequence &obj);
 
@@ -242,6 +246,19 @@ public:
 
 protected:
 
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  @param tag attribute tag
+     *  @param len length of the attribute value
+     */
+    DcmPixelSequence(const DcmTag &tag,
+                     const Uint32 len);
+
     /** helper function for read(). Create sub-object (pixel item) of the
      *  appropriate type depending on the tag.
      *  @param newObject upon success, a pointer to the newly created object is returned in this parameter
diff --git a/dcmdata/include/dcmtk/dcmdata/dcpxitem.h b/dcmdata/include/dcmtk/dcmdata/dcpxitem.h
index 45cd6db..220cc94 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcpxitem.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcpxitem.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -63,6 +63,7 @@ class DCMTK_DCMDATA_EXPORT DcmPixelItem : public DcmOtherByteOtherWord
 
     /** copy assignment operator
      *  @param obj element to be copied
+     *  @return reference to this object
      */
     DcmPixelItem &operator=(const DcmPixelItem &obj) { DcmOtherByteOtherWord::operator=(obj); return *this; }
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcsequen.h b/dcmdata/include/dcmtk/dcmdata/dcsequen.h
index 5677d21..f4839db 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcsequen.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcsequen.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -31,6 +31,9 @@
 #include "dcmtk/dcmdata/dclist.h"
 #include "dcmtk/dcmdata/dcstack.h"
 
+// forward declarations
+class DcmJsonFormat;
+
 /** class representing a DICOM Sequence of Items (SQ).
  *  This class is derived from class DcmElement (and not from DcmObject) despite the fact
  *  that sequences have no value field as such, they maintain a list of items. However,
@@ -41,15 +44,14 @@ class DCMTK_DCMDATA_EXPORT DcmSequenceOfItems : public DcmElement
 {
 public:
 
+    // Make friend with DcmItem which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmItem;
+
     /** constructor
      *  @param tag attribute tag
-     *  @param len length of the attribute value
-     *  @param readAsUN flag indicating whether the sequence should be
-     *  read (interpreted) as a UN element with Implicit VR Little Endian encoding
      */
-    DcmSequenceOfItems(const DcmTag &tag,
-                       const Uint32 len = 0,
-                       OFBool readAsUN = OFFalse);
+    DcmSequenceOfItems(const DcmTag &tag);
 
     /** copy constructor
      *  @param oldSeq element to be copied
@@ -61,6 +63,7 @@ public:
 
     /** copy assignment operator
      *  @param obj element to be copied
+     *  @return reference to this object
      */
     DcmSequenceOfItems &operator=(const DcmSequenceOfItems &obj);
 
@@ -280,6 +283,14 @@ public:
     virtual OFCondition writeXML(STD_NAMESPACE ostream&out,
                                  const size_t flags = 0);
 
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream&out,
+                                  DcmJsonFormat &format);
+
     /** special write method for creation of digital signatures
      *  @param outStream DICOM output stream
      *  @param oxfer output transfer syntax
@@ -501,6 +512,22 @@ public:
 
 protected:
 
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  @param tag attribute tag
+     *  @param len length of the attribute value
+     *  @param readAsUN flag indicating whether the sequence should be
+     *  read (interpreted) as a UN element with Implicit VR Little Endian encoding
+     */
+    DcmSequenceOfItems(const DcmTag &tag,
+                       const Uint32 len,
+                       OFBool readAsUN = OFFalse);
+
     /** This function reads tag and length information from inStream and
      *  returns this information to the caller. When reading information,
      *  the transfer syntax which was passed is accounted for. If the
diff --git a/dcmdata/include/dcmtk/dcmdata/dcspchrs.h b/dcmdata/include/dcmtk/dcmdata/dcspchrs.h
index ca0f36c..d4d8fc0 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcspchrs.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcspchrs.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2015, OFFIS e.V.
+ *  Copyright (C) 2011-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -36,7 +36,7 @@ class DcmItem;
 
 /** A class for managing and converting between different DICOM character sets.
  *  The conversion relies on the OFCharacterEncoding class, which again relies
- *  on the libiconv toolkit (if available).
+ *  on an underlying character encoding library (e.g. libiconv or ICU).
  *  @note Please note that a current limitation is that only a single value is
  *    allowed for the destination character set (i.e. no code extensions).  Of
  *    course, for the source character set, also multiple values are supported.
@@ -46,7 +46,7 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
 
   public:
 
-    /** constructor. Initializes the member variables.
+    /** constructor.  Initializes the member variables.
      */
     DcmSpecificCharacterSet();
 
@@ -60,6 +60,23 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
      */
     void clear();
 
+    /** query whether selectCharacterSet() has successfully been called for this
+     *  object, i.e.\ whether convertString() may be called.
+     *  @return OFTrue if selectCharacterSet() was successfully called before,
+     *    OFFalse if not (or clear() has been called in the meantime).
+     */
+#ifdef DCMTK_USE_CXX11_STL
+    explicit
+#endif
+    operator OFBool() const;
+
+    /** query whether selectCharacterSet() has <b>not</b> been called before,
+     *  i.e.\ convertString() would fail.
+     *  @return OFTrue if selectCharacterSet() must be called before using
+     *    convertString(), OFFalse if it has already been called.
+     */
+    OFBool operator!() const;
+
     /** get currently selected source DICOM character set(s).  Please note that
      *  the returned string can contain multiple values (defined terms separated
      *  by a backslash) if code extension techniques are used.  Furthermore,
@@ -78,30 +95,22 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
      */
     const OFString &getDestinationCharacterSet() const;
 
-    /** get currently selected destination encoding, i.e. the name of the
-     *  character set as used by libiconv for the conversion.  If code
-     *  extension techniques are used to switch between different character
-     *  encodings, the main/default encoding is returned.
+    /** get currently selected destination encoding, i.e.\ the name of the
+     *  character set as used by the underlying character encoding library for
+     *  the conversion.  If code extension techniques are used to switch between
+     *  different character encodings, the main/default encoding is returned.
      *  @return currently selected destination encoding or an empty string if
      *    none is selected
      */
     const OFString &getDestinationEncoding() const;
 
-    /** get mode specifying whether a character that cannot be represented in
-     *  the destination character encoding is approximated through one or more
-     *  characters that look similar to the original one.  See
-     *  selectCharacterSet().
-     *  @return current value of the mode.  OFTrue means that the mode is
-     *    enabled, OFFalse means disabled.
+    /** @copydoc OFCharacterEncoding::getConversionFlags()
      */
-    OFBool getTransliterationMode() const;
+    unsigned getConversionFlags() const;
 
-    /** get mode specifying whether characters that cannot be represented in
-     *  the destination character encoding will be silently discarded
-     *  @return current value of the mode.  OFTrue means that the mode is
-     *    enabled, OFFalse means disabled.
+    /** @copydoc OFCharacterEncoding::setConversionFlags()
      */
-    OFBool getDiscardIllegalSequenceMode() const;
+    OFCondition setConversionFlags(const unsigned flags);
 
     /** select DICOM character sets for the input and output string, between
      *  which subsequent calls of convertString() convert.  The defined terms
@@ -112,32 +121,20 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
      *  (separated by a backslash) code extension techniques are used and
      *  escape sequences may be encountered in the source string to switch
      *  between the specified character sets.
-     *  @param  fromCharset     name of the source character set(s) used for the
-     *                          input string as given in the DICOM attribute
-     *                          Specific Character Set (0008,0005).  Leading and
-     *                          trailing spaces are removed automatically (if
-     *                          present).
-     *  @param  toCharset       name of the destination character set used for
-     *                          the output string.  Only a single value is
-     *                          permitted (no code extensions).  Leading and
-     *                          trailing spaces are removed automatically (if
-     *                          present).  The default value is "ISO_IR 192"
-     *                          (Unicode in UTF-8).
-     *  @param  transliterate   mode specifying whether a character that cannot
-     *                          be represented in the destination character
-     *                          encoding is approximated through one or more
-     *                          characters that look similar to the original
-     *                          one.  By default, this mode is disabled.
-     *  @param  discardIllegal  mode specifying whether characters that cannot
-     *                          be represented in the destination character
-     *                          encoding will be silently discarded.  By
-     *                          default, this mode is disabled.
+     *  @param  fromCharset  name of the source character set(s) used for the
+     *                       input string as given in the DICOM attribute
+     *                       Specific Character Set (0008,0005).  Leading and
+     *                       trailing spaces are removed automatically (if
+     *                       present).
+     *  @param  toCharset    name of the destination character set used for the
+     *                       output string.  Only a single value is permitted
+     *                       (no code extensions).  Leading and trailing spaces
+     *                       are removed automatically (if present).  The
+     *                       default value is "ISO_IR 192" (Unicode in UTF-8).
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition selectCharacterSet(const OFString &fromCharset,
-                                   const OFString &toCharset = "ISO_IR 192",
-                                   const OFBool transliterate = OFFalse,
-                                   const OFBool discardIllegal = OFFalse);
+                                   const OFString &toCharset = "ISO_IR 192");
 
     /** select DICOM character sets for the input and output string, between
      *  which subsequent calls of convertString() convert.  The source
@@ -151,32 +148,20 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
      *  code extension techniques are used and escape sequences may be
      *  encountered in the source string to switch between the specified
      *  character sets.
-     *  @param  dataset         DICOM dataset or item from which the source
-     *                          character set should be retrieved.  If the data
-     *                          element Specific Character Set (0008,0005) is
-     *                          empty or missing, the default character set
-     *                          (i.e. ASCII) is used.
-     *  @param  toCharset       name of the destination character set used for
-     *                          the output string.  Only a single value is
-     *                          permitted (no code extensions).  Leading and
-     *                          trailing spaces are removed automatically (if
-     *                          present).  The default value is "ISO_IR 192"
-     *                          (Unicode in UTF-8).
-     *  @param  transliterate   mode specifying whether a character that cannot
-     *                          be represented in the destination character
-     *                          encoding is approximated through one or more
-     *                          characters that look similar to the original
-     *                          one.  By default, this mode is disabled.
-     *  @param  discardIllegal  mode specifying whether characters that cannot
-     *                          be represented in the destination character
-     *                          encoding will be silently discarded.  By
-     *                          default, this mode is disabled.
+     *  @param  dataset    DICOM dataset or item from which the source character
+     *                     set should be retrieved.  If the data element
+     *                     Specific Character Set (0008,0005) is empty or
+     *                     missing, the default character set (i.e. ASCII) is
+     *                     used.
+     *  @param  toCharset  name of the destination character set used for the
+     *                     the output string.  Only a single value is permitted
+     *                     (no code extensions).  Leading and trailing spaces
+     *                     are removed automatically (if present).  The default
+     *                     value is "ISO_IR 192" (Unicode in UTF-8).
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition selectCharacterSet(DcmItem &dataset,
-                                   const OFString &toCharset = "ISO_IR 192",
-                                   const OFBool transliterate = OFFalse,
-                                   const OFBool discardIllegal = OFFalse);
+                                   const OFString &toCharset = "ISO_IR 192");
 
     /** convert the given string from the selected source character set(s) to
      *  the selected destination character set.  That means selectCharacterSet()
@@ -188,7 +173,7 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
      *                      set) is stored
      *  @param  delimiters  optional string of characters that are regarded as
      *                      delimiters, i.e.\ when found the character set is
-     *                      switched back to the default.  CR, LF and FF are
+     *                      switched back to the default.  CR, LF, FF and HT are
      *                      always regarded as delimiters (see DICOM PS 3.5).
      *  @return status, EC_Normal if successful, an error code otherwise
      */
@@ -197,7 +182,7 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
                               const OFString &delimiters = "");
 
     /** convert the given string from the selected source character set(s) to
-     *  the selected destination character set. That means selectCharacterSet()
+     *  the selected destination character set.  That means selectCharacterSet()
      *  has to be called prior to this method.  Since the length of the input
      *  string has to be specified explicitly, the string can contain more than
      *  one NULL byte.
@@ -210,7 +195,7 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
      *                      set) is stored
      *  @param  delimiters  optional string of characters that are regarded as
      *                      delimiters, i.e.\ when found the character set is
-     *                      switched back to the default.  CR, LF and FF are
+     *                      switched back to the default.  CR, LF, FF and HT are
      *                      always regarded as delimiters (see DICOM PS 3.5).
      *  @return status, EC_Normal if successful, an error code otherwise
      */
@@ -222,12 +207,12 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
     // --- static helper functions ---
 
     /** check whether the underlying character set conversion library is
-     *  available.  If the library is not available, no conversion between
-     *  different character sets will be possible.
-     *  @return OFTrue if the character set conversion library is available,
-     *    OFFalse otherwise
+     *  available.  If not, no conversion between different character sets will
+     *  be possible.
+     *  @return OFTrue if the character set conversion is available, OFFalse
+     *    otherwise
      */
-    static OFBool isConversionLibraryAvailable();
+    static OFBool isConversionAvailable();
 
     /** count characters in given UTF-8 string and return the resulting number
      *  of so-called "code points".  Please note that invalid UTF-8 encodings
@@ -241,13 +226,9 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
 
   protected:
 
-    /// type definition of a map storing the identifier (key) of a character
-    /// set and the associated conversion descriptor
-    typedef OFMap<OFString, OFCharacterEncoding::T_Descriptor> T_DescriptorMap;
-
-    /** determine the destination character encoding (as used by libiconv) from
-     *  the given DICOM defined term (specific character set), and set the
-     *  member variables accordingly.
+    /** determine the destination character encoding (as used by the underlying
+     *  character encoding library) from the given DICOM defined term (specific
+     *  character set), and set the member variables accordingly.
      *  @param  toCharset  name of the destination character set used for the
      *                     output string
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -273,11 +254,6 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
      */
     OFCondition selectCharacterSetWithCodeExtensions(const unsigned long sourceVM);
 
-    /** close any currently open character set conversion descriptor(s).
-     *  Afterwards, no conversion descriptor is selected, pretty much like
-     *  after the initialization with the constructor.
-     */
-    void closeConversionDescriptors();
 
     /** check whether the given string contains at least one escape character
      *  (ESC), because it is used for code extension techniques like ISO 2022
@@ -303,6 +279,10 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
 
   private:
 
+    /// type definition of a map storing the identifier (key) of a character
+    /// set and the associated character set converter
+    typedef OFMap<OFString, OFCharacterEncoding> T_EncodingConvertersMap;
+
     // private undefined copy constructor
     DcmSpecificCharacterSet(const DcmSpecificCharacterSet &);
 
@@ -315,15 +295,16 @@ class DCMTK_DCMDATA_EXPORT DcmSpecificCharacterSet
     /// selected destination character set based on a single DICOM defined term
     OFString DestinationCharacterSet;
 
-    /// selected destination encoding based on names supported by the libiconv toolkit
+    /// selected destination encoding based on names supported by the underlying
+    /// character encoding library
     OFString DestinationEncoding;
 
     /// character encoding converter
-    OFCharacterEncoding EncodingConverter;
+    OFCharacterEncoding DefaultEncodingConverter;
 
     /// map of character set conversion descriptors
     /// (only used if multiple character sets are needed)
-    T_DescriptorMap ConversionDescriptors;
+    T_EncodingConvertersMap EncodingConverters;
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dctypes.h b/dcmdata/include/dcmtk/dcmdata/dctypes.h
index f569591..2a4dd4c 100644
--- a/dcmdata/include/dcmtk/dcmdata/dctypes.h
+++ b/dcmdata/include/dcmtk/dcmdata/dctypes.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -230,6 +230,21 @@ struct DCMTK_DCMDATA_EXPORT DCMTypes
     static const size_t XF_useNativeModel;
 
     //@}
+
+    /** @name convertCharacterSet() flags.
+     *  These flags can be combined and passed to the convertCharacterSet() methods.
+     */
+    //@{
+
+    /// try to approximate characters that cannot be represented through similar
+    /// looking characters.  See DcmSpecificCharacterSet::getTransliterationMode().
+    static const size_t CF_transliterate;
+
+    /// discard characters that cannot be represented in destination character set.
+    /// See DcmSpecificCharacterSet::getDiscardIllegalSequenceMode().
+    static const size_t CF_discardIllegal;
+
+    //@}
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcuid.h b/dcmdata/include/dcmtk/dcmdata/dcuid.h
index c8b8e00..dd5e307 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcuid.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcuid.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -39,6 +39,20 @@
  *  @brief global definitions and functions for UID handling
  */
 
+
+/// type of Storage SOP Class
+typedef enum {
+    /// patient objects
+    ESSC_Patient    = 0x01,
+    /// non-patient objects
+    ESSC_NonPatient = 0x02,
+    /// image objects (subset of patient objects)
+    ESSC_Image      = 0x04,
+    /// all types (patient and non-patient objects)
+    ESSC_All        = 0x03
+} E_StorageSOPClassType;
+
+
 /** return the name of a UID.
  *  Performs a table lookup and returns a pointer to a read-only string.
  *  @param uid UID string for which the name is to be looked up
@@ -57,7 +71,7 @@ DCMTK_DCMDATA_EXPORT const char* dcmFindUIDFromName(const char* name);
 /** an array of const strings containing all known Storage SOP Classes
  *  that fit into the conventional PATIENT-STUDY-SERIES-INSTANCE information
  *  model, i.e. everything a Storage SCP might want to store in a PACS.
- *  Special cases such as hanging protocol storage or the Storage SOP Class
+ *  Special cases such as Hanging Protocol or Color Palette Storage SOP Class
  *  are not included in this list.
  *  WARNING: This list contains more than 64 entries, i.e. it is not possible
  *  to use this list to configure the association negotiation behavior of
@@ -67,7 +81,7 @@ DCMTK_DCMDATA_EXPORT const char* dcmFindUIDFromName(const char* name);
 extern DCMTK_DCMDATA_EXPORT const char* dcmAllStorageSOPClassUIDs[];
 
 /// number of entries in dcmAllStorageSOPClassUIDs.
-extern DCMTK_DCMDATA_EXPORT const int numberOfAllDcmStorageSOPClassUIDs;
+extern DCMTK_DCMDATA_EXPORT const int numberOfDcmAllStorageSOPClassUIDs;
 
 /** an array of const strings containing all storage SOP classes that
  *  are proposed by default by those Storage SCU components in DCMTK
@@ -92,17 +106,23 @@ extern DCMTK_DCMDATA_EXPORT const char* dcmShortSCUStorageSOPClassUIDs[];
 extern DCMTK_DCMDATA_EXPORT const int numberOfDcmShortSCUStorageSOPClassUIDs;
 
 /** returns true if the uid is one of the Storage SOP Classes.
- *  Performs a table lookup in the dcmAllStorageSOPClassUIDs table.
+ *  Performs a table lookup in the dcmAllStorageSOPClassUIDs, dcmImageSOPClassUIDs
+ *  and/or other tables depending on the requested type of Storage SOP Class.
+ *  Please note that, by default, this function only covers those Storage SOP
+ *  Classes that fit into the conventional PATIENT-STUDY-SERIES-INSTANCE
+ *  information model, i.e. non-patient DICOM objects are missing. This can
+ *  be changed by setting the optional type parameter to ESSC_NonPatient.
  *  @param uid UID string
+ *  @param type type of Storage SOP Class (default: patient objects only)
  *  @return true if UID is a known Storage SOP Class, false otherwise
  */
-DCMTK_DCMDATA_EXPORT OFBool dcmIsaStorageSOPClassUID(const char* uid);
+DCMTK_DCMDATA_EXPORT OFBool dcmIsaStorageSOPClassUID(const char* uid, const E_StorageSOPClassType type = ESSC_Patient);
 
 /** a global constant array of
  *  string pointers containing the UIDs of all known Image SOP
  *  Classes.  The global variable numberOfDcmImageSOPClassUIDs
  *  defines the size of the array.
- *  NOTE: this list represents a subset of the dcmStorageSOPClassUIDs list
+ *  NOTE: this list represents a subset of the dcmAllStorageSOPClassUIDs list
  */
 extern DCMTK_DCMDATA_EXPORT const char* dcmImageSOPClassUIDs[];
 
@@ -110,7 +130,7 @@ extern DCMTK_DCMDATA_EXPORT const char* dcmImageSOPClassUIDs[];
 extern DCMTK_DCMDATA_EXPORT const int numberOfDcmImageSOPClassUIDs;
 
 /** returns true if the uid is one of the Image Storage SOP Classes.
- *  Performs a table lookup in the dcmImageSOPClassUIDs table.
+ *  This is just a shortcut for dcmIsaStorageSOPClassUID(uid, ESSC_Image).
  *  @param uid UID string
  *  @return true if UID is a known Image Storage SOP Class, false otherwise
  */
@@ -329,9 +349,9 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_JPIPReferencedTransferSyntax        "1.2.840.10008.1.2.4.94"
 /// JPIP Referenced Deflate
 #define UID_JPIPReferencedDeflateTransferSyntax "1.2.840.10008.1.2.4.95"
-/// MPEG2 Main Profile @ Main Level
+/// MPEG2 Main Profile @ Main Level (changed with DICOM 2016e to: MPEG2 Main Profile / Main Level)
 #define UID_MPEG2MainProfileAtMainLevelTransferSyntax "1.2.840.10008.1.2.4.100"
-/// MPEG2 Main Profile @ High Level
+/// MPEG2 Main Profile @ High Level (changed with DICOM 2016e to: MPEG2 Main Profile / High Level)
 #define UID_MPEG2MainProfileAtHighLevelTransferSyntax "1.2.840.10008.1.2.4.101"
 /// MPEG-4 AVC/H.264 High Profile / Level 4.1
 #define UID_MPEG4HighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.102"
@@ -343,6 +363,10 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax "1.2.840.10008.1.2.4.105"
 /// MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2
 #define UID_MPEG4StereoHighProfileLevel4_2TransferSyntax "1.2.840.10008.1.2.4.106"
+/// HEVC/H.265 Main Profile / Level 5.1
+#define UID_HEVCMainProfileLevel5_1TransferSyntax "1.2.840.10008.1.2.4.107"
+/// HEVC/H.265 Main 10 Profile / Level 5.1
+#define UID_HEVCMain10ProfileLevel5_1TransferSyntax "1.2.840.10008.1.2.4.108"
 /// RLE Lossless
 #define UID_RLELosslessTransferSyntax           "1.2.840.10008.1.2.5"
 
@@ -479,6 +503,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_ColonCADSRStorage                                      "1.2.840.10008.5.1.4.1.1.88.69"
 #define UID_ImplantationPlanSRDocumentStorage                      "1.2.840.10008.5.1.4.1.1.88.70"
 #define UID_AcquisitionContextSRStorage                            "1.2.840.10008.5.1.4.1.1.88.71"
+#define UID_SimplifiedAdultEchoSRStorage                           "1.2.840.10008.5.1.4.1.1.88.72"
 #define UID_ContentAssessmentResultsStorage                        "1.2.840.10008.5.1.4.1.1.90.1"
 #define UID_EncapsulatedPDFStorage                                 "1.2.840.10008.5.1.4.1.1.104.1"
 #define UID_EncapsulatedCDAStorage                                 "1.2.840.10008.5.1.4.1.1.104.2"
@@ -487,6 +512,8 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_RETIRED_StandalonePETCurveStorage                      "1.2.840.10008.5.1.4.1.1.129"
 #define UID_EnhancedPETImageStorage                                "1.2.840.10008.5.1.4.1.1.130"
 #define UID_BasicStructuredDisplayStorage                          "1.2.840.10008.5.1.4.1.1.131"
+#define UID_CTDefinedProcedureProtocolStorage                      "1.2.840.10008.5.1.4.1.1.200.1"
+#define UID_CTPerformedProcedureProtocolStorage                    "1.2.840.10008.5.1.4.1.1.200.2"
 #define UID_RTImageStorage                                         "1.2.840.10008.5.1.4.1.1.481.1"
 #define UID_RTDoseStorage                                          "1.2.840.10008.5.1.4.1.1.481.2"
 #define UID_RTStructureSetStorage                                  "1.2.840.10008.5.1.4.1.1.481.3"
@@ -592,6 +619,11 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_MOVEImplantTemplateGroupInformationModel               "1.2.840.10008.5.1.4.45.3"
 #define UID_GETImplantTemplateGroupInformationModel                "1.2.840.10008.5.1.4.45.4"
 
+// Defined Procedure Protocol Query/Retrieve
+#define UID_FINDDefinedProcedureProtocolInformationModel           "1.2.840.10008.5.1.4.20.1"
+#define UID_MOVEDefinedProcedureProtocolInformationModel           "1.2.840.10008.5.1.4.20.2"
+#define UID_GETDefinedProcedureProtocolInformationModel            "1.2.840.10008.5.1.4.20.3"
+
 // Print Management
 #define UID_BasicFilmSessionSOPClass                               "1.2.840.10008.5.1.1.1"
 #define UID_BasicFilmBoxSOPClass                                   "1.2.840.10008.5.1.1.2"
@@ -741,6 +773,10 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_PETColorPaletteSOPInstance                             "1.2.840.10008.1.5.2"
 #define UID_HotMetalBlueColorPaletteSOPInstance                    "1.2.840.10008.1.5.3"
 #define UID_PET20StepColorPaletteSOPInstance                       "1.2.840.10008.1.5.4"
+#define UID_SpringColorPaletteSOPInstance                          "1.2.840.10008.1.5.5"
+#define UID_SummerColorPaletteSOPInstance                          "1.2.840.10008.1.5.6"
+#define UID_FallColorPaletteSOPInstance                            "1.2.840.10008.1.5.7"
+#define UID_WinterColorPaletteSOPInstance                          "1.2.840.10008.1.5.8"
 
 /*
 ** Private DCMTK UIDs
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvr.h b/dcmdata/include/dcmtk/dcmdata/dcvr.h
index 922c78a..87e4c13 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvr.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvr.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -95,11 +95,10 @@ DCMTK_DCMDATA_EXPORT void dcmEnableGenerationOfNewVRs();
 DCMTK_DCMDATA_EXPORT void dcmDisableGenerationOfNewVRs();
 
 
-/*
-** VR Enumerations.
-** NB: The order of entries has to conform to the order in DcmVRDict (see dcmvr.cc)!
-**     If not an error message is reported and the program aborts (only in DEBUG mode).
-*/
+/** VR Enumerations.
+ *  NB: The order of entries has to conform to the order in DcmVRDict (see dcmvr.cc)!
+ *      If not an error message is reported and the program aborts (only in DEBUG mode).
+ */
 enum DcmEVR
 {
     /// application entity title
@@ -304,6 +303,7 @@ public:
 
     /** copy assignment operator
      *  @param arg vr to assign from
+     *  @return reference to this object
      */
     DcmVR& operator=(const DcmVR& arg)
     {
@@ -346,36 +346,39 @@ public:
     const char* getValidVRName() const;
 
     /** compute the size for non-empty values of this VR.
-     *  For fixed size VRs such as OW, US, SL, the method returns the size
-     *  of each value, in bytes.  For variable length VRs (strings), it returns 1.
+     *  For fixed size VRs such as OW, US, SL, the method returns the size of
+     *  each value, in bytes.  For variable length VRs (strings), it returns 1.
      *  For internal VRs it returns 0.
      *  @return size of values of this VR
      */
     size_t getValueWidth() const;
 
     /** returns true if VR is a standard DICOM VR
-     *  @return true if VR is a standard DICOM VR
+     *  @return true if VR is a standard DICOM VR, false otherwise
      */
     OFBool isStandard() const;
 
     /** returns true if VR is for internal use only
-     *  @return true if VR is for internal use only
+     *  @return true if VR is for internal use only, false otherwise
      */
     OFBool isForInternalUseOnly() const;
 
     /** returns true if VR represents a string
-     *  @return true if VR represents a string
+     *  @return true if VR represents a string, false otherwise
      */
     OFBool isaString() const;
 
-    /** returns true if VR uses an extended length encoding for explicit transfer syntaxes
-     *  @return true if VR uses an extended length encoding for explicit transfer syntaxes
+    /** returns true if VR uses an extended length encoding for explicit
+     *  transfer syntaxes
+     *  @return true if VR uses an extended length encoding for explicit
+     *    transfer syntaxes, false otherwise
      */
     OFBool usesExtendedLengthEncoding() const;
 
     /** check if VRs are equivalent
-     *  VRs are considered equivalent if equal or if one of them is an internal VR
-     *  and the other one is a possible standard VR to which the internal one maps.
+     *  VRs are considered equivalent if equal or if one of them is an internal
+     *  VR and the other one is a possible standard VR to which the internal one
+     *  maps.
      *  @param avr VR to compare with
      *  @return true if VRs are equivalent, false otherwise
      */
@@ -385,16 +388,32 @@ public:
     ** (in bytes assuming single byte characters)
     */
 
-    /** return minimum length of a value with this VR (in bytes), assuming single byte characters
+    /** return minimum length of a value with this VR (in bytes), assuming
+     *  single byte characters
      *  @return minimum length of a value
      */
     Uint32 getMinValueLength() const;
 
-    /** return maximum length of a value with this VR (in bytes), assuming single byte characters
+    /** return maximum length of a value with this VR (in bytes), assuming
+     *  single byte characters
      *  @return maximum length of a value
      */
     Uint32 getMaxValueLength() const;
 
+    /** return whether elements of this VR are affected by SpecificCharacterSet
+     *  @return true for the following VRs: PN, LO, LT, SH, ST, UC and UT,
+     *    false for all others.
+     */
+    OFBool isAffectedBySpecificCharacterSet() const;
+
+    /** retrieve delimiter characters to be used for character set conversion
+     *  (to switch back to the default character set in case code extension
+     *  techniques like ISO 2022 are used).
+     *  @return a reference to an OFString containing the delimiter characters
+     *    for this VR or a reference to an empty OFString.
+     */
+    const OFString& getDelimiterChars() const;
+
 private:
     /// the enumerated VR value
     DcmEVR vr;
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrat.h b/dcmdata/include/dcmtk/dcmdata/dcvrat.h
index b07ecc5..b92d6a2 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrat.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrat.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2013, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -27,6 +27,9 @@
 
 #include "dcmtk/dcmdata/dcelem.h"
 
+// forward declarations
+class DcmJsonFormat;
+
 
 /** a class representing the DICOM value representation 'Attribute Tag' (AT)
  */
@@ -36,13 +39,16 @@ class DCMTK_DCMDATA_EXPORT DcmAttributeTag
 
   public:
 
+    // Make friend with DcmItem which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmItem;
+
     /** constructor.
-     *  Create new element from given tag and length.
+     *  Create new element from given tag.
      *  @param tag DICOM tag for the new element
      *  @param len value length for the new element
      */
-    DcmAttributeTag(const DcmTag &tag,
-                    const Uint32 len = 0);
+    DcmAttributeTag(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
@@ -142,6 +148,14 @@ class DCMTK_DCMDATA_EXPORT DcmAttributeTag
     OFCondition writeXML(STD_NAMESPACE ostream &out,
                          const size_t flags = 0);
 
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition writeJson(STD_NAMESPACE ostream &out,
+                          DcmJsonFormat &format);
+
     /** get particular tag value
      *  @param tagVal reference to result variable (cleared in case of error)
      *  @param pos index of the value to be retrieved (0..vm-1)
@@ -231,6 +245,22 @@ class DCMTK_DCMDATA_EXPORT DcmAttributeTag
      */
     static OFCondition checkStringValue(const OFString &value,
                                         const OFString &vm = "1-n");
+
+protected:
+
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  Create new element from given tag and length.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmAttributeTag(const DcmTag &tag,
+                    const Uint32 len);
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrda.h b/dcmdata/include/dcmtk/dcmdata/dcvrda.h
index 928bb57..ed75bda 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrda.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrda.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -172,15 +172,59 @@ class DCMTK_DCMDATA_EXPORT DcmDate
      *  Please note that the specified value is expected to be in valid DICOM DA format
      *  ("YYYYMMDD", "YYYY.MM.DD" is also supported for reasons of backward compatibility).
      *  If this function fails, the result variable 'dateValue' is cleared automatically.
-     *  @param dicomDate string value in DICOM DA format to be converted to ISO format.
+     *  @param dicomDate string value in DICOM DA format to be converted to OFDate format.
      *    An empty string is not regarded as valid input, since the date would be unknown.
      *  @param dateValue reference to OFDate variable where the result is stored
-     *  @param supportOldFormat if OFTrue support old (prior V3.0) date format (see above)
      *  @return EC_Normal upon success, an error code otherwise
      */
     static OFCondition getOFDateFromString(const OFString &dicomDate,
+                                           OFDate &dateValue);
+
+    /** get the specified DICOM date value in OFDate format.
+     *  Please note that the specified value is expected to be in valid DICOM DA format
+     *  ("YYYYMMDD", "YYYY.MM.DD" is also supported for reasons of backward compatibility).
+     *  If this function fails, the result variable 'dateValue' is cleared automatically.
+     *  @param dicomDate string value in DICOM DA format to be converted to OFDate format.
+     *    An empty string is not regarded as valid input, since the date would be unknown.
+     *  @param dateValue reference to OFDate variable where the result is stored
+     *  @param supportOldFormat set to OFFalse to disable support for old (prior V3.0) date
+     *    format (see above).
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition getOFDateFromString(const OFString &dicomDate,
+                                           OFDate &dateValue,
+                                           const OFBool supportOldFormat);
+
+    /** get the specified DICOM date value in OFDate format.
+     *  Please note that the specified value is expected to be in valid DICOM DA format
+     *  ("YYYYMMDD", "YYYY.MM.DD" is also supported for reasons of backward compatibility).
+     *  If this function fails, the result variable 'dateValue' is cleared automatically.
+     *  @param dicomDate string value in DICOM DA format to be converted to OFDate format.
+     *    An empty string is not regarded as valid input, since the date would be unknown.
+     *  @param dicomDateSize the size (in bytes) of the string 'dicomDate' refers to
+     *  @param dateValue reference to OFDate variable where the result is stored
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition getOFDateFromString(const char *dicomDate,
+                                           const size_t dicomDateSize,
+                                           OFDate &dateValue);
+
+    /** get the specified DICOM date value in OFDate format.
+     *  Please note that the specified value is expected to be in valid DICOM DA format
+     *  ("YYYYMMDD", "YYYY.MM.DD" is also supported for reasons of backward compatibility).
+     *  If this function fails, the result variable 'dateValue' is cleared automatically.
+     *  @param dicomDate string value in DICOM DA format to be converted to OFDate format.
+     *    An empty string is not regarded as valid input, since the date would be unknown.
+     *  @param dicomDateSize the size (in bytes) of the string 'dicomDate' refers to
+     *  @param dateValue reference to OFDate variable where the result is stored
+     *  @param supportOldFormat set to OFFalse to disable support for old (prior V3.0) date
+     *    format (see above).
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition getOFDateFromString(const char *dicomDate,
+                                           const size_t dicomDateSize,
                                            OFDate &dateValue,
-                                           const OFBool supportOldFormat = OFTrue);
+                                           const OFBool supportOldFormat);
 
     /** get the specified DICOM date value in ISO format.
      *  The ISO date format supported by this function is "YYYY-MM-DD". Please note
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrds.h b/dcmdata/include/dcmtk/dcmdata/dcvrds.h
index 211e767..f7ea500 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrds.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrds.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2013, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,6 +28,9 @@
 #include "dcmtk/ofstd/ofvector.h"
 #include "dcmtk/dcmdata/dcbytstr.h"
 
+// forward declarations
+class DcmJsonFormat;
+
 
 /** a class representing the DICOM value representation 'Decimal String' (DS)
  */
@@ -133,6 +136,14 @@ class DCMTK_DCMDATA_EXPORT DcmDecimalString
     virtual OFCondition writeXML(STD_NAMESPACE ostream &out,
                                  const size_t flags = 0);
 
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format);
+
     /* --- static helper functions --- */
 
     /** check whether given string value conforms to the VR "DS" (Decimal String)
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrdt.h b/dcmdata/include/dcmtk/dcmdata/dcvrdt.h
index a652281..b900d6b 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrdt.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrdt.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -214,10 +214,12 @@ class DCMTK_DCMDATA_EXPORT DcmDateTime
 
     /** get the specified DICOM date and time value in OFDateTime format.
      *  Please note that the element value is expected to be in valid DICOM DT format
-     *  ("YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]"). If the optional time zone ("&ZZZZ") is
-     *  missing the local time zone is used.
+     *  ("YYYY[MM[DD[HH[MM[SS[.FFFFFF]]]]]][&ZZZZ]"). If the "MM" and/or "DD" component from
+     *  the date part is missing, a value of "1" is used for each of them. If the "HH", "MM"
+     *  and/or "SS" component of the time part is missing, a value of "0" is used for each of
+     *  them. If the optional time zone ("&ZZZZ") is missing, the local time zone is used.
      *  If this function fails, the result variable 'dateTimeValue' is cleared automatically.
-     *  @param dicomDateTime string value in DICOM DT format to be converted to ISO format.
+     *  @param dicomDateTime string value in DICOM DT format to be converted to OFDateTime.
      *    An empty string is not regarded as valid input, since the date/time would be unknown.
      *  @param dateTimeValue reference to OFDateTime variable where the result is stored
      *  @return EC_Normal upon success, an error code otherwise
@@ -225,6 +227,23 @@ class DCMTK_DCMDATA_EXPORT DcmDateTime
     static OFCondition getOFDateTimeFromString(const OFString &dicomDateTime,
                                                OFDateTime &dateTimeValue);
 
+    /** get the specified DICOM date and time value in OFDateTime format.
+     *  Please note that the element value is expected to be in valid DICOM DT format
+     *  ("YYYY[MM[DD[HH[MM[SS[.FFFFFF]]]]]][&ZZZZ]"). If the "MM" and/or "DD" component from
+     *  the date part is missing, a value of "1" is used for each of them. If the "HH", "MM"
+     *  and/or "SS" component of the time part is missing, a value of "0" is used for each of
+     *  them. If the optional time zone ("&ZZZZ") is missing, the local time zone is used.
+     *  If this function fails, the result variable 'dateTimeValue' is cleared automatically.
+     *  @param dicomDateTime string value in DICOM DT format to be converted to OFDateTime.
+     *    An empty string is not regarded as valid input, since the date/time would be unknown.
+     *  @param dicomDateTimeSize the size (in bytes) of the string 'dicomDateTime' refers to
+     *  @param dateTimeValue reference to OFDateTime variable where the result is stored
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition getOFDateTimeFromString(const char *dicomDateTime,
+                                               const size_t dicomDateTimeSize,
+                                               OFDateTime &dateTimeValue);
+
     /** get the specified DICOM datetime value in ISO format.
      *  The ISO date/time format supported by this function is "YYYY-MM-DD[ HH:MM[:SS[.FFFFFF]]]
      *  [&HH:MM]" where the brackets enclose optional parts. Please note that the specified
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrfd.h b/dcmdata/include/dcmtk/dcmdata/dcvrfd.h
index 51bceac..bde2163 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrfd.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrfd.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -36,18 +36,20 @@ class DCMTK_DCMDATA_EXPORT DcmFloatingPointDouble
 
  public:
 
+    // Make friend with DcmItem which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmItem;
+
     /** constructor.
-     *  Create new element from given tag and length.
+     *  Create new element from given tag.
      *  @param tag DICOM tag for the new element
-     *  @param len value length for the new element
      */
-    DcmFloatingPointDouble(const DcmTag &tag,
-                           const Uint32 len = 0);
+    DcmFloatingPointDouble(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
      */
-    DcmFloatingPointDouble( const DcmFloatingPointDouble &old);
+    DcmFloatingPointDouble(const DcmFloatingPointDouble &old);
 
     /** destructor
      */
@@ -202,6 +204,22 @@ class DCMTK_DCMDATA_EXPORT DcmFloatingPointDouble
      *  @return status, EC_Normal if value length is correct, an error code otherwise
      */
     virtual OFCondition verify(const OFBool autocorrect = OFFalse);
+
+  protected:
+
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  Create new element from given tag and length.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmFloatingPointDouble(const DcmTag &tag,
+                           const Uint32 len);
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrfl.h b/dcmdata/include/dcmtk/dcmdata/dcvrfl.h
index 74a67de..cf2d870 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrfl.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrfl.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -36,13 +36,15 @@ class DCMTK_DCMDATA_EXPORT DcmFloatingPointSingle
 
   public:
 
+    // Make friend with DcmItem which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmItem;
+
     /** constructor.
-     *  Create new element from given tag and length.
+     *  Create new element from given tag.
      *  @param tag DICOM tag for the new element
-     *  @param len value length for the new element
      */
-    DcmFloatingPointSingle(const DcmTag &tag,
-                           const Uint32 len = 0);
+    DcmFloatingPointSingle(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
@@ -202,6 +204,23 @@ class DCMTK_DCMDATA_EXPORT DcmFloatingPointSingle
      *  @return status, EC_Normal if value length is correct, an error code otherwise
      */
     virtual OFCondition verify(const OFBool autocorrect = OFFalse);
+
+  protected:
+
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  Create new element from given tag and length.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmFloatingPointSingle(const DcmTag &tag,
+                           const Uint32 len);
+
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvris.h b/dcmdata/include/dcmtk/dcmdata/dcvris.h
index 3b1c66f..b0b3846 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvris.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvris.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2013, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -27,6 +27,10 @@
 #include "dcmtk/dcmdata/dcbytstr.h"
 
 
+// forward declarations
+class DcmJsonFormat;
+
+
 /** a class representing the DICOM value representation 'Integer String' (IS)
  */
 class DCMTK_DCMDATA_EXPORT DcmIntegerString
@@ -123,6 +127,14 @@ class DCMTK_DCMDATA_EXPORT DcmIntegerString
      */
     static OFCondition checkStringValue(const OFString &value,
                                         const OFString &vm = "1-n");
+
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition writeJson(STD_NAMESPACE ostream &out,
+                          DcmJsonFormat &format);
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrlo.h b/dcmdata/include/dcmtk/dcmdata/dcvrlo.h
index 47eeebb..0834182 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrlo.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrlo.h
@@ -27,6 +27,9 @@
 
 #include "dcmtk/dcmdata/dcchrstr.h"
 
+// forward declarations
+class DcmJsonFormat;
+
 
 /** a class representing the DICOM value representation 'Long String' (LO)
  */
@@ -105,6 +108,15 @@ class DCMTK_DCMDATA_EXPORT DcmLongString
                                     const unsigned long pos,
                                     OFBool normalize = OFTrue);
 
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format);
+
+
     /* --- static helper functions --- */
 
     /** check whether given string value conforms to the VR "LO" (Long String)
@@ -121,6 +133,12 @@ class DCMTK_DCMDATA_EXPORT DcmLongString
     static OFCondition checkStringValue(const OFString &value,
                                         const OFString &vm = "1-n",
                                         const OFString &charset = "");
+
+protected:
+
+    /** @copydoc DcmCharString::getDelimiterChars()
+     */
+    virtual const OFString& getDelimiterChars() const;
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrobow.h b/dcmdata/include/dcmtk/dcmdata/dcvrobow.h
index 8a1c0fa..26e354a 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrobow.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrobow.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -24,9 +24,14 @@
 #define DCVROBOW_H
 
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
 #include "dcmtk/dcmdata/dcelem.h"
 
 
+// forward declarations
+class DcmJsonFormat;
+
+
 /** a class representing the DICOM value representations 'Other Byte' (OB)
  *  and 'Other Word' (OW)
  */
@@ -36,13 +41,15 @@ class DCMTK_DCMDATA_EXPORT DcmOtherByteOtherWord
 
  public:
 
+    // Make friend with DcmItem which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmItem;
+
     /** constructor.
-     *  Create new element from given tag and length.
+     *  Create new element from given tag.
      *  @param tag DICOM tag for the new element
-     *  @param len value length for the new element
      */
-    DcmOtherByteOtherWord(const DcmTag &tag,
-                          const Uint32 len = 0);
+    DcmOtherByteOtherWord(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
@@ -168,6 +175,14 @@ class DCMTK_DCMDATA_EXPORT DcmOtherByteOtherWord
     virtual OFCondition writeXML(STD_NAMESPACE ostream&out,
                                  const size_t flags = 0);
 
+    /** write object in JSON format to a stream
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream&out,
+                                  DcmJsonFormat &format);
+
     /** special write method for creation of digital signatures
      *  @param outStream DICOM output stream
      *  @param oxfer output transfer syntax
@@ -308,6 +323,20 @@ class DCMTK_DCMDATA_EXPORT DcmOtherByteOtherWord
 
  protected:
 
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  Create new element from given tag and length.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmOtherByteOtherWord(const DcmTag &tag,
+                          const Uint32 len);
+
     /** method is called after the element value has been loaded.
      *  Can be used to correct the value before it is used for the first time.
      */
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrod.h b/dcmdata/include/dcmtk/dcmdata/dcvrod.h
index eaa363e..5b35efd 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrod.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrod.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2013-2015, OFFIS e.V.
+ *  Copyright (C) 2013-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,6 +28,10 @@
 #include "dcmtk/dcmdata/dcvrfd.h"
 
 
+// forward declarations
+class DcmJsonFormat;
+
+
 /** a class representing the DICOM value representation 'Other Double' (OD)
  */
 class DCMTK_DCMDATA_EXPORT DcmOtherDouble
@@ -106,6 +110,14 @@ class DCMTK_DCMDATA_EXPORT DcmOtherDouble
      */
     virtual OFCondition writeXML(STD_NAMESPACE ostream&out,
                                  const size_t flags = 0);
+
+    /** write object in JSON format to a stream
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream&out,
+                                  DcmJsonFormat &format);
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrof.h b/dcmdata/include/dcmtk/dcmdata/dcvrof.h
index bd228fc..eca29dc 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrof.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrof.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2015, OFFIS e.V.
+ *  Copyright (C) 2002-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,6 +28,10 @@
 #include "dcmtk/dcmdata/dcvrfl.h"
 
 
+// forward declarations
+class DcmJsonFormat;
+
+
 /** a class representing the DICOM value representation 'Other Float' (OF)
  */
 class DCMTK_DCMDATA_EXPORT DcmOtherFloat
@@ -106,6 +110,14 @@ class DCMTK_DCMDATA_EXPORT DcmOtherFloat
      */
     virtual OFCondition writeXML(STD_NAMESPACE ostream&out,
                                  const size_t flags = 0);
+
+    /** write object in JSON format to a stream
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream&out,
+                                  DcmJsonFormat &format);
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrol.h b/dcmdata/include/dcmtk/dcmdata/dcvrol.h
index 747bfeb..c7fc627 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrol.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrol.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2016, OFFIS e.V.
+ *  Copyright (C) 2016-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,6 +28,10 @@
 #include "dcmtk/dcmdata/dcvrul.h"
 
 
+// forward declarations
+class DcmJsonFormat;
+
+
 /** a class representing the DICOM value representation 'Other Long' (OL)
  */
 class DCMTK_DCMDATA_EXPORT DcmOtherLong
@@ -36,13 +40,15 @@ class DCMTK_DCMDATA_EXPORT DcmOtherLong
 
  public:
 
+    // Make friend with DcmItem which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmItem;
+
     /** constructor.
      *  Create new element from given tag and length.
      *  @param tag DICOM tag for the new element
-     *  @param len value length for the new element
      */
-    DcmOtherLong(const DcmTag &tag,
-                 const Uint32 len = 0);
+    DcmOtherLong(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
@@ -106,6 +112,30 @@ class DCMTK_DCMDATA_EXPORT DcmOtherLong
      */
     virtual OFCondition writeXML(STD_NAMESPACE ostream&out,
                                  const size_t flags = 0);
+
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format);
+
+  protected:
+
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmOtherLong(const DcmTag &tag,
+                 const Uint32 len);
+
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrpn.h b/dcmdata/include/dcmtk/dcmdata/dcvrpn.h
index d485489..4264691 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrpn.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrpn.h
@@ -27,6 +27,9 @@
 
 #include "dcmtk/dcmdata/dcchrstr.h"
 
+// forward declarations
+class DcmJsonFormat;
+
 
 /** a class representing the DICOM value representation 'Person Name' (PN)
  */
@@ -173,6 +176,14 @@ class DCMTK_DCMDATA_EXPORT DcmPersonName
     OFCondition writeXML(STD_NAMESPACE ostream &out,
                          const size_t flags = 0);
 
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition writeJson(STD_NAMESPACE ostream &out,
+                          DcmJsonFormat &format);
+
     /* --- static helper functions --- */
 
     /** get name components from specified DICOM person name.
@@ -289,6 +300,18 @@ class DCMTK_DCMDATA_EXPORT DcmPersonName
     static OFCondition checkStringValue(const OFString &value,
                                         const OFString &vm = "1-n",
                                         const OFString &charset = "");
+
+protected:
+
+    /** @copydoc DcmCharString::getDelimiterChars()
+     */
+    virtual const OFString& getDelimiterChars() const;
+
+private:
+
+    /** an array containing the component group names, for XML and JSON output.
+     */
+    static const char* const componentGroupNames[3];
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrpobw.h b/dcmdata/include/dcmtk/dcmdata/dcvrpobw.h
index 503c7e4..3768c89 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrpobw.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrpobw.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -52,9 +52,9 @@ public:
 
     /** copy assignment operator
      *  @param obj element to be copied
+     *  @return reference to this object
      */
-    DcmPolymorphOBOW &operator=(
-        const DcmPolymorphOBOW &obj);
+    DcmPolymorphOBOW &operator=(const DcmPolymorphOBOW &obj);
 
     /** clone method
      *  @return deep copy of this object
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrsh.h b/dcmdata/include/dcmtk/dcmdata/dcvrsh.h
index 98bbb31..d365ac9 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrsh.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrsh.h
@@ -28,6 +28,10 @@
 #include "dcmtk/dcmdata/dcchrstr.h"
 
 
+// forward declarations
+class DcmJsonFormat;
+
+
 /** a class representing the DICOM value representation 'Short String' (SH)
  */
 class DCMTK_DCMDATA_EXPORT DcmShortString
@@ -105,6 +109,14 @@ class DCMTK_DCMDATA_EXPORT DcmShortString
                                     const unsigned long pos,
                                     OFBool normalize = OFTrue);
 
+    /** write object in JSON format
+     *  @param out output stream to which the JSON document is written
+     *  @param format used to format and customize the output
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format);
+
     /* --- static helper functions --- */
 
     /** check whether given string value conforms to the VR "SH" (Short String)
@@ -121,6 +133,12 @@ class DCMTK_DCMDATA_EXPORT DcmShortString
     static OFCondition checkStringValue(const OFString &value,
                                         const OFString &vm = "1-n",
                                         const OFString &charset = "");
+
+protected:
+
+    /** @copydoc DcmCharString::getDelimiterChars()
+     */
+    virtual const OFString& getDelimiterChars() const;
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrsl.h b/dcmdata/include/dcmtk/dcmdata/dcvrsl.h
index 1e10274..0d98493 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrsl.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrsl.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -36,13 +36,15 @@ class DCMTK_DCMDATA_EXPORT DcmSignedLong
 
  public:
 
+    // Make friend with DcmItem which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmItem;
+
     /** constructor.
-     *  Create new element from given tag and length.
+     *  Create new element from given tag.
      *  @param tag DICOM tag for the new element
-     *  @param len value length for the new element
      */
-    DcmSignedLong(const DcmTag &tag,
-                  const Uint32 len = 0);
+    DcmSignedLong(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
@@ -199,6 +201,21 @@ class DCMTK_DCMDATA_EXPORT DcmSignedLong
      *  @return status, EC_Normal if value length is correct, an error code otherwise
      */
     virtual OFCondition verify(const OFBool autocorrect = OFFalse);
+
+  protected:
+
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmSignedLong(const DcmTag &tag,
+                  const Uint32 len);
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrss.h b/dcmdata/include/dcmtk/dcmdata/dcvrss.h
index 859446a..47d94aa 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrss.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrss.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -36,13 +36,15 @@ class DCMTK_DCMDATA_EXPORT DcmSignedShort
 
  public:
 
+    // Make friend with DcmItem which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmItem;
+
     /** constructor.
-     *  Create new element from given tag and length.
+     *  Create new element from given tag.
      *  @param tag DICOM tag for the new element
-     *  @param len value length for the new element
      */
-    DcmSignedShort(const DcmTag &tag,
-                   const Uint32 len = 0);
+    DcmSignedShort(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
@@ -199,6 +201,21 @@ class DCMTK_DCMDATA_EXPORT DcmSignedShort
      *  @return status, EC_Normal if value length is correct, an error code otherwise
      */
     virtual OFCondition verify(const OFBool autocorrect = OFFalse);
+
+  protected:
+
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmSignedShort(const DcmTag &tag,
+                   const Uint32 len);
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrtm.h b/dcmdata/include/dcmtk/dcmdata/dcvrtm.h
index cb62fd4..0b72473 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrtm.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrtm.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -203,19 +203,109 @@ class DCMTK_DCMDATA_EXPORT DcmTime
 
     /** get the specified DICOM time value in OFTime format.
      *  Please note that the element value is expected to be in valid DICOM TM format
-     *  ("[HH[MM[SS[.FFFFFF]]]]", "[HH[:MM[:SS[.FFFFFF]]]]" is also supported for reasons
+     *  ("HH[MM[SS[.FFFFFF]]]", "HH[:MM[:SS[.FFFFFF]]]" is also supported for reasons
      *  of backward compatibility). Since there is no time zone for the DICOM TM format
      *  local time is assumed (the time zone of 'timeValue' is set automatically).
      *  If this function fails the result variable 'timeValue' is cleared automatically.
-     *  @param dicomTime string value in DICOM TM format to be converted to ISO format.
+     *  @param dicomTime string value in DICOM TM format to be converted to OFTime format.
      *    An empty string is not regarded as valid input, since the time would be unknown.
      *  @param timeValue reference to OFTime variable where the result is stored
-     *  @param supportOldFormat if OFTrue support old (prior V3.0) time format (see above)
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition getOFTimeFromString(const OFString &dicomTime,
+                                           OFTime &timeValue);
+
+    /** get the specified DICOM time value in OFTime format.
+     *  Please note that the element value is expected to be in valid DICOM TM format
+     *  ("HH[MM[SS[.FFFFFF]]]", "HH[:MM[:SS[.FFFFFF]]]" is also supported for reasons
+     *  of backward compatibility). Since there is no time zone for the DICOM TM format
+     *  local time is assumed (the time zone of 'timeValue' is set automatically).
+     *  If this function fails the result variable 'timeValue' is cleared automatically.
+     *  @param dicomTime string value in DICOM TM format to be converted to OFTime format.
+     *    An empty string is not regarded as valid input, since the time would be unknown.
+     *  @param timeValue reference to OFTime variable where the result is stored
+     *  @param supportOldFormat set to OFFalse to disable support for old (prior V3.0) time
+     *    format (see above).
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition getOFTimeFromString(const OFString &dicomTime,
+                                           OFTime &timeValue,
+                                           const OFBool supportOldFormat);
+
+    /** get the specified DICOM time value in OFTime format.
+     *  Please note that the element value is expected to be in valid DICOM TM format
+     *  ("HH[MM[SS[.FFFFFF]]]", "HH[:MM[:SS[.FFFFFF]]]" is also supported for reasons of
+     *  backward compatibility). This overload of the function will set the time zone of
+     *  'timeValue' to the value given via the 'timeZone' parameter.
+     *  If this function fails the result variable 'timeValue' is cleared automatically.
+     *  @param dicomTime string value in DICOM TM format to be converted to OFTime format.
+     *    An empty string is not regarded as valid input, since the time would be unknown.
+     *  @param timeValue reference to OFTime variable where the result is stored
+     *  @param supportOldFormat set to OFFalse to disable support for old (prior V3.0) time
+     *    format (see above).
+     *  @param timeZone the time zone to set for 'timeValue'.
      *  @return EC_Normal upon success, an error code otherwise
      */
     static OFCondition getOFTimeFromString(const OFString &dicomTime,
                                            OFTime &timeValue,
-                                           const OFBool supportOldFormat = OFTrue);
+                                           const OFBool supportOldFormat,
+                                           const double timeZone);
+
+    /** get the specified DICOM time value in OFTime format.
+     *  Please note that the element value is expected to be in valid DICOM TM format
+     *  ("HH[MM[SS[.FFFFFF]]]", "HH[:MM[:SS[.FFFFFF]]]" is also supported for reasons
+     *  of backward compatibility). Since there is no time zone for the DICOM TM format
+     *  local time is assumed (the time zone of 'timeValue' is set automatically).
+     *  If this function fails the result variable 'timeValue' is cleared automatically.
+     *  @param dicomTime string value in DICOM TM format to be converted to OFTime format.
+     *    An empty string is not regarded as valid input, since the time would be unknown.
+     *  @param dicomTimeSize the size (in bytes) of the string 'dicomTime' refers to
+     *  @param timeValue reference to OFTime variable where the result is stored
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition getOFTimeFromString(const char *dicomTime,
+                                           const size_t dicomTimeSize,
+                                           OFTime &timeValue);
+
+    /** get the specified DICOM time value in OFTime format.
+     *  Please note that the element value is expected to be in valid DICOM TM format
+     *  ("HH[MM[SS[.FFFFFF]]]", "HH[:MM[:SS[.FFFFFF]]]" is also supported for reasons
+     *  of backward compatibility). Since there is no time zone for the DICOM TM format
+     *  local time is assumed (the time zone of 'timeValue' is set automatically).
+     *  If this function fails the result variable 'timeValue' is cleared automatically.
+     *  @param dicomTime string value in DICOM TM format to be converted to OFTime format.
+     *    An empty string is not regarded as valid input, since the time would be unknown.
+     *  @param dicomTimeSize the size (in bytes) of the string 'dicomTime' refers to
+     *  @param timeValue reference to OFTime variable where the result is stored
+     *  @param supportOldFormat set to OFFalse to disable support for old (prior V3.0) time
+     *    format (see above).
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition getOFTimeFromString(const char *dicomTime,
+                                           const size_t dicomTimeSize,
+                                           OFTime &timeValue,
+                                           const OFBool supportOldFormat);
+
+    /** get the specified DICOM time value in OFTime format.
+     *  Please note that the element value is expected to be in valid DICOM TM format
+     *  ("HH[MM[SS[.FFFFFF]]]", "HH[:MM[:SS[.FFFFFF]]]" is also supported for reasons of
+     *  backward compatibility). This overload of the function will set the time zone of
+     *  'timeValue' to the value given via the 'timeZone' parameter.
+     *  If this function fails the result variable 'timeValue' is cleared automatically.
+     *  @param dicomTime string value in DICOM TM format to be converted to OFTime format.
+     *    An empty string is not regarded as valid input, since the time would be unknown.
+     *  @param dicomTimeSize the size (in bytes) of the string 'dicomTime' refers to
+     *  @param timeValue reference to OFTime variable where the result is stored
+     *  @param supportOldFormat set to OFFalse to disable support for old (prior V3.0) time
+     *    format (see above).
+     *  @param timeZone the time zone to set for 'timeValue'.
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition getOFTimeFromString(const char *dicomTime,
+                                           const size_t dicomTimeSize,
+                                           OFTime &timeValue,
+                                           const OFBool supportOldFormat,
+                                           const double timeZone);
 
     /** get the specified DICOM time value in ISO format.
      *  The ISO time format supported by this function is "HH:MM[:SS[.FFFFFF]]" where the
@@ -231,7 +321,8 @@ class DCMTK_DCMDATA_EXPORT DcmTime
      *   (requires parameter 'seconds' to be also OFTrue)
      *  @param createMissingPart if OFTrue create optional parts (seconds and/or fractional
      *   part of a seconds) if absent in the DICOM TM value
-     *  @param supportOldFormat if OFTrue support old (prior V3.0) time format (see above)
+     *  @param supportOldFormat set to OFFalse to disable support for old (prior V3.0) time
+     *    format (see above).
      *  @return EC_Normal upon success, an error code otherwise
      */
     static OFCondition getISOFormattedTimeFromString(const OFString &dicomTime,
@@ -256,6 +347,23 @@ class DCMTK_DCMDATA_EXPORT DcmTime
     static OFCondition getTimeZoneFromString(const OFString &dicomTimeZone,
                                              double &timeZone);
 
+    /** get the specified DICOM time zone in number of hours format
+     *  DICOM standard states that if the "Timezone Offset From UTC" attribute (0008,0201) is
+     *  present it applies to all TM attributes in the object. This functions allows to convert
+     *  the DICOM format ("&ZZZZ" where "&" is "+" or "-" and "ZZZZ" hours and minutes) to a
+     *  floating point value, e.g. "+1.0" means plus one hour and "-2.5" minus two and a half
+     *  hour, i.e. 2 hours and 30 minutes.
+     *  The resulting 'timeZone' value can be used in conjuction with a OFTime object to convert
+     *  the time to different time zones (e.g. to local time or UTC).
+     *  @param dicomTimeZone string value in DICOM format ("&ZZZZ") to be converted
+     *  @param timeZone reference to floating point variable where the resulting UTC offset is stored
+     *  @param dicomTimeZoneSize the size (in bytes) of the string 'dicomTimeZone' refers to
+     *  @return EC_Normal upon success, an error code otherwise
+     */
+    static OFCondition getTimeZoneFromString(const char *dicomTimeZone,
+                                             const size_t dicomTimeZoneSize,
+                                             double &timeZone);
+
     /** check whether given string value conforms to the VR "TM" (Time)
      *  and to the specified VM.
      *  @param value string value to be checked (possibly multi-valued)
@@ -267,6 +375,16 @@ class DCMTK_DCMDATA_EXPORT DcmTime
     static OFCondition checkStringValue(const OFString &value,
                                         const OFString &vm = "1-n",
                                         const OFBool oldFormat = OFFalse);
+
+private:
+
+    /** parse the fragment part of a DICOM time string.
+     *  @param string a pointer to the beginning of the fragment portion of a DICOM time string.
+     *  @param size the size (in bytes) of the given string value.
+     *  @param result a reference to a double value that will receive the result.
+     *  @return OFTrue if the fragment was parsed successfully, OFFalse otherwise.
+     */
+    static OFBool parseFragment(const char* string, const size_t size, double& result);
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvruc.h b/dcmdata/include/dcmtk/dcmdata/dcvruc.h
index 60bbde7..3833240 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvruc.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvruc.h
@@ -55,6 +55,7 @@ class DCMTK_DCMDATA_EXPORT DcmUnlimitedCharacters
 
     /** copy assignment operator
      *  @param obj element to be copied
+     *  @return reference to this object
      */
     DcmUnlimitedCharacters &operator=(const DcmUnlimitedCharacters &obj);
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrul.h b/dcmdata/include/dcmtk/dcmdata/dcvrul.h
index be292d0..fa61c24 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrul.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrul.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -36,13 +36,15 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLong
 
  public:
 
+    // Make friend with DcmItem which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmItem;
+
     /** constructor.
-     *  Create new element from given tag and length.
+     *  Create new element from given tag.
      *  @param tag DICOM tag for the new element
-     *  @param len value length for the new element
      */
-    DcmUnsignedLong(const DcmTag &tag,
-                    const Uint32 len = 0);
+    DcmUnsignedLong(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
@@ -199,6 +201,22 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLong
      *  @return status, EC_Normal if value length is correct, an error code otherwise
      */
     virtual OFCondition verify(const OFBool autocorrect = OFFalse);
+
+  protected:
+
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmUnsignedLong(const DcmTag &tag,
+                    const Uint32 len);
+
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrulup.h b/dcmdata/include/dcmtk/dcmdata/dcvrulup.h
index 8d0f3d5..1c235de 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrulup.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrulup.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -27,6 +27,8 @@
 
 #include "dcmtk/dcmdata/dcvrul.h"
 
+class DcmDirectoryRecord;
+class DcmItem;
 
 /** a class used for DICOMDIR byte offsets
  */
@@ -36,13 +38,17 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLongOffset
 
   public:
 
+    // Make friend with DcmDirectoryRecord and DcmItem which require access
+    // to protected constructor allowing construction using an explicit
+    // value length.
+    friend class DcmDirectoryRecord;
+    friend class DcmItem;
+
     /** constructor.
      *  Create new element from given tag and length.
      *  @param tag DICOM tag for the new element
-     *  @param len value length for the new element
      */
-    DcmUnsignedLongOffset(const DcmTag &tag,
-                          const Uint32 len = 0);
+    DcmUnsignedLongOffset(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
@@ -55,6 +61,7 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLongOffset
 
     /** assignment operator.
      *  @param obj the offset to be copied
+     *  @return reference to this object
      */
     DcmUnsignedLongOffset &operator=(const DcmUnsignedLongOffset &obj);
 
@@ -109,6 +116,19 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLongOffset
 
   private:
 
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmUnsignedLongOffset(const DcmTag &tag,
+                          const Uint32 len);
+
     /// pointer to the referenced object. NULL means that no object is referenced.
     DcmObject *nextRecord;
 };
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrur.h b/dcmdata/include/dcmtk/dcmdata/dcvrur.h
index 95aed31..c1913ad 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrur.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrur.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2014, OFFIS e.V.
+ *  Copyright (C) 2014-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -56,6 +56,7 @@ class DCMTK_DCMDATA_EXPORT DcmUniversalResourceIdentifierOrLocator
 
     /** copy assignment operator
      *  @param obj element to be copied
+     *  @return reference to this object
      */
     DcmUniversalResourceIdentifierOrLocator &operator=(const DcmUniversalResourceIdentifierOrLocator &obj);
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrus.h b/dcmdata/include/dcmtk/dcmdata/dcvrus.h
index a485394..5daebe5 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrus.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrus.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -36,13 +36,15 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedShort
 
  public:
 
+    // Make friend with DcmItem which requires access to protected
+    // constructor allowing construction using an explicit value length.
+    friend class DcmItem;
+
     /** constructor.
-     *  Create new element from given tag and length.
+     *  Create new element from given tag.
      *  @param tag DICOM tag for the new element
-     *  @param len value length for the new element
      */
-    DcmUnsignedShort(const DcmTag &tag,
-                     const Uint32 len = 0);
+    DcmUnsignedShort(const DcmTag &tag);
 
     /** copy constructor
      *  @param old element to be copied
@@ -199,6 +201,21 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedShort
      *  @return status, EC_Normal if value length is correct, an error code otherwise
      */
     virtual OFCondition verify(const OFBool autocorrect = OFFalse);
+
+  protected:
+
+    /** constructor. Create new element from given tag and length.
+     *  Only reachable from friend classes since construction with
+     *  length different from 0 leads to a state with length being set but
+     *  the element's value still being uninitialized. This can lead to crashes
+     *  when the value is read or written. Thus the method calling this
+     *  constructor with length > 0 must ensure that the element's value is
+     *  explicitly initialized, too.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmUnsignedShort(const DcmTag &tag,
+                     const Uint32 len);
 };
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrut.h b/dcmdata/include/dcmtk/dcmdata/dcvrut.h
index 56f370f..6836371 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrut.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrut.h
@@ -55,6 +55,7 @@ class DCMTK_DCMDATA_EXPORT DcmUnlimitedText
 
     /** copy assignment operator
      *  @param obj element to be copied
+     *  @return reference to this object
      */
     DcmUnlimitedText &operator=(const DcmUnlimitedText &obj);
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcxfer.h b/dcmdata/include/dcmtk/dcmdata/dcxfer.h
index c1ea907..486ea59 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcxfer.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcxfer.h
@@ -83,38 +83,42 @@ typedef enum {
     EXS_JPEGProcess14SV1 = 21,
     /// Run Length Encoding (lossless)
     EXS_RLELossless = 22,
+    /// Deflated Explicit VR Little Endian
+    EXS_DeflatedLittleEndianExplicit = 23,
     /// JPEG-LS (lossless)
-    EXS_JPEGLSLossless = 23,
+    EXS_JPEGLSLossless = 24,
     /// JPEG-LS (lossless or near-lossless mode)
-    EXS_JPEGLSLossy = 24,
-    /// Deflated Explicit VR Little Endian
-    EXS_DeflatedLittleEndianExplicit = 25,
+    EXS_JPEGLSLossy = 25,
     /// JPEG 2000 (lossless)
     EXS_JPEG2000LosslessOnly = 26,
     /// JPEG 2000 (lossless or lossy)
     EXS_JPEG2000 = 27,
+    /// JPEG 2000 part 2 multi-component extensions (lossless)
+    EXS_JPEG2000MulticomponentLosslessOnly = 28,
+    /// JPEG 2000 part 2 multi-component extensions (lossless or lossy)
+    EXS_JPEG2000Multicomponent = 29,
+    /// JPIP Referenced
+    EXS_JPIPReferenced = 30,
+    /// JPIP Referenced Deflate
+    EXS_JPIPReferencedDeflate = 31,
     /// MPEG2 Main Profile at Main Level
-    EXS_MPEG2MainProfileAtMainLevel = 28,
+    EXS_MPEG2MainProfileAtMainLevel = 32,
     /// MPEG2 Main Profile at High Level
-    EXS_MPEG2MainProfileAtHighLevel = 29,
+    EXS_MPEG2MainProfileAtHighLevel = 33,
     /// MPEG4 High Profile / Level 4.1
-    EXS_MPEG4HighProfileLevel4_1 = 30,
+    EXS_MPEG4HighProfileLevel4_1 = 34,
     /// MPEG4 BD-compatible High Profile / Level 4.1
-    EXS_MPEG4BDcompatibleHighProfileLevel4_1 = 31,
+    EXS_MPEG4BDcompatibleHighProfileLevel4_1 = 35,
     /// MPEG4 High Profile / Level 4.2 For 2D Video
-    EXS_MPEG4HighProfileLevel4_2_For2DVideo = 32,
+    EXS_MPEG4HighProfileLevel4_2_For2DVideo = 36,
     /// MPEG4 High Profile / Level 4.2 For 3D Video
-    EXS_MPEG4HighProfileLevel4_2_For3DVideo = 33,
+    EXS_MPEG4HighProfileLevel4_2_For3DVideo = 37,
     /// MPEG4 Stereo High Profile / Level 4.2
-    EXS_MPEG4StereoHighProfileLevel4_2 = 34,
-    /// JPEG 2000 part 2 multi-component extensions (lossless)
-    EXS_JPEG2000MulticomponentLosslessOnly = 35,
-    /// JPEG 2000 part 2 multi-component extensions (lossless or lossy)
-    EXS_JPEG2000Multicomponent = 36,
-    /// JPIP Referenced
-    EXS_JPIPReferenced = 37,
-    /// JPIP Referenced Deflate
-    EXS_JPIPReferencedDeflate = 38
+    EXS_MPEG4StereoHighProfileLevel4_2 = 38,
+    /// HEVC/H.265 Main Profile / Level 5.1
+    EXS_HEVCMainProfileLevel5_1 = 39,
+    /// HEVC/H.265 Main 10 Profile / Level 5.1
+    EXS_HEVCMain10ProfileLevel5_1 = 40
 } E_TransferSyntax;
 
 /** enumeration of byte orders
diff --git a/dcmdata/include/dcmtk/dcmdata/libi2d/i2doutpl.h b/dcmdata/include/dcmtk/dcmdata/libi2d/i2doutpl.h
index c3d8d4c..763612a 100644
--- a/dcmdata/include/dcmtk/dcmdata/libi2d/i2doutpl.h
+++ b/dcmdata/include/dcmtk/dcmdata/libi2d/i2doutpl.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2001-2011, OFFIS e.V.
+ *  Copyright (C) 2001-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -23,9 +23,9 @@
 #define I2DOUTPL_H
 
 #include "dcmtk/config/osconfig.h"
+#include "dcmtk/oflog/oflog.h"
 #include "dcmtk/dcmdata/dcdatset.h"
 #include "dcmtk/dcmdata/dcelem.h"
-#include "dcmtk/oflog/oflog.h"
 #include "dcmtk/dcmdata/libi2d/i2define.h"
 
 
@@ -135,7 +135,7 @@ protected:
       elem = NULL;
       DcmTag tag(key); OFBool wasError = OFFalse;
       //if dicom element could be created, insert in to item and modify to value
-      if ( newDicomElement(elem, tag).good())
+      if ( DcmItem::newDicomElement(elem, tag).good())
       {
           if (targetDset->insert(elem, OFTrue).good())
           {
@@ -176,7 +176,7 @@ protected:
         DcmElement *elem = NULL;
         DcmTag tag(key); OFBool wasError = OFFalse;
         //if dicom element could be created, insert in to item and modify to value
-        if ( newDicomElement(elem, tag).good())
+        if ( DcmItem::newDicomElement(elem, tag).good())
         {
           if (targetDset->insert(elem, OFTrue).good())
           {
@@ -194,7 +194,7 @@ protected:
         if (wasError)
         {
           err += "Unable to insert type 2 attribute "; err += tag.getTagName(); err += " with value "; err += defaultValue; err += "\n";
-        }        
+        }
       }
       else
       {
diff --git a/dcmdata/libi2d/Makefile.dep b/dcmdata/libi2d/Makefile.dep
index 7bf6384..47ac005 100644
--- a/dcmdata/libi2d/Makefile.dep
+++ b/dcmdata/libi2d/Makefile.dep
@@ -1,30 +1,21 @@
 i2d.o: i2d.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/libi2d/i2d.h \
  ../include/dcmtk/dcmdata/libi2d/i2doutpl.h \
- ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
- ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../../ofstd/include/dcmtk/ofstd/oflimits.h \
- ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmdata/dctypes.h \
- ../../oflog/include/dcmtk/oflog/oflog.h \
- ../../oflog/include/dcmtk/oflog/logger.h \
- ../../oflog/include/dcmtk/oflog/config.h \
  ../../oflog/include/dcmtk/oflog/config/defines.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../oflog/include/dcmtk/oflog/tchar.h \
  ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
@@ -41,9 +32,18 @@ i2d.o: i2d.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
+ ../include/dcmtk/dcmdata/dctypes.h ../include/dcmtk/dcmdata/dcdefine.h \
+ ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
@@ -168,30 +168,21 @@ i2djpgs.o: i2djpgs.cc ../../config/include/dcmtk/config/osconfig.h \
 i2dplnsc.o: i2dplnsc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/libi2d/i2dplnsc.h \
  ../include/dcmtk/dcmdata/libi2d/i2doutpl.h \
- ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
- ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../../ofstd/include/dcmtk/ofstd/oflimits.h \
- ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmdata/dctypes.h \
- ../../oflog/include/dcmtk/oflog/oflog.h \
- ../../oflog/include/dcmtk/oflog/logger.h \
- ../../oflog/include/dcmtk/oflog/config.h \
  ../../oflog/include/dcmtk/oflog/config/defines.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../oflog/include/dcmtk/oflog/tchar.h \
  ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
@@ -208,9 +199,18 @@ i2dplnsc.o: i2dplnsc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
+ ../include/dcmtk/dcmdata/dctypes.h ../include/dcmtk/dcmdata/dcdefine.h \
+ ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
@@ -222,30 +222,21 @@ i2dplnsc.o: i2dplnsc.cc ../../config/include/dcmtk/config/osconfig.h \
 i2dplsc.o: i2dplsc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/libi2d/i2dplsc.h \
  ../include/dcmtk/dcmdata/libi2d/i2doutpl.h \
- ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
- ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../../ofstd/include/dcmtk/ofstd/oflimits.h \
- ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmdata/dctypes.h \
- ../../oflog/include/dcmtk/oflog/oflog.h \
- ../../oflog/include/dcmtk/oflog/logger.h \
- ../../oflog/include/dcmtk/oflog/config.h \
  ../../oflog/include/dcmtk/oflog/config/defines.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../oflog/include/dcmtk/oflog/tchar.h \
  ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
@@ -262,9 +253,18 @@ i2dplsc.o: i2dplsc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
+ ../include/dcmtk/dcmdata/dctypes.h ../include/dcmtk/dcmdata/dcdefine.h \
+ ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
@@ -276,30 +276,21 @@ i2dplsc.o: i2dplsc.cc ../../config/include/dcmtk/config/osconfig.h \
 i2dplvlp.o: i2dplvlp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/libi2d/i2dplvlp.h \
  ../include/dcmtk/dcmdata/libi2d/i2doutpl.h \
- ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
- ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../../ofstd/include/dcmtk/ofstd/oflimits.h \
- ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmdata/dctypes.h \
- ../../oflog/include/dcmtk/oflog/oflog.h \
- ../../oflog/include/dcmtk/oflog/logger.h \
- ../../oflog/include/dcmtk/oflog/config.h \
  ../../oflog/include/dcmtk/oflog/config/defines.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../oflog/include/dcmtk/oflog/tchar.h \
  ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
@@ -316,9 +307,18 @@ i2dplvlp.o: i2dplvlp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
+ ../include/dcmtk/dcmdata/dctypes.h ../include/dcmtk/dcmdata/dcdefine.h \
+ ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
diff --git a/dcmdata/libi2d/i2d.cc b/dcmdata/libi2d/i2d.cc
index 89adf21..137e02a 100644
--- a/dcmdata/libi2d/i2d.cc
+++ b/dcmdata/libi2d/i2d.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2007-2015, OFFIS e.V.
+ *  Copyright (C) 2007-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -683,7 +683,7 @@ OFString Image2Dcm::checkAndInventType1Attrib(const DcmTagKey& key,
     elem = NULL;
     DcmTag tag(key); OFBool wasError = OFFalse;
     // if DICOM element could be created, insert in to item and modify to value
-    if ( newDicomElement(elem, tag).good())
+    if ( DcmItem::newDicomElement(elem, tag).good())
     {
         if (targetDset->insert(elem, OFTrue).good())
         {
diff --git a/dcmdata/libi2d/i2dbmps.cc b/dcmdata/libi2d/i2dbmps.cc
index 02a8836..0256670 100644
--- a/dcmdata/libi2d/i2dbmps.cc
+++ b/dcmdata/libi2d/i2dbmps.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2009-2013, OFFIS e.V.
+ *  Copyright (C) 2009-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -326,7 +326,7 @@ OFCondition I2DBmpSource::readBitmapData(const Uint16 width,
   const Uint32 row_length = ((width * bpp + 31) / 32) * 4;
   Uint8 *row_data;
   Uint32 y;
-  Sint32 direction;
+  OFBool positive_direction;
   Uint32 max;
 
   // "palette" may only be NULL if colors is 0 and vice versa
@@ -341,14 +341,14 @@ OFCondition I2DBmpSource::readBitmapData(const Uint16 width,
   {
     /* This is a top-down BMP, we start at the first row and work our way down */
     y = 1;
-    direction = 1;
+    positive_direction = OFTrue;
     max = height + 1;
   }
   else
   {
     /* Bottom-up BMP, we start with the last row and work our way up */
     y = height;
-    direction = -1;
+    positive_direction = OFFalse;
     max = 0;
   }
 
@@ -367,7 +367,7 @@ OFCondition I2DBmpSource::readBitmapData(const Uint16 width,
   }
 
   /* Go through each row of the image */
-  for (; y != max; y += direction)
+  for (; y != max; (positive_direction ? ++y : --y))
   {
     /* Calculate posData for this line, it is the index of the first byte for
      * this line. ( -1 because we start at index 1, but C at index 0)
diff --git a/dcmdata/libsrc/CMakeLists.txt b/dcmdata/libsrc/CMakeLists.txt
index fec02e5..9c40573 100644
--- a/dcmdata/libsrc/CMakeLists.txt
+++ b/dcmdata/libsrc/CMakeLists.txt
@@ -3,9 +3,9 @@
 DCMTK_ADD_LIBRARY(dcmdata
   cmdlnarg dcbytstr dcchrstr dccodec dcdatset dcdatutl dcddirif dcdicdir dcdicent
   dcdict dcdictbi dcdirrec dcelem dcerror dcfilefo dcfilter dchashdi dcistrma
-  dcistrmb dcistrmf dcistrmz dcitem dclist dcmetinf dcobject dcostrma dcostrmb
-  dcostrmf dcostrmz dcpath dcpcache dcpixel dcpixseq dcpxitem dcrleccd dcrlecce
-  dcrlecp dcrledrg dcrleerg dcrlerp dcsequen dcspchrs dcstack dcswap dctag
+  dcistrmb dcistrmf dcistrmz dcitem dcjson dclist dcmatch dcmetinf dcobject dcostrma
+  dcostrmb dcostrmf dcostrmz dcpath dcpcache dcpixel dcpixseq dcpxitem dcrleccd
+  dcrlecce dcrlecp dcrledrg dcrleerg dcrlerp dcsequen dcspchrs dcstack dcswap dctag
   dctagkey dctypes dcuid dcvr dcvrae dcvras dcvrat dcvrcs dcvrda dcvrds dcvrdt
   dcvrfd dcvrfl dcvris dcvrlo dcvrlt dcvrobow dcvrod dcvrof dcvrol dcvrpn dcvrpobw
   dcvrsh dcvrsl dcvrss dcvrst dcvrtm dcvruc dcvrui dcvrul dcvrulup dcvrur dcvrus
diff --git a/dcmdata/libsrc/Makefile.dep b/dcmdata/libsrc/Makefile.dep
index b328a01..e512721 100644
--- a/dcmdata/libsrc/Makefile.dep
+++ b/dcmdata/libsrc/Makefile.dep
@@ -55,7 +55,9 @@ dcbytstr.o: dcbytstr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dctypes.h \
+ ../include/dcmtk/dcmdata/dcjson.h ../include/dcmtk/dcmdata/dctagkey.h \
+ ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcbytstr.h \
+ ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
@@ -83,12 +85,11 @@ dcbytstr.o: dcbytstr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
- ../include/dcmtk/dcmdata/dcobject.h \
+ ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
- ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
+ ../include/dcmtk/dcmdata/dcstack.h
 dcchrstr.o: dcchrstr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcspchrs.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
@@ -100,10 +101,11 @@ dcchrstr.o: dcchrstr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
@@ -143,8 +145,9 @@ dcchrstr.o: dcchrstr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
  ../include/dcmtk/dcmdata/dclist.h ../include/dcmtk/dcmdata/dcpcache.h \
- ../include/dcmtk/dcmdata/dcdeftag.h ../include/dcmtk/dcmdata/dcchrstr.h \
- ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dcelem.h
+ ../include/dcmtk/dcmdata/dcdeftag.h ../include/dcmtk/dcmdata/dcjson.h \
+ ../include/dcmtk/dcmdata/dcchrstr.h ../include/dcmtk/dcmdata/dcbytstr.h \
+ ../include/dcmtk/dcmdata/dcelem.h
 dccodec.o: dccodec.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dccodec.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
@@ -216,7 +219,9 @@ dcdatset.o: dcdatset.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
+ ../include/dcmtk/dcmdata/dcjson.h ../include/dcmtk/dcmdata/dctagkey.h \
+ ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcdatset.h \
+ ../include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -245,18 +250,18 @@ dcdatset.o: dcdatset.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcobject.h \
+ ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
- ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
- ../include/dcmtk/dcmdata/dclist.h ../include/dcmtk/dcmdata/dcpcache.h \
- ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcelem.h \
- ../include/dcmtk/dcmdata/dcpixel.h ../include/dcmtk/dcmdata/dcvrpobw.h \
- ../include/dcmtk/dcmdata/dcvrobow.h ../include/dcmtk/dcmdata/dcdeftag.h \
- ../include/dcmtk/dcmdata/dcostrma.h ../include/dcmtk/dcmdata/dcostrmf.h \
- ../include/dcmtk/dcmdata/dcistrma.h ../include/dcmtk/dcmdata/dcistrmf.h \
- ../include/dcmtk/dcmdata/dcwcache.h ../include/dcmtk/dcmdata/dcfcache.h
+ ../include/dcmtk/dcmdata/dcstack.h ../include/dcmtk/dcmdata/dclist.h \
+ ../include/dcmtk/dcmdata/dcpcache.h ../include/dcmtk/dcmdata/dcvrus.h \
+ ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcpixel.h \
+ ../include/dcmtk/dcmdata/dcvrpobw.h ../include/dcmtk/dcmdata/dcvrobow.h \
+ ../include/dcmtk/dcmdata/dcdeftag.h ../include/dcmtk/dcmdata/dcostrma.h \
+ ../include/dcmtk/dcmdata/dcostrmf.h ../include/dcmtk/dcmdata/dcistrma.h \
+ ../include/dcmtk/dcmdata/dcistrmf.h ../include/dcmtk/dcmdata/dcwcache.h \
+ ../include/dcmtk/dcmdata/dcfcache.h
 dcdatutl.o: dcdatutl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcdatutl.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
@@ -595,7 +600,8 @@ dcdirrec.o: dcdirrec.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
  ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmdata/dcspchrs.h \
- ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h
 dcelem.o: dcelem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -610,11 +616,13 @@ dcelem.o: dcelem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
+ ../include/dcmtk/dcmdata/dcjson.h ../include/dcmtk/dcmdata/dctagkey.h \
+ ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
+ ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcdefine.h \
- ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
+ ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
+ ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
@@ -641,14 +649,13 @@ dcelem.o: dcelem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h ../include/dcmtk/dcmdata/dcvr.h \
- ../include/dcmtk/dcmdata/dctag.h ../include/dcmtk/dcmdata/dctagkey.h \
- ../include/dcmtk/dcmdata/dcstack.h ../include/dcmtk/dcmdata/dcswap.h \
- ../include/dcmtk/dcmdata/dcistrma.h ../include/dcmtk/dcmdata/dcostrma.h \
- ../include/dcmtk/dcmdata/dcfcache.h ../include/dcmtk/dcmdata/dcwcache.h \
- ../include/dcmtk/dcmdata/dcitem.h ../include/dcmtk/dcmdata/dclist.h \
- ../include/dcmtk/dcmdata/dcpcache.h ../include/dcmtk/dcmdata/dcdeftag.h \
- ../include/dcmtk/dcmdata/vrscan.h ../include/dcmtk/dcmdata/dcpath.h \
- ../include/dcmtk/dcmdata/dcdatset.h
+ ../include/dcmtk/dcmdata/dctag.h ../include/dcmtk/dcmdata/dcstack.h \
+ ../include/dcmtk/dcmdata/dcswap.h ../include/dcmtk/dcmdata/dcistrma.h \
+ ../include/dcmtk/dcmdata/dcostrma.h ../include/dcmtk/dcmdata/dcfcache.h \
+ ../include/dcmtk/dcmdata/dcwcache.h ../include/dcmtk/dcmdata/dcitem.h \
+ ../include/dcmtk/dcmdata/dclist.h ../include/dcmtk/dcmdata/dcpcache.h \
+ ../include/dcmtk/dcmdata/dcdeftag.h ../include/dcmtk/dcmdata/vrscan.h \
+ ../include/dcmtk/dcmdata/dcpath.h ../include/dcmtk/dcmdata/dcdatset.h
 dcerror.o: dcerror.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcerror.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
@@ -718,7 +725,7 @@ dcfilefo.o: dcfilefo.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcostrma.h \
  ../include/dcmtk/dcmdata/dcostrmf.h ../include/dcmtk/dcmdata/dcistrma.h \
  ../include/dcmtk/dcmdata/dcistrmf.h ../include/dcmtk/dcmdata/dcwcache.h \
- ../include/dcmtk/dcmdata/dcfcache.h
+ ../include/dcmtk/dcmdata/dcfcache.h ../include/dcmtk/dcmdata/dcjson.h
 dcfilter.o: dcfilter.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcfilter.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
@@ -1076,9 +1083,21 @@ dcitem.o: dcitem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrut.h \
  ../include/dcmtk/dcmdata/dcspchrs.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
- ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../include/dcmtk/dcmdata/dcjson.h
+dcjson.o: dcjson.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmdata/dcjson.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcdefine.h
 dclist.o: dclist.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/dcmdata/dclist.h \
@@ -1128,6 +1147,64 @@ dclist.o: dclist.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
+dcmatch.o: dcmatch.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../include/dcmtk/dcmdata/dcmatch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../include/dcmtk/dcmdata/dcvrda.h ../include/dcmtk/dcmdata/dcbytstr.h \
+ ../include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
+ ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
+ ../include/dcmtk/dcmdata/dctag.h ../include/dcmtk/dcmdata/dctagkey.h \
+ ../include/dcmtk/dcmdata/dcstack.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../include/dcmtk/dcmdata/dcvrtm.h
 dcmetinf.o: dcmetinf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
@@ -1179,7 +1256,8 @@ dcmetinf.o: dcmetinf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dclist.h ../include/dcmtk/dcmdata/dcpcache.h \
  ../include/dcmtk/dcmdata/dcvrul.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcdeftag.h ../include/dcmtk/dcmdata/dcistrma.h \
- ../include/dcmtk/dcmdata/dcistrmf.h ../include/dcmtk/dcmdata/dcostrma.h
+ ../include/dcmtk/dcmdata/dcistrmf.h ../include/dcmtk/dcmdata/dcostrma.h \
+ ../include/dcmtk/dcmdata/dcjson.h
 dcobject.o: dcobject.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -1194,11 +1272,12 @@ dcobject.o: dcobject.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmdata/dcobject.h \
+ ../include/dcmtk/dcmdata/dcjson.h ../include/dcmtk/dcmdata/dctagkey.h \
+ ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcdefine.h \
- ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
+ ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
+ ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
@@ -1225,10 +1304,9 @@ dcobject.o: dcobject.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h ../include/dcmtk/dcmdata/dcvr.h \
- ../include/dcmtk/dcmdata/dctag.h ../include/dcmtk/dcmdata/dctagkey.h \
- ../include/dcmtk/dcmdata/dcstack.h ../include/dcmtk/dcmdata/dcdeftag.h \
- ../include/dcmtk/dcmdata/dcswap.h ../include/dcmtk/dcmdata/dcistrma.h \
- ../include/dcmtk/dcmdata/dcostrma.h
+ ../include/dcmtk/dcmdata/dctag.h ../include/dcmtk/dcmdata/dcstack.h \
+ ../include/dcmtk/dcmdata/dcdeftag.h ../include/dcmtk/dcmdata/dcswap.h \
+ ../include/dcmtk/dcmdata/dcistrma.h ../include/dcmtk/dcmdata/dcostrma.h
 dcostrma.o: dcostrma.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcostrma.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -1988,13 +2066,14 @@ dcsequen.o: dcsequen.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmdata/dcsequen.h \
+ ../include/dcmtk/dcmdata/dcjson.h ../include/dcmtk/dcmdata/dctagkey.h \
+ ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcsequen.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcdefine.h \
- ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
+ ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
+ ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
@@ -2021,14 +2100,14 @@ dcsequen.o: dcsequen.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
- ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
- ../include/dcmtk/dcmdata/dclist.h ../include/dcmtk/dcmdata/dcitem.h \
- ../include/dcmtk/dcmdata/dcpcache.h ../include/dcmtk/dcmdata/dcdirrec.h \
- ../include/dcmtk/dcmdata/dcfilefo.h ../include/dcmtk/dcmdata/dcdatset.h \
- ../include/dcmtk/dcmdata/dcpxitem.h ../include/dcmtk/dcmdata/dcvrobow.h \
- ../include/dcmtk/dcmdata/dcofsetl.h ../include/dcmtk/dcmdata/dcswap.h \
- ../include/dcmtk/dcmdata/dcmetinf.h ../include/dcmtk/dcmdata/dcdeftag.h \
- ../include/dcmtk/dcmdata/dcistrma.h ../include/dcmtk/dcmdata/dcostrma.h
+ ../include/dcmtk/dcmdata/dcstack.h ../include/dcmtk/dcmdata/dclist.h \
+ ../include/dcmtk/dcmdata/dcitem.h ../include/dcmtk/dcmdata/dcpcache.h \
+ ../include/dcmtk/dcmdata/dcdirrec.h ../include/dcmtk/dcmdata/dcfilefo.h \
+ ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcpxitem.h \
+ ../include/dcmtk/dcmdata/dcvrobow.h ../include/dcmtk/dcmdata/dcofsetl.h \
+ ../include/dcmtk/dcmdata/dcswap.h ../include/dcmtk/dcmdata/dcmetinf.h \
+ ../include/dcmtk/dcmdata/dcdeftag.h ../include/dcmtk/dcmdata/dcistrma.h \
+ ../include/dcmtk/dcmdata/dcostrma.h
 dcspchrs.o: dcspchrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcspchrs.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
@@ -2040,10 +2119,11 @@ dcspchrs.o: dcspchrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
@@ -2446,7 +2526,8 @@ dcvrat.o: dcvrat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
- ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
+ ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
+ ../include/dcmtk/dcmdata/dcjson.h
 dcvrcs.o: dcvrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/dcmdata/dcvrcs.h ../include/dcmtk/dcmdata/dcbytstr.h \
@@ -2594,7 +2675,8 @@ dcvrds.o: dcvrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
- ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
+ ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
+ ../include/dcmtk/dcmdata/dcjson.h
 dcvrdt.o: dcvrdt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrdt.h ../include/dcmtk/dcmdata/dcbytstr.h \
  ../include/dcmtk/dcmdata/dctypes.h \
@@ -2792,25 +2874,28 @@ dcvris.o: dcvris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
- ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
+ ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
+ ../include/dcmtk/dcmdata/dcjson.h
 dcvrlo.o: dcvrlo.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmdata/dcjson.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmdata/dcvrlo.h ../include/dcmtk/dcmdata/dcchrstr.h \
  ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
- ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
- ../../ofstd/include/dcmtk/ofstd/ofcast.h \
- ../../ofstd/include/dcmtk/ofstd/ofexport.h \
- ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../oflog/include/dcmtk/oflog/config/defines.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
- ../../ofstd/include/dcmtk/ofstd/oftypes.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../oflog/include/dcmtk/oflog/tstring.h \
- ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../oflog/include/dcmtk/oflog/tchar.h \
  ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
@@ -2836,12 +2921,11 @@ dcvrlo.o: dcvrlo.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
- ../include/dcmtk/dcmdata/dcobject.h \
+ ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
- ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
+ ../include/dcmtk/dcmdata/dcstack.h
 dcvrlt.o: dcvrlt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrlt.h ../include/dcmtk/dcmdata/dcchrstr.h \
  ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -2906,12 +2990,13 @@ dcvrobow.o: dcvrobow.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofuuid.h \
- ../include/dcmtk/dcmdata/dcvrobow.h ../include/dcmtk/dcmdata/dcelem.h \
- ../include/dcmtk/dcmdata/dcobject.h \
+ ../include/dcmtk/dcmdata/dcjson.h ../include/dcmtk/dcmdata/dctagkey.h \
+ ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvrobow.h \
+ ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcdefine.h \
- ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
+ ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
+ ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
@@ -2938,9 +3023,9 @@ dcvrobow.o: dcvrobow.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h ../include/dcmtk/dcmdata/dcvr.h \
- ../include/dcmtk/dcmdata/dctag.h ../include/dcmtk/dcmdata/dctagkey.h \
- ../include/dcmtk/dcmdata/dcstack.h ../include/dcmtk/dcmdata/dcdeftag.h \
- ../include/dcmtk/dcmdata/dcswap.h ../include/dcmtk/dcmdata/dcuid.h
+ ../include/dcmtk/dcmdata/dctag.h ../include/dcmtk/dcmdata/dcstack.h \
+ ../include/dcmtk/dcmdata/dcdeftag.h ../include/dcmtk/dcmdata/dcswap.h \
+ ../include/dcmtk/dcmdata/dcuid.h
 dcvrod.o: dcvrod.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofuuid.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -2991,7 +3076,7 @@ dcvrod.o: dcvrod.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
- ../include/dcmtk/dcmdata/dcswap.h
+ ../include/dcmtk/dcmdata/dcswap.h ../include/dcmtk/dcmdata/dcjson.h
 dcvrof.o: dcvrof.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofuuid.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -3001,14 +3086,15 @@ dcvrof.o: dcvrof.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrfl.h \
- ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
+ ../include/dcmtk/dcmdata/dcjson.h ../include/dcmtk/dcmdata/dctagkey.h \
+ ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvrof.h \
+ ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcelem.h \
+ ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../include/dcmtk/dcmdata/dcerror.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcxfer.h \
- ../include/dcmtk/dcmdata/dctypes.h \
+ ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
@@ -3041,8 +3127,7 @@ dcvrof.o: dcvrof.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
- ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
- ../include/dcmtk/dcmdata/dcswap.h
+ ../include/dcmtk/dcmdata/dcstack.h ../include/dcmtk/dcmdata/dcswap.h
 dcvrol.o: dcvrol.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofuuid.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -3093,25 +3178,27 @@ dcvrol.o: dcvrol.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
- ../include/dcmtk/dcmdata/dcswap.h
+ ../include/dcmtk/dcmdata/dcjson.h ../include/dcmtk/dcmdata/dcswap.h
 dcvrpn.o: dcvrpn.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmdata/dcjson.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmdata/dcvrpn.h ../include/dcmtk/dcmdata/dcchrstr.h \
  ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
- ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
- ../../ofstd/include/dcmtk/ofstd/ofcast.h \
- ../../ofstd/include/dcmtk/ofstd/ofexport.h \
- ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../oflog/include/dcmtk/oflog/config/defines.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
- ../../ofstd/include/dcmtk/ofstd/oftypes.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../oflog/include/dcmtk/oflog/tstring.h \
- ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../oflog/include/dcmtk/oflog/tchar.h \
  ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
@@ -3137,12 +3224,11 @@ dcvrpn.o: dcvrpn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
- ../include/dcmtk/dcmdata/dcobject.h \
+ ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
- ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
+ ../include/dcmtk/dcmdata/dcstack.h
 dcvrpobw.o: dcvrpobw.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrpobw.h ../include/dcmtk/dcmdata/dcvrobow.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
@@ -3240,7 +3326,8 @@ dcvrsh.o: dcvrsh.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
- ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
+ ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
+ ../include/dcmtk/dcmdata/dcjson.h
 dcvrsl.o: dcvrsl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/dcmdata/dcvrsl.h ../include/dcmtk/dcmdata/dcelem.h \
diff --git a/dcmdata/libsrc/Makefile.in b/dcmdata/libsrc/Makefile.in
index f844257..04b14f2 100644
--- a/dcmdata/libsrc/Makefile.in
+++ b/dcmdata/libsrc/Makefile.in
@@ -17,7 +17,7 @@ oflogdir = $(top_srcdir)/../oflog
 
 LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include
 LIBDIRS = -L$(ofstddir)/libsrc -L$(oflogdir)/libsrc
-LOCALLIBS = -loflog -lofstd $(ICONVLIBS)
+LOCALLIBS = -loflog -lofstd $(CHARCONVLIBS)
 LOCALDEFS =
 
 # clear environment variable in the scope of this makefile
@@ -47,7 +47,8 @@ objs = dcpixseq.o dcpxitem.o dcuid.o dcerror.o \
 	dcdictbi.o dctagkey.o dcdicent.o dcdict.o dcvr.o dchashdi.o cmdlnarg.o \
 	dcvrut.o dcvrur.o dcvruc.o dctypes.o dcpcache.o dcddirif.o dcistrma.o \
 	dcistrmb.o dcistrmf.o dcistrmz.o dcostrma.o dcostrmb.o dcostrmf.o \
-	dcostrmz.o dcwcache.o dcpath.o vrscan.o vrscanl.o dcfilter.o
+	dcostrmz.o dcwcache.o dcpath.o vrscan.o vrscanl.o dcfilter.o dcjson.o \
+	dcmatch.o
 
 support_objs = mkdeftag.o mkdictbi.o
 support_progs = mkdeftag mkdictbi
diff --git a/dcmdata/libsrc/dcbytstr.cc b/dcmdata/libsrc/dcbytstr.cc
index e3c6c74..794d4b6 100644
--- a/dcmdata/libsrc/dcbytstr.cc
+++ b/dcmdata/libsrc/dcbytstr.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -24,6 +24,7 @@
 #include "dcmtk/ofstd/ofstream.h"
 #include "dcmtk/ofstd/ofstring.h"
 #include "dcmtk/ofstd/ofstd.h"
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/dcmdata/dcbytstr.h"
 #include "dcmtk/dcmdata/dcvr.h"
 
@@ -81,6 +82,16 @@ OFCondition getStringPart(OFString &result,
 
 // ********************************
 
+DcmByteString::DcmByteString(const DcmTag &tag)
+  : DcmElement(tag, 0),
+    paddingChar(' '),
+    maxLength(DCM_UndefinedLength),
+    realLength(0),
+    fStringMode(DCM_UnknownString),
+    nonSignificantChars()
+{
+}
+
 
 DcmByteString::DcmByteString(const DcmTag &tag,
                              const Uint32 len)
@@ -898,3 +909,38 @@ OFCondition DcmByteString::checkStringValue(const OFString &value,
     }
     return result;
 }
+
+
+// ********************************
+
+
+OFCondition DcmByteString::writeJson(STD_NAMESPACE ostream &out,
+                                     DcmJsonFormat &format)
+{
+    /* always write JSON Opener */
+    DcmElement::writeJsonOpener(out, format);
+    /* write element value (if non-empty) */
+    if (!isEmpty())
+    {
+        OFString value;
+        OFCondition status = getOFString(value, 0L);
+        if (status.bad())
+            return status;
+        format.printValuePrefix(out);
+        DcmJsonFormat::printValueString(out, value);
+        const unsigned long vm = getVM();
+        for (unsigned long valNo = 1; valNo < vm; ++valNo)
+        {
+            status = getOFString(value, valNo);
+            if (status.bad())
+                return status;
+            format.printNextArrayElementPrefix(out);
+            DcmJsonFormat::printValueString(out, value);
+        }
+        format.printValueSuffix(out);
+    }
+    /* write JSON Closer  */
+    DcmElement::writeJsonCloser(out, format);
+    /* always report success */
+    return EC_Normal;
+}
diff --git a/dcmdata/libsrc/dcchrstr.cc b/dcmdata/libsrc/dcchrstr.cc
index 8a6f955..3f4d158 100644
--- a/dcmdata/libsrc/dcchrstr.cc
+++ b/dcmdata/libsrc/dcchrstr.cc
@@ -25,6 +25,7 @@
 #include "dcmtk/dcmdata/dcspchrs.h"   /* for class DcmSpecificCharacterSet */
 #include "dcmtk/dcmdata/dcitem.h"     /* for class DcmItem */
 #include "dcmtk/dcmdata/dcdeftag.h"   /* for tag definitions */
+#include "dcmtk/dcmdata/dcjson.h"     /* json helper classes */
 
 //
 // This implementation does not support 16 bit character sets. Since 8 bit
@@ -45,14 +46,12 @@
 
 
 DcmCharString::DcmCharString(const DcmTag &tag, const Uint32 len)
-  : DcmByteString(tag, len),
-    delimiterChars()
+  : DcmByteString(tag, len)
 {
 }
 
 DcmCharString::DcmCharString(const DcmCharString &old)
-  : DcmByteString(old),
-    delimiterChars(old.delimiterChars)
+  : DcmByteString(old)
 {
 }
 
@@ -63,13 +62,7 @@ DcmCharString::~DcmCharString(void)
 
 DcmCharString &DcmCharString::operator=(const DcmCharString &obj)
 {
-    if (this != &obj)
-    {
-        DcmByteString::operator=(obj);
-
-        /* copy member variables */
-        delimiterChars = obj.delimiterChars;
-    }
+    DcmByteString::operator=(obj);
     return *this;
 }
 
@@ -173,7 +166,7 @@ OFCondition DcmCharString::convertCharacterSet(DcmSpecificCharacterSet &converte
     {
         OFString resultStr;
         // convert string to selected character string and replace the element value
-        status = converter.convertString(str, len, resultStr, delimiterChars);
+        status = converter.convertString(str, len, resultStr, getDelimiterChars());
         if (status.good())
         {
             // check whether the value has changed during the conversion (slows down the process?)
@@ -222,3 +215,55 @@ OFCondition DcmCharString::getSpecificCharacterSet(OFString &charset)
     }
     return status;
 }
+
+
+// ********************************
+
+
+OFCondition DcmCharString::writeJson(STD_NAMESPACE ostream &out,
+    DcmJsonFormat &format)
+{
+    /* always write JSON Opener */
+    DcmElement::writeJsonOpener(out, format);
+    /* write element value (if non-empty) */
+    if (!isEmpty())
+    {
+        OFString value;
+        if (format.asBulkDataURI(getTag(), value))
+        {
+            format.printBulkDataURIPrefix(out);
+            DcmJsonFormat::printString(out, value);
+        }
+        else
+        {
+            OFCondition status = getOFString(value, 0L);
+            if (status.bad())
+                return status;
+            format.printValuePrefix(out);
+            DcmJsonFormat::printValueString(out, value);
+            const unsigned long vm = getVM();
+            for (unsigned long valNo = 1; valNo < vm; ++valNo)
+            {
+                status = getOFString(value, valNo);
+                if (status.bad())
+                    return status;
+                format.printNextArrayElementPrefix(out);
+                DcmJsonFormat::printValueString(out, value);
+            }
+            format.printValueSuffix(out);
+        }
+    }
+    /* write JSON Closer  */
+    DcmElement::writeJsonCloser(out, format);
+    /* always report success */
+    return EC_Normal;
+}
+
+
+// ********************************
+
+
+const OFString& DcmCharString::getDelimiterChars() const
+{
+    return DcmVR(EVR_UN).getDelimiterChars();
+}
diff --git a/dcmdata/libsrc/dcdatset.cc b/dcmdata/libsrc/dcdatset.cc
index 3fcf6c3..61f4bc1 100644
--- a/dcmdata/libsrc/dcdatset.cc
+++ b/dcmdata/libsrc/dcdatset.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -31,6 +31,7 @@
 #include "dcmtk/ofstd/ofstack.h"
 #include "dcmtk/ofstd/ofstd.h"
 
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/dcmdata/dcdatset.h"
 #include "dcmtk/dcmdata/dcxfer.h"
 #include "dcmtk/dcmdata/dcvrus.h"
@@ -339,6 +340,30 @@ OFCondition DcmDataset::writeXML(STD_NAMESPACE ostream &out,
 // ********************************
 
 
+OFCondition DcmDataset::writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format)
+{
+    // write dataset content
+    if (!elementList->empty())
+    {
+        elementList->seek(ELP_first);
+        OFCondition status = EC_Normal;
+        // write content of all children
+        status = elementList->get()->writeJson(out, format);
+        while (status.good() && elementList->seek(ELP_next))
+        {
+            out << "," << format.newline();
+            status = elementList->get()->writeJson(out, format);
+        }
+        return status;
+    }
+    return EC_Normal;
+}
+
+
+// ********************************
+
+
 OFCondition DcmDataset::read(DcmInputStream &inStream,
                              const E_TransferSyntax xfer,
                              const E_GrpLenEncoding glenc,
@@ -418,6 +443,7 @@ OFCondition DcmDataset::read(DcmInputStream &inStream,
         /* pass processing the task to class DcmItem */
         if (errorFlag.good())
             errorFlag = DcmItem::read(inStream, OriginalXfer, glenc, maxReadLength);
+
     }
 
     /* if the error flag shows ok or that the end of the stream was encountered, */
@@ -425,15 +451,21 @@ OFCondition DcmDataset::read(DcmInputStream &inStream,
     /* case, we need to do something for the current dataset object */
     if (errorFlag.good() || errorFlag == EC_EndOfStream)
     {
-        /* set the error flag to ok */
-        errorFlag = EC_Normal;
+        /* perform some final checks on dataset level */
+        errorFlag = doPostReadChecks();
 
-        /* take care of group length (according to what is specified */
-        /* in glenc) and padding elements (don't change anything) */
-        computeGroupLengthAndPadding(glenc, EPD_noChange, OriginalXfer);
+        if (errorFlag.good())
+        {
+            /* set the error flag to ok */
+            errorFlag = EC_Normal;
 
-        /* and set the transfer state to ERW_ready to indicate that the data set is complete */
-        setTransferState(ERW_ready);
+            /* take care of group length (according to what is specified */
+            /* in glenc) and padding elements (don't change anything) */
+            computeGroupLengthAndPadding(glenc, EPD_noChange, OriginalXfer);
+
+            /* and set the transfer state to ERW_ready to indicate that the data set is complete */
+            setTransferState(ERW_ready);
+        }
     }
 
     /* dump information if required */
@@ -762,3 +794,46 @@ void DcmDataset::removeAllButOriginalRepresentations()
         }
     }
 }
+
+
+// ********************************
+
+
+OFCondition DcmDataset::doPostReadChecks()
+{
+  DcmElement* pixData = NULL;
+  DcmXfer xf(OriginalXfer);
+  OFCondition result = EC_Normal;
+  if (findAndGetElement(DCM_PixelData, pixData).good())
+  {
+      Uint32 valueLength = pixData->getLengthField();
+      if (xf.isEncapsulated())
+      {
+          if (valueLength != DCM_UndefinedLength)
+          {
+              if (dcmUseExplLengthPixDataForEncTS.get() == OFFalse /* default case */)
+              {
+                  /* length of top level dataset's Pixel Data is explicitly */
+                  /* defined but we have a transfer syntax requiring */
+                  /* encapsulated pixel data (always encoded with undefined */
+                  /* length). Print and return an error. */
+                  DCMDATA_ERROR("Found explicit length Pixel Data in top level "
+                  << "dataset with transfer syntax " << xf.getXferName()
+                  << ": Only undefined length permitted");
+                  result = EC_PixelDataExplLengthIllegal;
+              }
+              else
+              {
+                  /* Only print warning if requested by related OFGlobal, */
+                  /* and behave like as we have the same case as for an */
+                  /* icon image, which is always uncompressed (see above). */
+                  DCMDATA_WARN("Found explicit length Pixel Data in top level "
+                  << "dataset with transfer syntax " << xf.getXferName()
+                  << ": Only undefined length permitted (ignored on explicit request)");
+              }
+          }
+      }
+  }
+
+  return result;
+}
diff --git a/dcmdata/libsrc/dcddirif.cc b/dcmdata/libsrc/dcddirif.cc
index b31bf12..ca118d7 100644
--- a/dcmdata/libsrc/dcddirif.cc
+++ b/dcmdata/libsrc/dcddirif.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2016, OFFIS e.V.
+ *  Copyright (C) 2002-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -667,7 +667,8 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass)
              compare(sopClass, UID_SpectaclePrescriptionReportStorage) ||
              compare(sopClass, UID_MacularGridThicknessAndVolumeReportStorage) ||
              compare(sopClass, UID_ImplantationPlanSRDocumentStorage) ||
-             compare(sopClass, UID_AcquisitionContextSRStorage))
+             compare(sopClass, UID_AcquisitionContextSRStorage) ||
+             compare(sopClass, UID_SimplifiedAdultEchoSRStorage))
     {
         result = ERT_SRDocument;
     }
@@ -1567,7 +1568,8 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                                 compare(mediaSOPClassUID, UID_SpectaclePrescriptionReportStorage) ||
                                 compare(mediaSOPClassUID, UID_MacularGridThicknessAndVolumeReportStorage) ||
                                 compare(mediaSOPClassUID, UID_ImplantationPlanSRDocumentStorage) ||
-                                compare(mediaSOPClassUID, UID_AcquisitionContextSRStorage);
+                                compare(mediaSOPClassUID, UID_AcquisitionContextSRStorage) ||
+                                compare(mediaSOPClassUID, UID_SimplifiedAdultEchoSRStorage);
                      }
                     /* is it one of the waveform SOP Classes? */
                     if (!found)
@@ -5353,7 +5355,7 @@ OFBool DicomDirInterface::warnAboutInconsistentAttributes(DcmDirectoryRecord *re
             first = OFFalse;
         }
     }
-    if (!result & abortCheck)
+    if (!result && abortCheck)
         DCMDATA_ERROR("aborting on first inconsistent file: " << sourceFilename);
     /* return OFTrue in case of any inconsistency */
     return !result;
diff --git a/dcmdata/libsrc/dcdicdir.cc b/dcmdata/libsrc/dcdicdir.cc
index 64759e3..ec1dc38 100644
--- a/dcmdata/libsrc/dcdicdir.cc
+++ b/dcmdata/libsrc/dcdicdir.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -395,11 +395,21 @@ OFCondition DcmDicomDir::moveRecordToTree( DcmDirectoryRecord *startRec,
         l_error = EC_IllegalCall;
     else
     {
-        while ( startRec != NULL )
+        while ( (startRec != NULL) && l_error.good() )
         {
             DcmDirectoryRecord *lowerRec = NULL;
             DcmDirectoryRecord *nextRec = NULL;
 
+            // check whether directory record is really part of the given sequence:
+            if (&fromDirSQ != startRec->getParent())
+            {
+                DCMDATA_ERROR("DcmDicomDir: Record with offset=" << startRec->getFileOffset()
+                    << " is referenced more than once, ignoring later reference");
+                l_error = EC_InvalidDICOMDIR;
+                // exit the while loop
+                break;
+            }
+
             DcmUnsignedLongOffset *offElem;
             offElem = lookForOffsetElem( startRec, DCM_OffsetOfReferencedLowerLevelDirectoryEntity );
             if ( offElem != NULL )
@@ -408,8 +418,8 @@ OFCondition DcmDicomDir::moveRecordToTree( DcmDirectoryRecord *startRec,
             if ( offElem != NULL )
                 nextRec = OFstatic_cast(DcmDirectoryRecord *, offElem->getNextRecord());
 
-            DCMDATA_TRACE("DcmDicomDir::moveRecordToTree() Record "
-                << startRec->getTag()
+            DCMDATA_TRACE("DcmDicomDir::moveRecordToTree() Record with"
+                << " offset=" << startRec->getFileOffset()
                 << " p=" << OFstatic_cast(void *, startRec)
                 << " has lower=" << OFstatic_cast(void *, lowerRec)
                 << " and next=" << OFstatic_cast(void *, nextRec) << " Record");
@@ -423,14 +433,17 @@ OFCondition DcmDicomDir::moveRecordToTree( DcmDirectoryRecord *startRec,
                 DcmItem *dit = fromDirSQ.remove( startRec );
                 if ( dit == NULL )
                 {
-                    DCMDATA_ERROR("DcmDicomDir::moveRecordToTree() DirRecord is part of unknown Sequence");
+                    DCMDATA_ERROR("DcmDicomDir: Record with offset=" << startRec->getFileOffset()
+                        << " is part of unknown Sequence");
                 }
             }
             else
             {
                 DCMDATA_ERROR("DcmDicomDir::moveRecordToTree() Cannot insert DirRecord (=NULL?)");
             }
-            moveRecordToTree( lowerRec, fromDirSQ, startRec );
+
+            // recursively call this method for next lower level:
+            l_error = moveRecordToTree( lowerRec, fromDirSQ, startRec );
 
             // We handled this record, now move on to the next one on this level.
             // The next while-loop iteration does the equivalent of the following:
@@ -475,6 +488,7 @@ OFCondition DcmDicomDir::convertLinearToTree()
 {
     DcmDataset &dset = getDataset();    // guaranteed to exist
     DcmSequenceOfItems &localDirRecSeq = getDirRecSeq( dset );
+    // currently, always returns EC_Normal
     OFCondition l_error = resolveAllOffsets( dset );
 
     // search for first directory record:
@@ -484,15 +498,17 @@ OFCondition DcmDicomDir::convertLinearToTree()
         firstRootRecord = OFstatic_cast(DcmDirectoryRecord *, offElem->getNextRecord());
 
     // create tree structure from flat record list:
-    moveRecordToTree( firstRootRecord, localDirRecSeq, &getRootRecord() );
-
-    // move MRDRs from localDirRecSeq to global MRDRSeq:
-    moveMRDRbetweenSQs( localDirRecSeq, getMRDRSequence() );
+    l_error = moveRecordToTree( firstRootRecord, localDirRecSeq, &getRootRecord() );
 
-    // dissolve MRDR references for all remaining items
-    for (unsigned long i = localDirRecSeq.card(); i > 0; i-- )
-        linkMRDRtoRecord( OFstatic_cast(DcmDirectoryRecord *, localDirRecSeq.getItem(i-1)) );
+    if (l_error.good())
+    {
+        // move MRDRs from localDirRecSeq to global MRDRSeq:
+        moveMRDRbetweenSQs( localDirRecSeq, getMRDRSequence() );
 
+        // dissolve MRDR references for all remaining items
+        for (unsigned long i = localDirRecSeq.card(); i > 0; i-- )
+            linkMRDRtoRecord( OFstatic_cast(DcmDirectoryRecord *, localDirRecSeq.getItem(i-1)) );
+    }
     return l_error;
 }
 
diff --git a/dcmdata/libsrc/dcdictbi.cc b/dcmdata/libsrc/dcdictbi.cc
index 42ae3c2..2e09145 100644
--- a/dcmdata/libsrc/dcdictbi.cc
+++ b/dcmdata/libsrc/dcdictbi.cc
@@ -4,7 +4,7 @@
 **
 **   User: joergr
 **   Host: thinkpad
-**   Date: 2016-06-13 09:57:11
+**   Date: 2017-01-31 14:11:02
 **   Prog: /home/joergr/Source/dcmtk-full/public/dcmdata/libsrc/mkdictbi
 **
 **   From: ../data/dicom.dic
@@ -700,6 +700,18 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SH, "TimezoneOffsetFromUTC", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0008, 0x0220, 0x0008, 0x0220,
+      EVR_SQ, "ResponsibleGroupCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0008, 0x0221, 0x0008, 0x0221,
+      EVR_CS, "EquipmentModality", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0008, 0x0222, 0x0008, 0x0222,
+      EVR_LO, "ManufacturerRelatedModelGroup", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0008, 0x0300, 0x0008, 0x0300,
       EVR_SQ, "PrivateDataElementCharacteristicsSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -732,6 +744,42 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_CS, "DeidentificationAction", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0008, 0x0308, 0x0008, 0x0308,
+      EVR_US, "PrivateDataElement", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0008, 0x0309, 0x0008, 0x0309,
+      EVR_UL, "PrivateDataElementValueMultiplicity", 1, 3, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0008, 0x030a, 0x0008, 0x030a,
+      EVR_CS, "PrivateDataElementValueRepresentation", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0008, 0x030b, 0x0008, 0x030b,
+      EVR_UL, "PrivateDataElementNumberOfItems", 1, 2, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0008, 0x030c, 0x0008, 0x030c,
+      EVR_UC, "PrivateDataElementName", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0008, 0x030d, 0x0008, 0x030d,
+      EVR_UC, "PrivateDataElementKeyword", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0008, 0x030e, 0x0008, 0x030e,
+      EVR_UT, "PrivateDataElementDescription", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0008, 0x030f, 0x0008, 0x030f,
+      EVR_UT, "PrivateDataElementEncoding", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0008, 0x0310, 0x0008, 0x0310,
+      EVR_SQ, "PrivateDataElementDefinitionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0008, 0x1000, 0x0008, 0x1000,
       EVR_AE, "RETIRED_NetworkID", 1, 1, "DICOM/retired",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -2074,6 +2122,22 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "StrainCodeSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0010, 0x0221, 0x0010, 0x0221,
+      EVR_SQ, "GeneticModificationsSequence", 1, 1, "DICOM/CP_1619",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0222, 0x0010, 0x0222,
+      EVR_UC, "GeneticModificationsDescription", 1, 1, "DICOM/CP_1619",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0223, 0x0010, 0x0223,
+      EVR_LO, "GeneticModificationsNomenclature", 1, 1, "DICOM/CP_1619",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0229, 0x0010, 0x0229,
+      EVR_SQ, "GeneticModificationsCodeSequence", 1, 1, "DICOM/CP_1619",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0010, 0x1000, 0x0010, 0x1000,
       EVR_LO, "OtherPatientIDs", 1, -1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -2102,6 +2166,18 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "PatientSizeCodeSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0010, 0x1022, 0x0010, 0x1022,
+      EVR_DS, "PatientBodyMassIndex", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x1023, 0x0010, 0x1023,
+      EVR_DS, "MeasuredAPDimension", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x1024, 0x0010, 0x1024,
+      EVR_DS, "MeasuredLateralDimension", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0010, 0x1030, 0x0010, 0x1030,
       EVR_DS, "PatientWeight", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -2740,6 +2816,14 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_CS, "ConsentForDistributionFlag", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0012, 0x0086, 0x0012, 0x0086,
+      EVR_DA, "EthicsCommitteeApprovalEffectivenessStartDate", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0012, 0x0087, 0x0012, 0x0087,
+      EVR_DA, "EthicsCommitteeApprovalEffectivenessEndDate", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
 #ifdef ENABLE_PRIVATE_TAGS
   , { 0x0013, 0x0000, 0x0013, 0x0000,
       EVR_LT, "ModifyingPhysician", 1, 1, "PrivateTag",
@@ -3912,6 +3996,14 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_LO, "GantryID", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0018, 0x1009, 0x0018, 0x1009,
+      EVR_UT, "UniqueDeviceIdentifier", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x100a, 0x0018, 0x100a,
+      EVR_SQ, "UDISequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0018, 0x1010, 0x0018, 0x1010,
       EVR_LO, "SecondaryCaptureDeviceID", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -5885,7 +5977,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0018, 0x9323, 0x0018, 0x9323,
-      EVR_CS, "ExposureModulationType", 1, 1, "DICOM",
+      EVR_CS, "ExposureModulationType", 1, -1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0018, 0x9324, 0x0018, 0x9324,
@@ -6628,6 +6720,242 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_xs, "ZeroVelocityPixelValue", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0018, 0x9900, 0x0018, 0x9900,
+      EVR_LO, "ReferenceLocationLabel", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9901, 0x0018, 0x9901,
+      EVR_UT, "ReferenceLocationDescription", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9902, 0x0018, 0x9902,
+      EVR_SQ, "ReferenceBasisCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9903, 0x0018, 0x9903,
+      EVR_SQ, "ReferenceGeometryCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9904, 0x0018, 0x9904,
+      EVR_DS, "OffsetDistance", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9905, 0x0018, 0x9905,
+      EVR_CS, "OffsetDirection", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9906, 0x0018, 0x9906,
+      EVR_SQ, "PotentialScheduledProtocolCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9907, 0x0018, 0x9907,
+      EVR_SQ, "PotentialRequestedProcedureCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9908, 0x0018, 0x9908,
+      EVR_UC, "PotentialReasonsForProcedure", 1, -1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9909, 0x0018, 0x9909,
+      EVR_SQ, "PotentialReasonsForProcedureCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x990a, 0x0018, 0x990a,
+      EVR_UC, "PotentialDiagnosticTasks", 1, -1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x990b, 0x0018, 0x990b,
+      EVR_SQ, "ContraindicationsCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x990c, 0x0018, 0x990c,
+      EVR_SQ, "ReferencedDefinedProtocolSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x990d, 0x0018, 0x990d,
+      EVR_SQ, "ReferencedPerformedProtocolSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x990e, 0x0018, 0x990e,
+      EVR_SQ, "PredecessorProtocolSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x990f, 0x0018, 0x990f,
+      EVR_UT, "ProtocolPlanningInformation", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9910, 0x0018, 0x9910,
+      EVR_UT, "ProtocolDesignRationale", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9911, 0x0018, 0x9911,
+      EVR_SQ, "PatientSpecificationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9912, 0x0018, 0x9912,
+      EVR_SQ, "ModelSpecificationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9913, 0x0018, 0x9913,
+      EVR_SQ, "ParametersSpecificationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9914, 0x0018, 0x9914,
+      EVR_SQ, "InstructionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9915, 0x0018, 0x9915,
+      EVR_US, "InstructionIndex", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9916, 0x0018, 0x9916,
+      EVR_LO, "InstructionText", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9917, 0x0018, 0x9917,
+      EVR_UT, "InstructionDescription", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9918, 0x0018, 0x9918,
+      EVR_CS, "InstructionPerformedFlag", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9919, 0x0018, 0x9919,
+      EVR_DT, "InstructionPerformedDateTime", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x991a, 0x0018, 0x991a,
+      EVR_UT, "InstructionPerformanceComment", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x991b, 0x0018, 0x991b,
+      EVR_SQ, "PatientPositioningInstructionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x991c, 0x0018, 0x991c,
+      EVR_SQ, "PositioningMethodCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x991d, 0x0018, 0x991d,
+      EVR_SQ, "PositioningLandmarkSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x991e, 0x0018, 0x991e,
+      EVR_UI, "TargetFrameOfReferenceUID", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x991f, 0x0018, 0x991f,
+      EVR_SQ, "AcquisitionProtocolElementSpecificationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9920, 0x0018, 0x9920,
+      EVR_SQ, "AcquisitionProtocolElementSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9921, 0x0018, 0x9921,
+      EVR_US, "ProtocolElementNumber", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9922, 0x0018, 0x9922,
+      EVR_LO, "ProtocolElementName", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9923, 0x0018, 0x9923,
+      EVR_UT, "ProtocolElementCharacteristicsSummary", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9924, 0x0018, 0x9924,
+      EVR_UT, "ProtocolElementPurpose", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9930, 0x0018, 0x9930,
+      EVR_CS, "AcquisitionMotion", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9931, 0x0018, 0x9931,
+      EVR_SQ, "AcquisitionStartLocationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9932, 0x0018, 0x9932,
+      EVR_SQ, "AcquisitionEndLocationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9933, 0x0018, 0x9933,
+      EVR_SQ, "ReconstructionProtocolElementSpecificationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9934, 0x0018, 0x9934,
+      EVR_SQ, "ReconstructionProtocolElementSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9935, 0x0018, 0x9935,
+      EVR_SQ, "StorageProtocolElementSpecificationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9936, 0x0018, 0x9936,
+      EVR_SQ, "StorageProtocolElementSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9937, 0x0018, 0x9937,
+      EVR_LO, "RequestedSeriesDescription", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9938, 0x0018, 0x9938,
+      EVR_US, "SourceAcquisitionProtocolElementNumber", 1, -1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9939, 0x0018, 0x9939,
+      EVR_US, "SourceAcquisitionBeamNumber", 1, -1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x993a, 0x0018, 0x993a,
+      EVR_US, "SourceReconstructionProtocolElementNumber", 1, -1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x993b, 0x0018, 0x993b,
+      EVR_SQ, "ReconstructionStartLocationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x993c, 0x0018, 0x993c,
+      EVR_SQ, "ReconstructionEndLocationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x993d, 0x0018, 0x993d,
+      EVR_SQ, "ReconstructionAlgorithmSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x993e, 0x0018, 0x993e,
+      EVR_SQ, "ReconstructionTargetCenterLocationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9941, 0x0018, 0x9941,
+      EVR_UT, "ImageFilterDescription", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9942, 0x0018, 0x9942,
+      EVR_FD, "CTDIvolNotificationTrigger", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9943, 0x0018, 0x9943,
+      EVR_FD, "DLPNotificationTrigger", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9944, 0x0018, 0x9944,
+      EVR_CS, "AutoKVPSelectionType", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9945, 0x0018, 0x9945,
+      EVR_FD, "AutoKVPUpperBound", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9946, 0x0018, 0x9946,
+      EVR_FD, "AutoKVPLowerBound", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9947, 0x0018, 0x9947,
+      EVR_CS, "ProtocolDefinedPatientPosition", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0018, 0xa001, 0x0018, 0xa001,
       EVR_SQ, "ContributingEquipmentSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -11050,6 +11378,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_LO, "RETIRED_Reference", 1, -1, "DICOM/retired",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0020, 0x103f, 0x0020, 0x103f,
+      EVR_LO, "TargetPositionReferenceIndicator", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0020, 0x1040, 0x0020, 0x1040,
       EVR_LO, "PositionReferenceIndicator", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -14916,6 +15248,18 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_OW, "SegmentedAlphaPaletteColorLookupTableData", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0028, 0x1230, 0x0028, 0x1230,
+      EVR_SQ, "StoredValueColorRangeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0028, 0x1231, 0x0028, 0x1231,
+      EVR_FD, "MinimumStoredValueMapped", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0028, 0x1232, 0x0028, 0x1232,
+      EVR_FD, "MaximumStoredValueMapped", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0028, 0x1300, 0x0028, 0x1300,
       EVR_CS, "BreastImplantPresent", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -20746,6 +21090,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_ST, "SegmentDescription", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0062, 0x0007, 0x0062, 0x0007,
+      EVR_SQ, "SegmentationAlgorithmIdentificationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0062, 0x0008, 0x0062, 0x0008,
       EVR_CS, "SegmentAlgorithmType", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -21786,6 +22134,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "FiducialSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0070, 0x031f, 0x0070, 0x031f,
+      EVR_SQ, "FiducialsPropertyCategoryCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0070, 0x0401, 0x0070, 0x0401,
       EVR_US, "GraphicLayerRecommendedDisplayCIELabValue", 3, 3, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -23074,6 +23426,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_UT, "ConstraintViolationCondition", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0082, 0x0038, 0x0082, 0x0038,
+      EVR_CS, "ModifiableConstraintFlag", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
 #ifdef ENABLE_PRIVATE_TAGS
   , { 0x0087, 0x0010, 0x0087, 0x0010,
       EVR_CS, "MediaType", 1, 1, "PrivateTag",
@@ -24757,7 +25113,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x3006, 0x00b9, 0x3006, 0x00b9,
-      EVR_SQ, "AdditionalRTROIIdentificationCodeSequence", 1, 1, "DICOM",
+      EVR_SQ, "RETIRED_AdditionalRTROIIdentificationCodeSequence", 1, 1, "DICOM/retired",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x3006, 0x00c0, 0x3006, 0x00c0,
@@ -24936,6 +25292,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_ST, "OverrideReason", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x3008, 0x0067, 0x3008, 0x0067,
+      EVR_US, "ParameterValueNumber", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x3008, 0x0068, 0x3008, 0x0068,
       EVR_SQ, "CorrectedParameterSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -26516,6 +26876,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_FL, "IsocenterToRangeModulatorDistance", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x300a, 0x038f, 0x300a, 0x038f,
+      EVR_FL, "ScanSpotTimeOffset", 1, -1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x300a, 0x0390, 0x300a, 0x0390,
       EVR_SH, "ScanSpotTuneID", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
diff --git a/dcmdata/libsrc/dcdirrec.cc b/dcmdata/libsrc/dcdirrec.cc
index 982ecea..fb9cc0c 100644
--- a/dcmdata/libsrc/dcdirrec.cc
+++ b/dcmdata/libsrc/dcdirrec.cc
@@ -1124,22 +1124,20 @@ DcmEVR DcmDirectoryRecord::ident() const
 
 OFCondition DcmDirectoryRecord::convertCharacterSet(const OFString &fromCharset,
                                                     const OFString &toCharset,
-                                                    const OFBool transliterate,
-                                                    const OFBool updateCharset,
-                                                    const OFBool discardIllegal)
+                                                    const size_t flags,
+                                                    const OFBool updateCharset)
 {
     // call the method of the base class; this method is only needed to avoid a compiler warning
-    return DcmItem::convertCharacterSet(fromCharset, toCharset, transliterate, updateCharset, discardIllegal);
+    return DcmItem::convertCharacterSet(fromCharset, toCharset, flags, updateCharset);
 }
 
 
 OFCondition DcmDirectoryRecord::convertCharacterSet(const OFString &toCharset,
-                                                    const OFBool transliterate,
-                                                    const OFBool ignoreCharset,
-                                                    const OFBool discardIllegal)
+                                                    const size_t flags,
+                                                    const OFBool ignoreCharset)
 {
     // call the method of the base class; this method is only needed to avoid a compiler warning
-    return DcmItem::convertCharacterSet(toCharset, transliterate, ignoreCharset, discardIllegal);
+    return DcmItem::convertCharacterSet(toCharset, flags, ignoreCharset);
 }
 
 
@@ -1162,13 +1160,19 @@ OFCondition DcmDirectoryRecord::convertCharacterSet(DcmSpecificCharacterSet &con
             << fromCharset << "'" << (fromCharset.empty() ? " (ASCII)" : "") << " to '"
             << toCharset << "'" << (toCharset.empty() ? " (ASCII)" : ""));
         // select source and destination character set, use same transliteration mode
-        status = newConverter.selectCharacterSet(fromCharset, toCharset, converter.getTransliterationMode(), converter.getDiscardIllegalSequenceMode());
+        status = newConverter.selectCharacterSet(fromCharset, toCharset);
         if (status.good())
         {
-            // convert all affected element values in the item with the new converter
-            status = DcmItem::convertCharacterSet(newConverter);
-            // update the Specific Character Set (0008,0005) element
-            updateSpecificCharacterSet(status, newConverter);
+            const unsigned cflags = converter.getConversionFlags();
+            if (cflags > 0)
+                status = newConverter.setConversionFlags(cflags);
+            if (status.good())
+            {
+                // convert all affected element values in the item with the new converter
+                status = DcmItem::convertCharacterSet(newConverter);
+                // update the Specific Character Set (0008,0005) element
+                updateSpecificCharacterSet(status, newConverter);
+            }
         }
     } else {
         // no Specific Character Set attribute or the same character set,
diff --git a/dcmdata/libsrc/dcelem.cc b/dcmdata/libsrc/dcelem.cc
index 2b57715..a682403 100644
--- a/dcmdata/libsrc/dcelem.cc
+++ b/dcmdata/libsrc/dcelem.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -31,6 +31,7 @@
 
 #include "dcmtk/ofstd/ofstd.h"
 #include "dcmtk/ofstd/ofstream.h"
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/dcmdata/dcelem.h"
 #include "dcmtk/dcmdata/dcobject.h"
 #include "dcmtk/dcmdata/dcswap.h"
@@ -845,12 +846,18 @@ OFCondition DcmElement::changeValue(const void *value,
             }
         }
     } else {
-        // swap to local byte order
-        swapIfNecessary(gLocalByteOrder, fByteOrder, fValue,
-                        getLengthField(), getTag().getVR().getValueWidth());
-        // copy value at given position
-        memcpy(&fValue[position], OFstatic_cast(const Uint8 *, value), size_t(num));
-        fByteOrder = gLocalByteOrder;
+        // load value (if not loaded yet)
+        if (!fValue)
+            errorFlag = loadValue();
+        if (errorFlag.good())
+        {
+            // swap to local byte order
+            swapIfNecessary(gLocalByteOrder, fByteOrder, fValue,
+                            getLengthField(), getTag().getVR().getValueWidth());
+            // copy value at given position
+            memcpy(&fValue[position], OFstatic_cast(const Uint8 *, value), size_t(num));
+            fByteOrder = gLocalByteOrder;
+        }
     }
     return errorFlag;
 }
@@ -1567,6 +1574,81 @@ OFCondition DcmElement::writeXML(STD_NAMESPACE ostream &out,
 // ********************************
 
 
+void DcmElement::writeJsonOpener(STD_NAMESPACE ostream &out,
+                                 DcmJsonFormat &format)
+{
+    DcmVR vr(getTag().getVR());
+    DcmTag tag = getTag();
+    /* increase indention level */
+    /* write attribute tag */
+    out << ++format.indent() << "\""
+        << STD_NAMESPACE hex << STD_NAMESPACE setfill('0')
+        << STD_NAMESPACE setw(4) << tag.getGTag();
+    /* write "ggggeeee" (no comma, upper case!) */
+    /* for private element numbers, zero out 2 first element digits */
+    /* or output full element number "eeee" */
+    out << STD_NAMESPACE setw(4) << STD_NAMESPACE uppercase << tag.getETag() << "\":"
+        << format.space() << "{" << STD_NAMESPACE dec << STD_NAMESPACE setfill(' ');
+    out << STD_NAMESPACE nouppercase;
+    /* increase indention level */
+    /* value representation = VR */
+    out << format.newline() << ++format.indent() << "\"vr\":" << format.space() << "\""
+        << vr.getValidVRName() << "\"";
+}
+
+
+void DcmElement::writeJsonCloser(STD_NAMESPACE ostream &out,
+                                 DcmJsonFormat &format)
+{
+    /* output JSON ending and decrease indention level */
+    out << format.newline() << --format.indent() << "}";
+    --format.indent();
+}
+
+
+OFCondition DcmElement::writeJson(STD_NAMESPACE ostream &out,
+                                  DcmJsonFormat &format)
+{
+    /* always write JSON Opener */
+    writeJsonOpener(out, format);
+    /* write element value (if non-empty) */
+    if (!isEmpty())
+    {
+        OFString value;
+        if (format.asBulkDataURI(getTag(), value))
+        {
+            format.printBulkDataURIPrefix(out);
+            DcmJsonFormat::printString(out, value);
+        }
+        else
+        {
+            OFCondition status = getOFString(value, 0L);
+            if (status.bad())
+                return status;
+            format.printValuePrefix(out);
+            DcmJsonFormat::printNumberDecimal(out, value);
+            const unsigned long vm = getVM();
+            for (unsigned long valNo = 1; valNo < vm; ++valNo)
+            {
+                status = getOFString(value, valNo);
+                if (status.bad())
+                    return status;
+                format.printNextArrayElementPrefix(out);
+                DcmJsonFormat::printNumberDecimal(out, value);
+            }
+            format.printValueSuffix(out);
+        }
+    }
+    /* write JSON Closer  */
+    writeJsonCloser(out, format);
+    /* always report success */
+    return EC_Normal;
+}
+
+
+// ********************************
+
+
 OFCondition DcmElement::getPartialValue(void *targetBuffer,
                                         const Uint32 offset,
                                         Uint32 numBytes,
diff --git a/dcmdata/libsrc/dcerror.cc b/dcmdata/libsrc/dcerror.cc
index 5186c12..0fc70e3 100644
--- a/dcmdata/libsrc/dcerror.cc
+++ b/dcmdata/libsrc/dcerror.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -73,6 +73,10 @@ makeOFConditionConst(EC_MissingAttribute,                OFM_dcmdata, 47, OF_err
 makeOFConditionConst(EC_InternalError,                   OFM_dcmdata, 48, OF_error, "Internal error");
 makeOFConditionConst(EC_InvalidCharacter,                OFM_dcmdata, 49, OF_error, "Invalid character");
 // error code 50 is reserved for determine start fragment error messages (see below)
+makeOFConditionConst(EC_UndefinedLengthOBOW,             OFM_dcmdata, 51, OF_error, "Illegal element with OB or OW Value Representation and undefined length encountered");
+makeOFConditionConst(EC_VOI_LUT_OBOW,                    OFM_dcmdata, 52, OF_error, "Illegal VOI LUT Sequence element with OB or OW Value Representation and explicit length encountered");
+makeOFConditionConst(EC_PixelDataExplLengthIllegal,      OFM_dcmdata, 53, OF_error, "Pixel data in top level dataset in compressed Transfer Syntax uses explicit length");
+
 
 const unsigned short EC_CODE_CannotSelectCharacterSet     = 35;
 const unsigned short EC_CODE_CannotConvertCharacterSet    = 36;
diff --git a/dcmdata/libsrc/dcfilefo.cc b/dcmdata/libsrc/dcfilefo.cc
index b757820..f12bbb5 100644
--- a/dcmdata/libsrc/dcfilefo.cc
+++ b/dcmdata/libsrc/dcfilefo.cc
@@ -48,6 +48,7 @@
 #include "dcmtk/dcmdata/dcistrma.h"    /* for class DcmInputStream */
 #include "dcmtk/dcmdata/dcistrmf.h"    /* for class DcmInputFileStream */
 #include "dcmtk/dcmdata/dcwcache.h"    /* for class DcmWriteCache */
+#include "dcmtk/dcmdata/dcjson.h"
 
 
 // ********************************
@@ -227,6 +228,55 @@ OFCondition DcmFileFormat::writeXML(STD_NAMESPACE ostream &out,
 // ********************************
 
 
+OFCondition DcmFileFormat::writeJson(STD_NAMESPACE ostream &out,
+                                     DcmJsonFormat &format)
+{
+    if (format.printMetaheaderInformation)
+    {
+        if (!itemList->empty())
+        {
+            out << format.indent() << "{" << format.newline();
+            // write content of all children (DcmObject)
+            itemList->seek(ELP_first);
+            OFCondition status = EC_Normal;
+            status = itemList->get()->writeJson(out, format);
+            while (status.good() && itemList->seek(ELP_next))
+            {
+                out << "," << format.newline();
+                status = itemList->get()->writeJson(out, format);
+            }
+            out << format.newline() << format.indent() << "}" << format.newline();
+            return status;
+        }
+        else
+        {
+            return EC_CorruptedData;
+        }
+    }
+    else
+    {
+        if (DcmDataset *dset = getDataset())
+        {
+            out << format.indent() << "{" << format.newline();
+            OFCondition status = EC_Normal;
+            // write content of dataset
+            status = dset->writeJson(out, format);
+            out << format.newline() << format.indent() << "}" << format.newline();
+            return status;
+        }
+        else
+        {
+            out << format.indent() << "{}" << format.newline();
+            return EC_Normal;
+        }
+    }
+    return EC_Normal;
+}
+
+
+// ********************************
+
+
 OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
                                                 DcmDataset *dataset,
                                                 const DcmTagKey &atagkey,
@@ -1013,17 +1063,15 @@ DcmDataset *DcmFileFormat::getAndRemoveDataset()
 
 OFCondition DcmFileFormat::convertCharacterSet(const OFString &fromCharset,
                                                const OFString &toCharset,
-                                               const OFBool transliterate,
-                                               const OFBool discardIllegal)
+                                               const size_t flags)
 {
     // convert the dataset associated with this object
-    return getDataset()->convertCharacterSet(fromCharset, toCharset, transliterate, discardIllegal);
+    return getDataset()->convertCharacterSet(fromCharset, toCharset, flags);
 }
 
 
 OFCondition DcmFileFormat::convertCharacterSet(const OFString &toCharset,
-                                               const OFBool transliterate,
-                                               const OFBool discardIllegal)
+                                               const size_t flags)
 {
     OFString sopClass;
     OFBool ignoreCharset = OFFalse;
@@ -1037,7 +1085,7 @@ OFCondition DcmFileFormat::convertCharacterSet(const OFString &toCharset,
         ignoreCharset = OFTrue;
     }
     // usually, we check for Specific Character Set (0008,0005) element in the dataset
-    return getDataset()->convertCharacterSet(toCharset, transliterate, ignoreCharset, discardIllegal);
+    return getDataset()->convertCharacterSet(toCharset, flags, ignoreCharset);
 }
 
 
@@ -1051,5 +1099,5 @@ OFCondition DcmFileFormat::convertCharacterSet(DcmSpecificCharacterSet &converte
 OFCondition DcmFileFormat::convertToUTF8()
 {
     // the DICOM defined term "ISO_IR 192" is used for "UTF-8"
-    return convertCharacterSet("ISO_IR 192", OFFalse /*transliterate*/);
+    return convertCharacterSet("ISO_IR 192", 0 /*flags*/);
 }
diff --git a/dcmdata/libsrc/dcitem.cc b/dcmdata/libsrc/dcitem.cc
index c832ab4..3e48035 100644
--- a/dcmdata/libsrc/dcitem.cc
+++ b/dcmdata/libsrc/dcitem.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -70,13 +70,13 @@
 #include "dcmtk/dcmdata/dcvrut.h"
 #include "dcmtk/dcmdata/dcxfer.h"
 #include "dcmtk/dcmdata/dcspchrs.h"   /* for class DcmSpecificCharacterSet */
+#include "dcmtk/dcmdata/dcjson.h"
 
 #include "dcmtk/ofstd/ofstream.h"
 #include "dcmtk/ofstd/ofstring.h"
 #include "dcmtk/ofstd/ofcast.h"
 #include "dcmtk/ofstd/ofstd.h"
 
-
 // ********************************
 
 
@@ -533,6 +533,34 @@ OFCondition DcmItem::writeXML(STD_NAMESPACE ostream &out,
 // ********************************
 
 
+OFCondition DcmItem::writeJson(STD_NAMESPACE ostream &out,
+                               DcmJsonFormat &format)
+{
+    if (!elementList->empty())
+    {
+        // write content of all children
+        out << "{" << format.newline();
+        elementList->seek(ELP_first);
+        OFCondition status = EC_Normal;
+        status = elementList->get()->writeJson(out, format);
+        while (status.good() && elementList->seek(ELP_next))
+        {
+            out << "," << format.newline();
+            status = elementList->get()->writeJson(out, format);
+        }
+        out << format.newline() << format.indent() << "}";
+        return status;
+    }
+    else
+    {
+        out << "{}" << format.newline();
+    }
+    return EC_Normal;
+}
+
+// ********************************
+
+
 OFBool DcmItem::canWriteXfer(const E_TransferSyntax newXfer,
                              const E_TransferSyntax oldXfer)
 {
@@ -1094,6 +1122,7 @@ OFCondition DcmItem::readTagAndLength(DcmInputStream &inStream,
         DCMDATA_WARN("DcmItem: Length of element " << newTag << " is odd");
     }
 
+
     /* if desired, handle private attributes with maximum length as VR SQ */
     if (isPrivate && dcmReadImplPrivAttribMaxLengthAsSQ.get() && (valueLength == DCM_UndefinedLength))
     {
@@ -1158,7 +1187,7 @@ OFCondition DcmItem::readSubElement(DcmInputStream &inStream,
     /* create a new DcmElement* object with corresponding tag and */
     /* length; the object will be accessible through subElem */
     OFBool readAsUN = OFFalse;
-    OFCondition l_error = newDicomElement(subElem, newTag, newLength, &privateCreatorCache, readAsUN);
+    OFCondition l_error = DcmItem::newDicomElement(subElem, newTag, newLength, &privateCreatorCache, readAsUN);
 
     /* if no error occurred and subElem does not equal NULL, go ahead */
     if (l_error.good() && subElem != NULL)
@@ -1196,6 +1225,14 @@ OFCondition DcmItem::readSubElement(DcmInputStream &inStream,
         inStream.putback();
         DCMDATA_WARN("DcmItem: Parse error while parsing element " << newTag);
     }
+    else if (l_error == EC_UndefinedLengthOBOW)
+    {
+        // do nothing
+    }
+    else if (l_error == EC_VOI_LUT_OBOW)
+    {
+        // do nothing
+    }
     else if (l_error != EC_ItemEnd)
     {
         // inStream.UnsetPutbackMark(); // not needed anymore with new stream architecture
@@ -2161,255 +2198,6 @@ void DcmItem::compactElements(const Uint32 maxLength)
 
 // Support functions
 
-OFCondition newDicomElement(DcmElement *&newElement,
-                            const DcmTag &tag,
-                            const Uint32 length)
-{
-    DcmTag newTag(tag);
-    OFBool readAsUN = OFFalse;
-    return newDicomElement(newElement, newTag, length, NULL, readAsUN);
-}
-
-DcmElement *newDicomElement(const DcmTag &tag,
-                            const Uint32 length)
-{
-    DcmElement *newElement = NULL;
-    newDicomElement(newElement, tag, length);
-    return newElement;
-}
-
-
-// ********************************
-
-
-OFCondition newDicomElement(DcmElement *&newElement,
-                            DcmTag &tag,
-                            const Uint32 length,
-                            DcmPrivateTagCache *privateCreatorCache,
-                            OFBool& readAsUN)
-{
-    /* initialize variables */
-    OFCondition l_error = EC_Normal;
-    newElement = NULL;
-    DcmEVR evr = tag.getEVR();
-    readAsUN = OFFalse;
-
-    /* revert UN elements with finite length back to known VR if possible */
-    if ((evr == EVR_UN) && (length != DCM_UndefinedLength) && dcmEnableUnknownVRConversion.get())
-    {
-      /* look up VR in data dictionary */
-      DcmTag newTag(tag.getGroup(), tag.getElement());
-
-      /* special handling for private elements */
-      if (privateCreatorCache && (newTag.getGroup() & 1) && (newTag.getElement() >= 0x1000))
-      {
-        const char *pc = privateCreatorCache->findPrivateCreator(newTag);
-        if (pc != NULL)
-        {
-            // we have a private creator for this element
-            newTag.setPrivateCreator(pc);
-            newTag.lookupVRinDictionary();
-        }
-      }
-
-      /* update VR for tag, set "readAsUN" flag that makes sure the element value
-       * is read in Little Endian Implicit VR (i.e. the UN encoding)
-       */
-      if (newTag.getEVR() != EVR_UNKNOWN)
-      {
-          tag.setVR(newTag.getVR());
-          evr = tag.getEVR();
-          readAsUN = OFTrue;
-      }
-    }
-
-    /* depending on the VR of the tag which was passed, create the new object */
-    switch (evr)
-    {
-        // byte strings:
-        case EVR_AE :
-            newElement = new DcmApplicationEntity(tag, length);
-            break;
-        case EVR_AS :
-            newElement = new DcmAgeString(tag, length);
-            break;
-        case EVR_CS :
-            newElement = new DcmCodeString(tag, length);
-            break;
-        case EVR_DA :
-            newElement = new DcmDate(tag, length);
-            break;
-        case EVR_DS :
-            newElement = new DcmDecimalString(tag, length);
-            break;
-        case EVR_DT :
-            newElement = new DcmDateTime(tag, length);
-            break;
-        case EVR_IS :
-            newElement = new DcmIntegerString(tag, length);
-            break;
-        case EVR_TM :
-            newElement = new DcmTime(tag, length);
-            break;
-        case EVR_UI :
-            newElement = new DcmUniqueIdentifier(tag, length);
-            break;
-        case EVR_UR:
-            newElement = new DcmUniversalResourceIdentifierOrLocator(tag, length);
-            break;
-
-        // character strings:
-        case EVR_LO :
-            newElement = new DcmLongString(tag, length);
-            break;
-        case EVR_LT :
-            newElement = new DcmLongText(tag, length);
-            break;
-        case EVR_PN :
-            newElement = new DcmPersonName(tag, length);
-            break;
-        case EVR_SH :
-            newElement = new DcmShortString(tag, length);
-            break;
-        case EVR_ST :
-            newElement = new DcmShortText(tag, length);
-            break;
-        case EVR_UC:
-            newElement = new DcmUnlimitedCharacters(tag, length);
-            break;
-        case EVR_UT:
-            newElement = new DcmUnlimitedText(tag, length);
-            break;
-
-        // dependent on byte order:
-        case EVR_AT :
-            newElement = new DcmAttributeTag(tag, length);
-            break;
-        case EVR_SS :
-            newElement = new DcmSignedShort(tag, length);
-            break;
-        case EVR_xs : // according to DICOM standard
-        case EVR_US :
-            newElement = new DcmUnsignedShort(tag, length);
-            break;
-        case EVR_SL :
-            newElement = new DcmSignedLong(tag, length);
-            break;
-        case EVR_up : // for (0004,eeee) according to DICOM standard
-        case EVR_UL :
-            {
-                // generate tag with VR from dictionary!
-                DcmTag ulupTag(tag.getXTag());
-                if (ulupTag.getEVR() == EVR_up)
-                    newElement = new DcmUnsignedLongOffset(ulupTag, length);
-                else
-                    newElement = new DcmUnsignedLong(tag, length);
-            }
-            break;
-        case EVR_OL :
-            newElement = new DcmOtherLong(tag, length);
-            break;
-        case EVR_FL :
-            newElement = new DcmFloatingPointSingle(tag, length);
-            break;
-        case EVR_FD :
-            newElement = new DcmFloatingPointDouble(tag, length);
-            break;
-        case EVR_OF :
-            newElement = new DcmOtherFloat(tag, length);
-            break;
-        case EVR_OD :
-            newElement = new DcmOtherDouble(tag, length);
-            break;
-
-        // sequences and items:
-        case EVR_SQ :
-            newElement = new DcmSequenceOfItems(tag, length);
-            break;
-        case EVR_na :
-            if (tag.getXTag() == DCM_Item)
-                l_error = EC_InvalidTag;
-            else if (tag.getXTag() == DCM_SequenceDelimitationItem)
-                l_error = EC_SequEnd;
-            else if (tag.getXTag() == DCM_ItemDelimitationItem)
-                l_error = EC_ItemEnd;
-            else
-                l_error = EC_InvalidTag;
-            break;
-
-        // pixel sequences (EVR_pixelSQ) are handled through class DcmPixelData
-        // and should never appear here.
-
-        // unclear 8 or 16 bit:
-        case EVR_ox :
-            if (tag == DCM_PixelData)
-                newElement = new DcmPixelData(tag, length);
-            else if (tag.getBaseTag() == DCM_OverlayData)
-                newElement = new DcmOverlayData(tag, length);
-            else
-                /* we don't know this element's real transfer syntax, so we just
-                 * use the defaults of class DcmOtherByteOtherWord and let the
-                 * application handle it.
-                 */
-                newElement = new DcmOtherByteOtherWord(tag, length);
-            break;
-
-        case EVR_lt :
-            newElement = new DcmOtherByteOtherWord(tag, length);
-            break;
-
-        case EVR_OB :
-        case EVR_OW :
-            if (tag == DCM_PixelData)
-                newElement = new DcmPixelData(tag, length);
-            else if (tag.getBaseTag() == DCM_OverlayData)
-                newElement = new DcmOverlayData(tag, length);
-            else
-                if (length == DCM_UndefinedLength)
-                {
-                    // The attribute is OB or OW but is encoded with undefined
-                    // length.  Assume it is really a sequence so that we can
-                    // catch the sequence delimitation item.
-                    newElement = new DcmSequenceOfItems(tag, length);
-                } else {
-                    newElement = new DcmOtherByteOtherWord(tag, length);
-                }
-            break;
-
-        // read unknown types as byte string:
-        case EVR_UNKNOWN :
-        case EVR_UNKNOWN2B :
-        case EVR_UN :
-        default :
-            if (length == DCM_UndefinedLength)
-            {
-                // The attribute VR is UN with undefined length. Assume it is really
-                // a sequence so that we can catch the sequence delimitation item.
-                DcmTag newTag(tag);
-                newTag.setVR(DcmVR(EVR_SQ)); // on writing we will handle this element as SQ, not UN
-                if (dcmEnableCP246Support.get())
-                {
-                    DCMDATA_WARN("Found element " << newTag << " with VR UN and undefined length, "
-                        << "reading a sequence with transfer syntax LittleEndianImplicit (CP-246)");
-                } else {
-                    DCMDATA_WARN("Found element " << newTag << " with VR UN and undefined length");
-                }
-                newElement = new DcmSequenceOfItems(newTag, length, dcmEnableCP246Support.get());
-            } else {
-                // defined length UN element, treat like OB
-                newElement = new DcmOtherByteOtherWord(tag, length);
-            }
-            break;
-    }
-
-    /* check for valid element pointer */
-    if (l_error.good() && (newElement == NULL))
-        l_error = EC_MemoryExhausted;
-
-    /* return result value */
-    return l_error;
-}
-
 
 OFCondition nextUp(DcmStack &stack)
 {
@@ -4319,9 +4107,8 @@ void DcmItem::updateSpecificCharacterSet(OFCondition &status,
 
 OFCondition DcmItem::convertCharacterSet(const OFString &fromCharset,
                                          const OFString &toCharset,
-                                         const OFBool transliterate,
-                                         const OFBool updateCharset,
-                                         const OFBool discardIllegal)
+                                         const size_t flags,
+                                         const OFBool updateCharset)
 {
     OFCondition status = EC_Normal;
     // if the item is empty, there is nothing to do
@@ -4333,15 +4120,26 @@ OFCondition DcmItem::convertCharacterSet(const OFString &fromCharset,
             << fromCharset << "'" << (fromCharset.empty() ? " (ASCII)" : "") << " to '"
             << toCharset << "'" << (toCharset.empty() ? " (ASCII)" : ""));
         // select source and destination character set
-        status = converter.selectCharacterSet(fromCharset, toCharset, transliterate, discardIllegal);
+        status = converter.selectCharacterSet(fromCharset, toCharset);
         if (status.good())
         {
-            // convert all affected element values in the item
-            status = convertCharacterSet(converter);
-            if (updateCharset)
+            unsigned cflags = 0;
+            /* pass flags to underlying implementation */
+            if (flags & DCMTypes::CF_discardIllegal)
+                cflags |= OFCharacterEncoding::DiscardIllegalSequences;
+            if (flags & DCMTypes::CF_transliterate)
+                cflags |= OFCharacterEncoding::TransliterateIllegalSequences;
+            if (cflags > 0)
+                status = converter.setConversionFlags(cflags);
+            if (status.good())
             {
-                // update the Specific Character Set (0008,0005) element
-                updateSpecificCharacterSet(status, converter);
+                // convert all affected element values in the item
+                status = convertCharacterSet(converter);
+                if (updateCharset)
+                {
+                    // update the Specific Character Set (0008,0005) element
+                    updateSpecificCharacterSet(status, converter);
+                }
             }
         }
     }
@@ -4350,9 +4148,8 @@ OFCondition DcmItem::convertCharacterSet(const OFString &fromCharset,
 
 
 OFCondition DcmItem::convertCharacterSet(const OFString &toCharset,
-                                         const OFBool transliterate,
-                                         const OFBool ignoreCharset,
-                                         const OFBool discardIllegal)
+                                         const size_t flags,
+                                         const OFBool ignoreCharset)
 {
     OFString fromCharset;
     // check whether this item can contain the attribute SpecificCharacterSet (0008,0005)
@@ -4362,7 +4159,7 @@ OFCondition DcmItem::convertCharacterSet(const OFString &toCharset,
         findAndGetOFStringArray(DCM_SpecificCharacterSet, fromCharset, OFFalse /*searchIntoSub*/);
     }
     // do the real work, if Specific Character Set is missing or empty use the default (ASCII)
-    return convertCharacterSet(fromCharset, toCharset, transliterate, !ignoreCharset /*updateCharset*/, discardIllegal);
+    return convertCharacterSet(fromCharset, toCharset, flags, !ignoreCharset /*updateCharset*/);
 }
 
 
@@ -4385,5 +4182,313 @@ OFCondition DcmItem::convertCharacterSet(DcmSpecificCharacterSet &converter)
 OFCondition DcmItem::convertToUTF8()
 {
     // the DICOM defined term "ISO_IR 192" is used for "UTF-8"
-    return convertCharacterSet("ISO_IR 192", OFFalse /*transliterate*/);
+    return convertCharacterSet("ISO_IR 192", 0 /*flags*/);
+}
+
+
+// ********************************
+
+
+DcmElement* DcmItem::newDicomElement(const DcmTagKey& tag)
+{
+  DcmTag temp(tag);
+  DcmElement* elem = NULL;
+      OFBool readAsUN = OFFalse;
+      newDicomElement(
+          elem,
+          temp,
+          0,          // Length
+          NULL,       // Private creator
+          readAsUN);  // read as VR UN (result ignored)
+  return elem;
+}
+
+
+OFCondition DcmItem::newDicomElement(DcmElement*& newElement,
+                                     const DcmTagKey& tag)
+{
+    DcmTag temp(tag);
+    newElement = NULL;
+    OFBool readAsUN = OFFalse;
+    return newDicomElement(
+        newElement,
+        temp,
+        0,          // Length
+        NULL,       // Private creator
+        readAsUN);  // read as VR UN (result ignored)
+}
+
+
+OFCondition DcmItem::newDicomElement(DcmElement *&newElement,
+                                     DcmTag &tag,
+                                     const Uint32 length,
+                                     DcmPrivateTagCache *privateCreatorCache,
+                                     OFBool& readAsUN)
+{
+    /* initialize variables */
+    OFCondition l_error = EC_Normal;
+    newElement = NULL;
+    DcmEVR evr = tag.getEVR();
+    readAsUN = OFFalse;
+
+    /* revert UN elements with finite length back to known VR if possible */
+    if ((evr == EVR_UN) && (length != DCM_UndefinedLength) && dcmEnableUnknownVRConversion.get())
+    {
+        /* look up VR in data dictionary */
+        DcmTag newTag(tag.getGroup(), tag.getElement());
+
+        /* special handling for private elements */
+        if (privateCreatorCache && (newTag.getGroup() & 1) && (newTag.getElement() >= 0x1000))
+        {
+            const char *pc = privateCreatorCache->findPrivateCreator(newTag);
+            if (pc != NULL)
+            {
+                // we have a private creator for this element
+                newTag.setPrivateCreator(pc);
+                newTag.lookupVRinDictionary();
+            }
+        }
+
+        /* update VR for tag, set "readAsUN" flag that makes sure the element value
+        * is read in Little Endian Implicit VR (i.e. the UN encoding)
+        */
+        if (newTag.getEVR() != EVR_UNKNOWN)
+        {
+            tag.setVR(newTag.getVR());
+            evr = tag.getEVR();
+            readAsUN = OFTrue;
+        }
+    }
+
+    /* depending on the VR of the tag which was passed, create the new object */
+    switch (evr)
+    {
+        // byte strings:
+        case EVR_AE :
+            newElement = new DcmApplicationEntity(tag, length);
+            break;
+        case EVR_AS :
+            newElement = new DcmAgeString(tag, length);
+            break;
+        case EVR_CS :
+            newElement = new DcmCodeString(tag, length);
+            break;
+        case EVR_DA :
+            newElement = new DcmDate(tag, length);
+            break;
+        case EVR_DS :
+            newElement = new DcmDecimalString(tag, length);
+            break;
+        case EVR_DT :
+            newElement = new DcmDateTime(tag, length);
+            break;
+        case EVR_IS :
+            newElement = new DcmIntegerString(tag, length);
+            break;
+        case EVR_TM :
+            newElement = new DcmTime(tag, length);
+            break;
+        case EVR_UI :
+            newElement = new DcmUniqueIdentifier(tag, length);
+            break;
+        case EVR_UR:
+            newElement = new DcmUniversalResourceIdentifierOrLocator(tag, length);
+            break;
+
+        // character strings:
+        case EVR_LO :
+            newElement = new DcmLongString(tag, length);
+            break;
+        case EVR_LT :
+            newElement = new DcmLongText(tag, length);
+            break;
+        case EVR_PN :
+            newElement = new DcmPersonName(tag, length);
+            break;
+        case EVR_SH :
+            newElement = new DcmShortString(tag, length);
+            break;
+        case EVR_ST :
+            newElement = new DcmShortText(tag, length);
+            break;
+        case EVR_UC:
+            newElement = new DcmUnlimitedCharacters(tag, length);
+            break;
+        case EVR_UT:
+            newElement = new DcmUnlimitedText(tag, length);
+            break;
+
+        // dependent on byte order:
+        case EVR_AT :
+            newElement = new DcmAttributeTag(tag, length);
+            break;
+        case EVR_SS :
+            newElement = new DcmSignedShort(tag, length);
+            break;
+        case EVR_xs : // according to DICOM standard
+        case EVR_US :
+            newElement = new DcmUnsignedShort(tag, length);
+            break;
+        case EVR_SL :
+            newElement = new DcmSignedLong(tag, length);
+            break;
+        case EVR_up : // for (0004,eeee) according to DICOM standard
+        case EVR_UL :
+            {
+                // generate tag with VR from dictionary!
+                DcmTag ulupTag(tag.getXTag());
+                if (ulupTag.getEVR() == EVR_up)
+                    newElement = new DcmUnsignedLongOffset(ulupTag, length);
+                else
+                    newElement = new DcmUnsignedLong(tag, length);
+            }
+            break;
+        case EVR_OL :
+            newElement = new DcmOtherLong(tag, length);
+            break;
+        case EVR_FL :
+            newElement = new DcmFloatingPointSingle(tag, length);
+            break;
+        case EVR_FD :
+            newElement = new DcmFloatingPointDouble(tag, length);
+            break;
+        case EVR_OF :
+            newElement = new DcmOtherFloat(tag, length);
+            break;
+        case EVR_OD :
+            newElement = new DcmOtherDouble(tag, length);
+            break;
+
+        // sequences and items:
+        case EVR_SQ :
+            newElement = new DcmSequenceOfItems(tag, length);
+            break;
+        case EVR_na :
+            if (tag.getXTag() == DCM_Item)
+                l_error = EC_InvalidTag;
+            else if (tag.getXTag() == DCM_SequenceDelimitationItem)
+                l_error = EC_SequEnd;
+            else if (tag.getXTag() == DCM_ItemDelimitationItem)
+                l_error = EC_ItemEnd;
+            else
+                l_error = EC_InvalidTag;
+            break;
+
+        // pixel sequences (EVR_pixelSQ) are handled through class DcmPixelData
+        // and should never appear here.
+
+        // unclear 8 or 16 bit:
+        case EVR_ox :
+            if (tag == DCM_PixelData)
+                newElement = new DcmPixelData(tag, length);
+            else if (tag.getBaseTag() == DCM_OverlayData)
+                newElement = new DcmOverlayData(tag, length);
+            else
+                /* we don't know this element's real transfer syntax, so we just
+                 * use the defaults of class DcmOtherByteOtherWord and let the
+                 * application handle it.
+                 */
+                newElement = new DcmOtherByteOtherWord(tag, length);
+            break;
+
+        case EVR_lt :
+            newElement = new DcmOtherByteOtherWord(tag, length);
+            break;
+
+        case EVR_OB :
+        case EVR_OW :
+            if (tag == DCM_PixelData)
+                newElement = new DcmPixelData(tag, length);
+            else if (tag.getBaseTag() == DCM_OverlayData)
+                newElement = new DcmOverlayData(tag, length);
+            else if ((tag == DCM_VOILUTSequence) && (length != DCM_UndefinedLength))
+            {
+                // this is an incorrectly encoded VOI LUT Sequence.
+                // Real-world examples of this issue have been reported in 2016.
+                if (dcmConvertVOILUTSequenceOWtoSQ.get())
+                {
+                  // Silently fix the error by interpreting as a sequence.
+                  DcmTag newTag(tag);
+                  newTag.setVR(DcmVR(EVR_SQ)); // on writing we will handle this element as SQ, not OB/OW
+                  newElement = new DcmSequenceOfItems(newTag, length);
+                } else {
+
+                    if (dcmIgnoreParsingErrors.get())
+                    {
+                        // ignore parse error, keep VR unchanged
+                        DCMDATA_WARN("DcmItem: VOI LUT Sequence with VR=OW and explicit length encountered.");
+                        newElement = new DcmOtherByteOtherWord(tag, length);
+                    }
+                    else
+                    {
+                        // bail out with an error
+                        DCMDATA_ERROR("DcmItem: VOI LUT Sequence with VR=OW and explicit length encountered.");
+                        l_error = EC_VOI_LUT_OBOW;
+                    }
+                }
+            }
+            else
+                if (length == DCM_UndefinedLength)
+                {
+                    // The attribute is OB or OW but is encoded with undefined
+                    // length, and it is not Pixel Data. This is illegal.
+                    if (dcmConvertUndefinedLengthOBOWtoSQ.get())
+                    {
+                        // Assume that this is in fact a sequence so that we can
+                        // catch the sequence delimitation item.
+                        DcmTag newTag(tag);
+                        newTag.setVR(DcmVR(EVR_SQ)); // on writing we will handle this element as SQ, not OB/OW
+                        newElement = new DcmSequenceOfItems(newTag, length);
+                    } else {
+                        if (dcmIgnoreParsingErrors.get())
+                        {
+                            // ignore parse error, keep VR unchanged
+                            OFCondition tempcond = EC_UndefinedLengthOBOW;
+                            DCMDATA_WARN("DcmItem: Parse error in " << tag << ": " << tempcond.text());
+                            newElement = new DcmSequenceOfItems(tag, length);
+                        }
+                        else
+                        {
+                            // bail out with an error
+                            l_error = EC_UndefinedLengthOBOW;
+                            DCMDATA_ERROR("DcmItem: Parse error in " << tag << ": " << l_error.text());
+                        }
+                    }
+                } else {
+                    newElement = new DcmOtherByteOtherWord(tag, length);
+                }
+            break;
+
+        // read unknown types as byte string:
+        case EVR_UNKNOWN :
+        case EVR_UNKNOWN2B :
+        case EVR_UN :
+        default :
+            if (length == DCM_UndefinedLength)
+            {
+                // The attribute VR is UN with undefined length. Assume it is really
+                // a sequence so that we can catch the sequence delimitation item.
+                DcmTag newTag(tag);
+                newTag.setVR(DcmVR(EVR_SQ)); // on writing we will handle this element as SQ, not UN
+                if (dcmEnableCP246Support.get())
+                {
+                    DCMDATA_WARN("Found element " << newTag << " with VR UN and undefined length, "
+                        << "reading a sequence with transfer syntax LittleEndianImplicit (CP-246)");
+                } else {
+                    DCMDATA_WARN("Found element " << newTag << " with VR UN and undefined length");
+                }
+                newElement = new DcmSequenceOfItems(newTag, length, dcmEnableCP246Support.get());
+            } else {
+                // defined length UN element, treat like OB
+                newElement = new DcmOtherByteOtherWord(tag, length);
+            }
+            break;
+    }
+
+    /* check for valid element pointer */
+    if (l_error.good() && (newElement == NULL))
+        l_error = EC_MemoryExhausted;
+
+    /* return result value */
+    return l_error;
 }
diff --git a/dcmdata/libsrc/dcjson.cc b/dcmdata/libsrc/dcjson.cc
new file mode 100644
index 0000000..df68daa
--- /dev/null
+++ b/dcmdata/libsrc/dcjson.cc
@@ -0,0 +1,281 @@
+/*
+ *
+ *  Copyright (C) 2016-2017, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *  Module:  dcmdata
+ *
+ *  Author:  Sebastian Grallert
+ *
+ *  Purpose: Providing basic JSON formatting functionalities
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmdata/dcjson.h"
+
+#define INCLUDE_CASSERT
+#define INCLUDE_CSTRING
+#include "dcmtk/ofstd/ofstdinc.h"
+
+#include "dcmtk/ofstd/ofdefine.h"
+#include "dcmtk/ofstd/ofstring.h"
+
+void DcmJsonFormat::escapeControlCharacters(STD_NAMESPACE ostream &out, const OFString &value)
+{
+    // escapes all forbidden control characters in JSON
+    for (size_t i = 0; i < value.size(); ++i)
+    {
+        const char c = value.at(i);
+        switch (c)
+        {
+        case '\\':
+            out << "\\\\";
+            break;
+        case '"':
+            out << "\\\"";
+            break;
+        case '\b':
+            out << "\\b";
+            break;
+        case '\n':
+            out << "\\n";
+            break;
+        case '\r':
+            out << "\\r";
+            break;
+        case '\t':
+            out << "\\t";
+            break;
+        case '\f':
+            out << "\\f";
+            break;
+        default:
+            //escapes all other control characters
+            if (c >= '\0' && c < ' ')
+            {
+                out << "\\u" << STD_NAMESPACE hex
+                    << STD_NAMESPACE setw(4) << STD_NAMESPACE setfill('0')
+                    << OFstatic_cast(unsigned, OFstatic_cast(unsigned char, c));
+            }
+            else
+            {
+                out << c;
+            }
+        }
+    }
+}
+
+// Formats the number to JSON standard as DecimalString
+void DcmJsonFormat::normalizeDecimalString(OFString &value)
+{
+    OFBool minus = OFFalse;
+
+    if (value[0] == '-')
+    {
+        value = value.substr(1);
+        minus = OFTrue;
+    }
+
+    size_t pos = value.find_first_not_of("0");
+
+    if (pos == OFString_npos)
+        value = "0";
+    else
+    {
+        if (value[pos] == '.')
+            value = '0' + value.substr(pos);
+        else
+            value = value.substr(pos);
+    }
+
+    if (minus)
+        value = '-' + value;
+}
+
+// Formats the number to JSON standard as IntegerString
+void DcmJsonFormat::normalizeIntegerString(OFString &value)
+{
+    OFBool minus = OFFalse;
+
+    if (value[0] == '-')
+    {
+        value = value.substr(1);
+        minus = OFTrue;
+    }
+
+    size_t pos = value.find_first_not_of("0");
+
+    if (pos == OFString_npos)
+        value = "0";
+    else
+        value = value.substr(pos);
+
+    if (minus)
+        value = '-' + value;
+}
+
+// Print a string in JSON format
+void DcmJsonFormat::printString(STD_NAMESPACE ostream &out,
+                                const OFString &value)
+{
+    out << "\"";
+    escapeControlCharacters(out, value);
+    out << "\"";
+}
+
+// Print a string in JSON format
+// Print null if OFString is empty
+void DcmJsonFormat::printValueString(STD_NAMESPACE ostream &out,
+                                     const OFString &value)
+{
+    if (!value.empty())
+    {
+        printString(out, value);
+    }
+    else
+    {
+        out << "null";
+    }
+}
+
+// Print a integer in JSON format
+// Print null if OFString is empty
+void DcmJsonFormat::printNumberInteger(STD_NAMESPACE ostream &out,
+                                       OFString &value)
+{
+    if (!value.empty())
+    {
+        normalizeIntegerString(value);
+        out << value;
+    }
+    else
+    {
+        out << "null";
+    }
+}
+
+// Print a decimal in JSON format
+// Print null if OFString is empty
+void DcmJsonFormat::printNumberDecimal(STD_NAMESPACE ostream &out,
+                                       OFString &value)
+{
+    if (!value.empty())
+    {
+        normalizeDecimalString(value);
+        out << value;
+    }
+    else
+    {
+        out << "null";
+    }
+}
+
+// Print the prefix for Value
+void DcmJsonFormat::printValuePrefix(STD_NAMESPACE ostream &out)
+{
+    out << "," << newline() << indent() << "\"Value\":" << space() << "[" << newline();
+    out << ++indent();
+}
+
+// Print the suffix for Value
+void DcmJsonFormat::printValueSuffix(STD_NAMESPACE ostream &out)
+{
+    out << newline() << --indent() << "]";
+}
+
+// Print the prefix for BulkDataURI
+void DcmJsonFormat::printBulkDataURIPrefix(STD_NAMESPACE ostream &out)
+{
+    out << "," << newline() << indent() << "\"BulkDataURI\":" << space();
+}
+
+// Print the prefix for InlineBinary
+void DcmJsonFormat::printInlineBinaryPrefix(STD_NAMESPACE ostream &out)
+{
+    out << "," << newline() << indent() << "\"InlineBinary\":" << space();
+}
+
+// Print the prefix for array elements in JSON format
+void DcmJsonFormat::printNextArrayElementPrefix(STD_NAMESPACE ostream &out)
+{
+    out << "," << newline() << indent();
+}
+
+// Method for holding and determine if BulkDataURI should be printed.
+// This also manipulate uri String, if BulkDataURI should be printed.
+OFBool DcmJsonFormat::asBulkDataURI(const DcmTagKey& tag, OFString& uri)
+{
+    return false;
+}
+
+//Class for formatted output
+DcmJsonFormatPretty::DcmJsonFormatPretty(const OFBool printMetaheaderInformation)
+: DcmJsonFormat(printMetaheaderInformation)
+, m_IndentionLevel(0)
+{
+
+}
+
+void DcmJsonFormatPretty::printIndention(STD_NAMESPACE ostream& out)
+{
+    for (unsigned ui = 0; ui < m_IndentionLevel; ++ui)
+        out << "  ";
+}
+
+void DcmJsonFormatPretty::increaseIndention()
+{
+    ++m_IndentionLevel;
+}
+
+void DcmJsonFormatPretty::decreaseIndention()
+{
+    assert(m_IndentionLevel);
+    --m_IndentionLevel;
+}
+
+OFString DcmJsonFormatPretty::newline()
+{
+    return "\n";
+}
+
+OFString DcmJsonFormatPretty::space()
+{
+    return " ";
+}
+
+
+//Class for unformatted output
+DcmJsonFormatCompact::DcmJsonFormatCompact(const OFBool printMetaheaderInformation)
+: DcmJsonFormat(printMetaheaderInformation)
+{
+
+}
+
+void DcmJsonFormatCompact::printIndention(STD_NAMESPACE ostream& out)
+{}
+
+void DcmJsonFormatCompact::increaseIndention()
+{}
+
+void DcmJsonFormatCompact::decreaseIndention()
+{}
+
+OFString DcmJsonFormatCompact::newline()
+{
+    return OFString();
+}
+
+OFString DcmJsonFormatCompact::space()
+{
+    return OFString();
+}
diff --git a/dcmdata/libsrc/dcmatch.cc b/dcmdata/libsrc/dcmatch.cc
new file mode 100644
index 0000000..febb140
--- /dev/null
+++ b/dcmdata/libsrc/dcmatch.cc
@@ -0,0 +1,327 @@
+/*
+ *
+ *  Copyright (C) 2017, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmdata
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: Implementing attribute matching for being used in dcmqrdb and dcmwlm etc.
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/ofmem.h"
+#include "dcmtk/dcmdata/dcmatch.h"
+#include "dcmtk/dcmdata/dcvr.h"
+#include "dcmtk/dcmdata/dcvrda.h"
+#include "dcmtk/dcmdata/dcvrdt.h"
+#include "dcmtk/dcmdata/dcvrtm.h"
+
+class DcmAttributeMatching::WildCardMatcher
+{
+public:
+    // constructor, remembering the end of the query and candidate strings
+    WildCardMatcher( const char* queryDataEnd, const char* candidateDataEnd )
+    : queryDataEnd( queryDataEnd )
+    , candidateDataEnd( candidateDataEnd )
+    {
+
+    }
+
+    // the actual match function, taking two pointers to the beginning of
+    // the query and the candidate string
+    OFBool match( const char* queryData, const char* candidateData ) const
+    {
+        // matches all regular chars and '?' wildcard with the candidate string
+        while( queryData != queryDataEnd && candidateData != candidateDataEnd && *queryData != '*' )
+        {
+            if( *queryData == '?' || *queryData == *candidateData )
+            {
+                ++queryData;
+                ++candidateData;
+            }
+            else
+            {
+                return OFFalse;
+            }
+        }
+        // if the end of the query is reached, there was no '*' wildcard
+        // therefor it is either a match (if the end of the candidate was
+        // also reached) or not
+        if( queryData == queryDataEnd )
+            return candidateData == candidateDataEnd;
+        // if the current char in the query is not the '*' wildcard, the
+        // values don't match, since all other chars would have been
+        // matched by the previous while loop
+        if( *queryData != '*' )
+            return OFFalse;
+        // skip all '*' wildcard characters, because even a string like "****"
+        // equals the sematics of '*'. If the end of the query is reached
+        // any remaining part of the candidate is a match, therefore return
+        // OFTrue
+        do if( ++queryData == queryDataEnd )
+            return OFTrue;
+        while( *queryData == '*' );
+        // If this part of the code is reached, at least one non wildcard
+        // character exists in the query after the previously skipped
+        // wildcards. Search for a match of the remaining query characters
+        // in the remaining candidate characters, by recursively calling
+        // match.
+        while( candidateData != candidateDataEnd )
+        {
+            if( !match( queryData, candidateData ) )
+                ++candidateData;
+            else
+                return OFTrue;
+        }
+        // if the end of the candidate is reached, both strings don't match.
+        return OFFalse;
+    }
+
+private:
+    // the ends of both the query and the candidate string, will remain
+    // constant per match operation
+    const char* const queryDataEnd;
+    const char* const candidateDataEnd;
+};
+
+struct DcmAttributeMatching::DashSeparated
+{
+    DashSeparated( const void* data, const size_t size )
+    : first( OFreinterpret_cast( const char*, data ) )
+    , firstSize( 0 )
+    , second( first )
+    , secondSize( size )
+    {
+        while( firstSize != secondSize && first[firstSize] != '-' )
+            ++firstSize;
+        if( firstSize != secondSize )
+        {
+            secondSize = secondSize - firstSize - 1;
+            second = second + firstSize + 1;
+        }
+    }
+    const char* first;
+    size_t firstSize;
+    const char* second;
+    size_t secondSize;
+};
+
+OFBool DcmAttributeMatching::singleValueMatching( const void* queryData, const size_t querySize,
+                                                  const void* candidateData, const size_t candidateSize )
+{
+    return !querySize || ( querySize == candidateSize && !memcmp( queryData, candidateData, querySize ) );
+}
+
+OFBool DcmAttributeMatching::wildCardMatching( const void* queryData, const size_t querySize,
+                                               const void* candidateData, const size_t candidateSize )
+{
+    return !querySize || WildCardMatcher
+    (
+        OFreinterpret_cast( const char*, queryData ) + querySize,
+        OFreinterpret_cast( const char*, candidateData ) + candidateSize
+    )
+    .match
+    (
+        OFreinterpret_cast( const char*, queryData ),
+        OFreinterpret_cast( const char*, candidateData )
+    );
+}
+
+template<typename T>
+OFBool DcmAttributeMatching::rangeMatchingTemplate( OFCondition (*parse)(const char*,const size_t,T&),
+                                                    const void* queryData, const size_t querySize,
+                                                    const void* candidateData, const size_t candidateSize )
+{
+    if( !querySize )
+        return OFTrue;
+    T candidate;
+    if( parse( OFreinterpret_cast( const char*, candidateData ), candidateSize, candidate ).bad() )
+        return OFFalse;
+    const DashSeparated query( queryData, querySize );
+    T first;
+    if( !query.firstSize || parse( query.first, query.firstSize, first ).good() )
+    {
+        // test whether it's a single date/time and not a range
+        if( query.first == query.second )
+            return query.firstSize && first == candidate;
+        T second;
+        if( !query.secondSize || parse( query.second, query.secondSize, second ).good() )
+            return ( !query.firstSize || first <= candidate ) && ( !query.secondSize || second >= candidate );
+    }
+    return OFFalse;
+}
+
+OFBool DcmAttributeMatching::rangeMatchingDate( const void* queryData, const size_t querySize,
+                                                const void* candidateData, const size_t candidateSize )
+{
+    return rangeMatchingTemplate( &DcmDate::getOFDateFromString, queryData, querySize, candidateData, candidateSize );
+}
+
+OFBool DcmAttributeMatching::rangeMatchingTime( const void* queryData, const size_t querySize,
+                                                const void* candidateData, const size_t candidateSize )
+{
+    return rangeMatchingTemplate( &DcmTime::getOFTimeFromString, queryData, querySize, candidateData, candidateSize );
+}
+
+OFBool DcmAttributeMatching::rangeMatchingDateTime( const void* queryData, const size_t querySize,
+                                                    const void* candidateData, const size_t candidateSize )
+{
+    return rangeMatchingTemplate( &DcmDateTime::getOFDateTimeFromString, queryData, querySize, candidateData, candidateSize );
+}
+
+OFBool DcmAttributeMatching::rangeMatchingDateTime( const void* dateQueryData, const size_t dateQuerySize,
+                                                    const void* timeQueryData, const size_t timeQuerySize,
+                                                    const void* dateCandidateData, const size_t dateCandidateSize,
+                                                    const void* timeCandidateData, const size_t timeCandidateSize )
+{
+    if( !dateQuerySize )
+        return rangeMatchingTime( timeQueryData, timeQuerySize, timeCandidateData, timeCandidateSize );
+    OFDateTime candidate;
+    if( DcmDate::getOFDateFromString( OFreinterpret_cast( const char*, dateCandidateData ), dateCandidateSize, candidate.Date ).bad() )
+        return OFFalse;
+    if( timeCandidateSize && DcmTime::getOFTimeFromString( OFreinterpret_cast( const char*, timeCandidateData ), timeCandidateSize, candidate.Time ).bad() )
+        return OFFalse;
+    const DashSeparated dateQuery( dateQueryData, dateQuerySize );
+    const DashSeparated timeQuery( timeQueryData, timeQuerySize );
+    // check that both date/time ranges have the same structure
+    if( ( dateQuery.first == dateQuery.second ) != ( timeQuery.first != timeQuery.second ) )
+        return OFFalse;
+    if( ( !dateQuery.firstSize && timeQuery.firstSize ) || ( !dateQuery.secondSize && timeQuery.secondSize ) )
+        return OFFalse;
+    OFDateTime first;
+    // parse the first date/time
+    if( dateQuery.firstSize )
+    {
+        if( DcmDate::getOFDateFromString( dateQuery.first, dateQuery.firstSize, first.Date ).bad() )
+            return OFFalse;
+        if( timeQuery.firstSize && DcmTime::getOFTimeFromString( timeQuery.first, timeQuery.firstSize, first.Time ).bad() )
+            return OFFalse;
+    }
+    // test whether it's a single date/time and not a range
+    if( dateQuery.first == dateQuery.second )
+        return dateQuery.firstSize && first == candidate;
+    OFDateTime second;
+    // parse the second date/time
+    if( dateQuery.secondSize )
+    {
+        if( DcmDate::getOFDateFromString( dateQuery.second, dateQuery.secondSize, second.Date ).bad() )
+            return OFFalse;
+        if( timeQuery.secondSize && DcmTime::getOFTimeFromString( timeQuery.second, timeQuery.secondSize, second.Time ).bad() )
+            return OFFalse;
+    }
+    // compare candidate with the date/time range
+    return ( !dateQuery.firstSize || first <= candidate ) && ( !dateQuery.secondSize || second >= candidate );
+}
+
+OFBool DcmAttributeMatching::listOfUIDMatching( const void* queryData, const size_t querySize,
+                                                const void* candidateData, const size_t candidateSize )
+{
+    if( !querySize )
+        return OFTrue;
+    const char* pQuery = OFreinterpret_cast( const char*, queryData );
+    const char* const pQueryEnd = pQuery + querySize;
+    const char* pCandidate = OFreinterpret_cast( const char*, candidateData );
+    const char* const pCandidateEnd = pCandidate + candidateSize;
+    // character wise match both strings, reset candidate pointer whenever a
+    // '\\' character is encountered within a multi-valued query.
+    while( pQuery != pQueryEnd )
+    {
+        if( pCandidate != pCandidateEnd && *pQuery == *pCandidate )
+        {
+            ++pQuery;
+            ++pCandidate;
+        }
+        else
+        {
+            // test whether the candidate matches with the current value from the query
+            if( pCandidate == pCandidateEnd && *pQuery == '\\' )
+                return OFTrue;
+            // mismatch, search for a '\\' char to try again with the next value from the query,
+            // return OFFalse if none can be found, i.e. this was the last value.
+            while( *pQuery != '\\' )
+                if( ++pQuery == pQueryEnd )
+                    return OFFalse;
+            // skip the '\\' character
+            ++pQuery;
+            // reset candidate pointer to the beginning of the candidate
+            pCandidate = OFreinterpret_cast( const char*, candidateData );
+        }
+    }
+    // the query is at its end, we have a match if the candidate is also
+    return pCandidate == pCandidateEnd;
+}
+
+DcmAttributeMatching::DcmAttributeMatching()
+: m_pMatch( OFnullptr )
+{
+
+}
+
+DcmAttributeMatching::DcmAttributeMatching( const DcmVR vr )
+: m_pMatch( OFnullptr )
+{
+    switch( vr.getEVR() )
+    {
+    default:
+        m_pMatch = &DcmAttributeMatching::singleValueMatching;
+        break;
+
+    case EVR_AE:
+    case EVR_CS:
+    case EVR_LO:
+    case EVR_LT:
+    case EVR_PN:
+    case EVR_SH:
+    case EVR_ST:
+    case EVR_UC:
+    case EVR_UR:
+    case EVR_UT:
+        m_pMatch = &DcmAttributeMatching::wildCardMatching;
+        break;
+
+    case EVR_DA:
+        m_pMatch = &DcmAttributeMatching::rangeMatchingDate;
+        break;
+
+    case EVR_TM:
+        m_pMatch = &DcmAttributeMatching::rangeMatchingTime;
+        break;
+
+    case EVR_DT:
+        m_pMatch = &DcmAttributeMatching::rangeMatchingDateTime;
+        break;
+
+    case EVR_UI:
+        m_pMatch = &DcmAttributeMatching::listOfUIDMatching;
+        break;
+    }
+}
+
+DcmAttributeMatching::operator OFBool() const
+{
+    return m_pMatch;
+}
+
+OFBool DcmAttributeMatching::operator!() const
+{
+    return !m_pMatch;
+}
+
+OFBool DcmAttributeMatching::operator()( const void* queryData, const size_t querySize,
+                                         const void* candidateData, const size_t candidateSize ) const
+{
+    assert( m_pMatch );
+    return m_pMatch( queryData, querySize, candidateData, candidateSize );
+}
diff --git a/dcmdata/libsrc/dcmetinf.cc b/dcmdata/libsrc/dcmetinf.cc
index 8ab4f6f..e211c05 100644
--- a/dcmdata/libsrc/dcmetinf.cc
+++ b/dcmdata/libsrc/dcmetinf.cc
@@ -38,6 +38,7 @@
 #include "dcmtk/dcmdata/dcistrma.h"    /* for class DcmInputStream */
 #include "dcmtk/dcmdata/dcistrmf.h"    /* for class DcmInputFileStream */
 #include "dcmtk/dcmdata/dcostrma.h"    /* for class DcmOutputStream */
+#include "dcmtk/dcmdata/dcjson.h"
 
 
 const Uint32 DCM_GroupLengthElementLength = 12;
@@ -210,6 +211,30 @@ OFCondition DcmMetaInfo::writeXML(STD_NAMESPACE ostream &out,
 // ********************************
 
 
+OFCondition DcmMetaInfo::writeJson(STD_NAMESPACE ostream &out,
+                                   DcmJsonFormat &format)
+{
+    if (format.printMetaheaderInformation)
+    {
+        // write content of file meta information
+        if (!elementList->empty())
+        {
+            elementList->seek(ELP_first);
+            OFCondition status = EC_Normal;
+            status = elementList->get()->writeJson(out, format);
+            while (status.good() && elementList->seek(ELP_next))
+            {
+                out << "," << format.newline();
+                status = elementList->get()->writeJson(out, format);
+            }
+            return status;
+        }
+    }
+    return EC_Normal;
+}
+
+// ********************************
+
 void DcmMetaInfo::setPreamble()
 {
     memzero(filePreamble, sizeof(filePreamble));
diff --git a/dcmdata/libsrc/dcobject.cc b/dcmdata/libsrc/dcobject.cc
index ad16929..3bdb1e2 100644
--- a/dcmdata/libsrc/dcobject.cc
+++ b/dcmdata/libsrc/dcobject.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -26,6 +26,7 @@
 
 #include "dcmtk/ofstd/ofstd.h"
 #include "dcmtk/ofstd/ofstream.h"
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/dcmdata/dcobject.h"
 #include "dcmtk/dcmdata/dcdeftag.h"
 #include "dcmtk/dcmdata/dcvr.h"
@@ -55,7 +56,9 @@ OFGlobal<DcmTagKey> dcmStopParsingAfterElement(DCM_UndefinedTagKey); // (0xffff,
 OFGlobal<OFBool>    dcmWriteOversizedSeqsAndItemsUndefined(OFTrue);
 OFGlobal<OFBool>    dcmIgnoreFileMetaInformationGroupLength(OFFalse);
 OFGlobal<OFBool>    dcmReplaceWrongDelimitationItem(OFFalse);
-
+OFGlobal<OFBool>    dcmConvertUndefinedLengthOBOWtoSQ(OFFalse);
+OFGlobal<OFBool>    dcmConvertVOILUTSequenceOWtoSQ(OFFalse);
+OFGlobal<OFBool>    dcmUseExplLengthPixDataForEncTS(OFFalse);
 
 // ****** public methods **********************************
 
@@ -242,6 +245,17 @@ OFCondition DcmObject::writeXML(STD_NAMESPACE ostream& /*out*/,
     return EC_IllegalCall;
 }
 
+
+// ********************************
+
+
+OFCondition DcmObject::writeJson(STD_NAMESPACE ostream& /*out*/,
+                                 DcmJsonFormat& /*format*/)
+{
+    return EC_IllegalCall;
+}
+
+
 // ***********************************************************
 // ****** protected methods **********************************
 // ***********************************************************
diff --git a/dcmdata/libsrc/dcpath.cc b/dcmdata/libsrc/dcpath.cc
index e2f6a63..8284256 100644
--- a/dcmdata/libsrc/dcpath.cc
+++ b/dcmdata/libsrc/dcpath.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2008-2011, OFFIS e.V.
+ *  Copyright (C) 2008-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -638,7 +638,7 @@ OFCondition DcmPathProcessor::findOrCreateItemPath(DcmItem* item,
         status = checkPrivateTagReservation(item, tag);
         if (status.bad()) return status;
       }
-      elem = newDicomElement(tag);
+      elem = DcmItem::newDicomElement(tag);
       if (elem == NULL)
         return EC_IllegalCall;
       status = item->insert(elem, OFTrue);
diff --git a/dcmdata/libsrc/dcpixel.cc b/dcmdata/libsrc/dcpixel.cc
index 6e9b82f..c21acc4 100644
--- a/dcmdata/libsrc/dcpixel.cc
+++ b/dcmdata/libsrc/dcpixel.cc
@@ -949,12 +949,17 @@ OFCondition DcmPixelData::write(
   if (getTransferState() == ERW_notInitialized) errorFlag = EC_IllegalCall;
   else
   {
+    // check if the output transfer syntax is encapsulated
+    // and we are not requested to write an uncompressed dataset
+    // for example because this is within an Icon Image Sequence
     DcmXfer xferSyn(oxfer);
     if (xferSyn.isEncapsulated() && (! writeUnencapsulated(oxfer)))
     {
+      // write encapsulated representation (i.e., compressed image)
       if (getTransferState() == ERW_init)
       {
         DcmRepresentationListIterator found;
+        // find a compressed image matching the output transfer syntax
         errorFlag = findConformingEncapsulatedRepresentation(xferSyn, NULL, found);
         if (errorFlag == EC_Normal)
         {
@@ -964,17 +969,21 @@ OFCondition DcmPixelData::write(
           setTransferState(ERW_inWork);
         }
       }
+      // write compressed image
       if (errorFlag == EC_Normal && pixelSeqForWrite) errorFlag = pixelSeqForWrite->write(outStream, oxfer, enctype, wcache);
       if (errorFlag == EC_Normal) setTransferState(ERW_ready);
     }
     else if (existUnencapsulated)
     {
+      // we're supposed to write an uncompressed image, and we happen to have one available.
       current = repListEnd;
       recalcVR();
+      // write uncompressed image
       errorFlag = DcmPolymorphOBOW::write(outStream, oxfer, enctype, wcache);
     }
-    else if (getValue() == NULL)
+    else if ((getValue() == NULL) && (current == repListEnd))
     {
+      // the PixelData is empty. Write an empty element.
       errorFlag = DcmPolymorphOBOW::write(outStream, oxfer, enctype, wcache);
     } else errorFlag = EC_RepresentationNotFound;
   }
diff --git a/dcmdata/libsrc/dcpixseq.cc b/dcmdata/libsrc/dcpixseq.cc
index 374e8b1..d8cdcf1 100644
--- a/dcmdata/libsrc/dcpixseq.cc
+++ b/dcmdata/libsrc/dcpixseq.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -40,6 +40,15 @@
 // ********************************
 
 
+DcmPixelSequence::DcmPixelSequence(const DcmTag &tag)
+  : DcmSequenceOfItems(tag, 0),
+    Xfer(EXS_Unknown)
+{
+    setTagVR(EVR_OB);
+    setLengthField(DCM_UndefinedLength); // pixel sequences always use undefined length
+}
+
+
 DcmPixelSequence::DcmPixelSequence(const DcmTag &tag,
                                    const Uint32 len)
   : DcmSequenceOfItems(tag, len),
diff --git a/dcmdata/libsrc/dcsequen.cc b/dcmdata/libsrc/dcsequen.cc
index c69f208..600c0f8 100644
--- a/dcmdata/libsrc/dcsequen.cc
+++ b/dcmdata/libsrc/dcsequen.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -30,6 +30,7 @@
 #include "dcmtk/ofstd/ofstd.h"
 #include "dcmtk/ofstd/ofcast.h"
 
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/dcmdata/dcsequen.h"
 #include "dcmtk/dcmdata/dcitem.h"
 #include "dcmtk/dcmdata/dcdirrec.h"
@@ -42,6 +43,16 @@
 #include "dcmtk/dcmdata/dcostrma.h"    /* for class DcmOutputStream */
 
 
+DcmSequenceOfItems::DcmSequenceOfItems(const DcmTag &tag)
+: DcmElement(tag, 0),
+  itemList(new DcmList),
+  lastItemComplete(OFTrue),
+  fStartPosition(0),
+  readAsUN_(OFFalse)
+{
+}
+
+
 // ********************************
 
 
@@ -379,6 +390,33 @@ OFCondition DcmSequenceOfItems::writeXML(STD_NAMESPACE ostream&out,
 // ********************************
 
 
+OFCondition DcmSequenceOfItems::writeJson(STD_NAMESPACE ostream& out,
+                                          DcmJsonFormat &format)
+{
+    // use common method from DcmElement to write opener
+    DcmElement::writeJsonOpener(out, format);
+    OFCondition status = EC_Normal;
+    // write sequence content
+    if (!itemList->empty())
+    {
+        format.printValuePrefix(out);
+        itemList->seek(ELP_first);
+        status = itemList->get()->writeJson(out, format);
+        while (status.good() && itemList->seek(ELP_next))
+        {
+            format.printNextArrayElementPrefix(out);
+            status = itemList->get()->writeJson(out, format);
+        }
+        format.printValueSuffix(out);
+    }
+    DcmElement::writeJsonCloser(out, format);
+    return status;
+}
+
+
+// ********************************
+
+
 OFBool DcmSequenceOfItems::canWriteXfer(const E_TransferSyntax newXfer,
                                         const E_TransferSyntax oldXfer)
 {
diff --git a/dcmdata/libsrc/dcspchrs.cc b/dcmdata/libsrc/dcspchrs.cc
index 8520355..8aca34f 100644
--- a/dcmdata/libsrc/dcspchrs.cc
+++ b/dcmdata/libsrc/dcspchrs.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2015, OFFIS e.V.
+ *  Copyright (C) 2011-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -41,23 +41,37 @@ DcmSpecificCharacterSet::DcmSpecificCharacterSet()
   : SourceCharacterSet(),
     DestinationCharacterSet(),
     DestinationEncoding(),
-    EncodingConverter(),
-    ConversionDescriptors()
+    DefaultEncodingConverter(),
+    EncodingConverters()
 {
 }
 
 
 DcmSpecificCharacterSet::~DcmSpecificCharacterSet()
 {
-    // this frees all previously allocated resources
-    closeConversionDescriptors();
+    clear();
 }
 
 
 void DcmSpecificCharacterSet::clear()
 {
-    // this also clears all other member variables
-    closeConversionDescriptors();
+    DefaultEncodingConverter.clear();
+    EncodingConverters.clear();
+    SourceCharacterSet.clear();
+    DestinationCharacterSet.clear();
+    DestinationEncoding.clear();
+}
+
+
+DcmSpecificCharacterSet::operator OFBool() const
+{
+    return OFstatic_cast(OFBool, DefaultEncodingConverter);
+}
+
+
+OFBool DcmSpecificCharacterSet::operator!() const
+{
+    return !DefaultEncodingConverter;
 }
 
 
@@ -79,25 +93,34 @@ const OFString &DcmSpecificCharacterSet::getDestinationEncoding() const
 }
 
 
-OFBool DcmSpecificCharacterSet::getTransliterationMode() const
+unsigned DcmSpecificCharacterSet::getConversionFlags() const
 {
-    return EncodingConverter.getTransliterationMode();
+    return DefaultEncodingConverter.getConversionFlags();
 }
 
 
-OFBool DcmSpecificCharacterSet::getDiscardIllegalSequenceMode() const
+OFCondition DcmSpecificCharacterSet::setConversionFlags(const unsigned flags)
 {
-    return EncodingConverter.getDiscardIllegalSequenceMode();
+    if (!EncodingConverters.empty())
+    {
+        /* pass conversion flags to all "encoding converters" */
+        for (T_EncodingConvertersMap::iterator it = EncodingConverters.begin();
+            it != EncodingConverters.end(); ++it)
+        {
+            OFCondition status = it->second.setConversionFlags(flags);
+            if (status.bad())
+                return status;
+        }
+        return EC_Normal;
+    } else return DefaultEncodingConverter.setConversionFlags(flags);
 }
 
 
 OFCondition DcmSpecificCharacterSet::selectCharacterSet(const OFString &fromCharset,
-                                                        const OFString &toCharset,
-                                                        const OFBool transliterate,
-                                                        const OFBool discardIllegal)
+                                                        const OFString &toCharset)
 {
-    // first, make sure that all conversion descriptors are closed
-    closeConversionDescriptors();
+    // first, make sure that all converters are cleared
+    clear();
     // determine the destination encoding (and check whether it is supported at all)
     OFCondition status = determineDestinationEncoding(toCharset);
     if (status.good())
@@ -110,7 +133,7 @@ OFCondition DcmSpecificCharacterSet::selectCharacterSet(const OFString &fromChar
         if (sourceVM == 0)
         {
             // no character set specified, use ASCII
-            status = EncodingConverter.selectEncoding("ASCII", DestinationEncoding);
+            status = DefaultEncodingConverter.selectEncoding("ASCII", DestinationEncoding);
             // output some useful debug information
             if (status.good())
             {
@@ -126,55 +149,19 @@ OFCondition DcmSpecificCharacterSet::selectCharacterSet(const OFString &fromChar
             // multiple character sets specified (code extensions used)
             status = selectCharacterSetWithCodeExtensions(sourceVM);
         }
-        // enable or disable the transliteration mode
-        if (status.good())
-        {
-            status = EncodingConverter.setTransliterationMode(transliterate);
-            if (status.good())
-            {
-                // output some useful debug information
-                if (transliterate)
-                {
-                    DCMDATA_DEBUG("DcmSpecificCharacterSet: Enabled transliteration mode, "
-                        << "i.e. the approximation of similar looking characters will be used");
-                } else {
-                    DCMDATA_DEBUG("DcmSpecificCharacterSet: Disabled transliteration mode, "
-                        << "i.e. the approximation of similar looking characters will not be used");
-                }
-            }
-        }
-        // enable or disable the discard illegal sequence mode
-        if (status.good())
-        {
-            status = EncodingConverter.setDiscardIllegalSequenceMode(discardIllegal);
-            if (status.good())
-            {
-                // output some useful debug information
-                if (discardIllegal)
-                {
-                    DCMDATA_DEBUG("DcmSpecificCharacterSet: Enabled 'discard illegal sequence' mode, "
-                        << "i.e. non-representable characters will be discarded");
-                } else {
-                    DCMDATA_DEBUG("DcmSpecificCharacterSet: Disabled 'discard illegal sequence' mode, "
-                        << "i.e. non-representable characters will not be discarded");
-                }
-            }
-        }
     }
     return status;
 }
 
 
 OFCondition DcmSpecificCharacterSet::selectCharacterSet(DcmItem &dataset,
-                                                        const OFString &toCharset,
-                                                        const OFBool transliterate,
-                                                        const OFBool discardIllegal)
+                                                        const OFString &toCharset)
 {
     OFString fromCharset;
     // check whether Specific Character Set (0008,0005) is present in the given item/dataset
     dataset.findAndGetOFStringArray(DCM_SpecificCharacterSet, fromCharset, OFFalse /*searchIntoSub*/);
     // if missing or empty, the default character set (ASCII) will be used
-    return selectCharacterSet(fromCharset, toCharset, transliterate, discardIllegal);
+    return selectCharacterSet(fromCharset, toCharset);
 }
 
 
@@ -213,14 +200,22 @@ OFCondition DcmSpecificCharacterSet::determineDestinationEncoding(const OFString
     else if (DestinationCharacterSet == "ISO_IR 148")   // Latin alphabet No. 5
         DestinationEncoding = "ISO-8859-9";
     else if (DestinationCharacterSet == "ISO_IR 13")    // Japanese
-        DestinationEncoding = "JIS_X0201";              // - "ISO-IR-13" is not supported by libiconv
+#if DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICONV
+        DestinationEncoding = "JIS_X0201";              // - the name "ISO-IR-13" is not supported by libiconv
+#else
+        DestinationEncoding = "Shift_JIS";              // - ICU and stdlibc iconv only know "Shift_JIS" (is this mapping correct?)
+#endif
     else if (DestinationCharacterSet == "ISO_IR 166")   // Thai
+#if DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICU
+        DestinationEncoding = "TIS-620";                // - the name "ISO-IR-166" is not supported by ICU
+#else
         DestinationEncoding = "ISO-IR-166";
+#endif
     else if (DestinationCharacterSet == "ISO_IR 192")   // Unicode in UTF-8 (multi-byte)
         DestinationEncoding = "UTF-8";
     else if (DestinationCharacterSet == "GB18030")      // Chinese (multi-byte)
         DestinationEncoding = "GB18030";
-    else if (DestinationCharacterSet == "GBK")          // Chinese (multi-byte, subset of GB18030)
+    else if (DestinationCharacterSet == "GBK")          // Chinese (multi-byte, subset of "GB 18030")
         DestinationEncoding = "GBK";
     else {
         DestinationEncoding.clear();
@@ -266,14 +261,22 @@ OFCondition DcmSpecificCharacterSet::selectCharacterSetWithoutCodeExtensions()
     else if (SourceCharacterSet == "ISO_IR 148")    // Latin alphabet No. 5
         fromEncoding = "ISO-8859-9";
     else if (SourceCharacterSet == "ISO_IR 13")     // Japanese
-        fromEncoding = "JIS_X0201";                 // - "ISO-IR-13" is not supported by libiconv
+#if DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICONV
+        fromEncoding = "JIS_X0201";                 // - the name "ISO-IR-13" is not supported by libiconv
+#else
+        fromEncoding = "Shift_JIS";                 // - ICU and stdlibc iconv only know "Shift_JIS" (is this mapping correct?)
+#endif
     else if (SourceCharacterSet == "ISO_IR 166")    // Thai
+#if DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICU
+        fromEncoding = "TIS-620";                   // - the name "ISO-IR-166" is not supported by ICU
+#else
         fromEncoding = "ISO-IR-166";
+#endif
     else if (SourceCharacterSet == "ISO_IR 192")    // Unicode in UTF-8 (multi-byte)
         fromEncoding = "UTF-8";
     else if (SourceCharacterSet == "GB18030")       // Chinese (multi-byte)
         fromEncoding = "GB18030";
-    else if (SourceCharacterSet == "GBK")           // Chinese (multi-byte, subset of GB18030)
+    else if (SourceCharacterSet == "GBK")           // Chinese (multi-byte, subset of "GB 18030")
         fromEncoding = "GBK";
     else {
         // create an appropriate error code
@@ -286,7 +289,7 @@ OFCondition DcmSpecificCharacterSet::selectCharacterSetWithoutCodeExtensions()
     // check whether an appropriate character encoding has been found
     if (!fromEncoding.empty())
     {
-        status = EncodingConverter.selectEncoding(fromEncoding, DestinationEncoding);
+        status = DefaultEncodingConverter.selectEncoding(fromEncoding, DestinationEncoding);
         // output some useful debug information
         if (status.good())
         {
@@ -309,7 +312,6 @@ OFCondition DcmSpecificCharacterSet::selectCharacterSetWithCodeExtensions(const
     OFBool needsASCII = OFFalse;
     OFBool notFirstValue = OFFalse;
     OFString definedTerm;
-    OFCharacterEncoding::T_Descriptor descriptor;
     unsigned long i = 0;
     while ((i < sourceVM) && status.good())
     {
@@ -368,21 +370,29 @@ OFCondition DcmSpecificCharacterSet::selectCharacterSetWithCodeExtensions(const
         }
         else if (definedTerm == "ISO 2022 IR 13")       // Japanese
         {
-            encodingName = "JIS_X0201";                 // - "ISO-IR-13" is not supported by libiconv
+#if DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICONV
+            encodingName = "JIS_X0201";                 // - the name "ISO-IR-13" is not supported by libiconv
+#else
+            encodingName = "Shift_JIS";                 // - ICU and stdlibc iconv only know "Shift_JIS" (is this mapping correct?)
+#endif
         }
         else if (definedTerm == "ISO 2022 IR 166")      // Thai
         {
+#if DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICU
+            encodingName = "TIS-620";                   // - "ISO-IR-166" is not supported by ICU
+#else
             encodingName = "ISO-IR-166";
+#endif
             needsASCII = OFTrue;
         }
         else if (definedTerm == "ISO 2022 IR 87")       // Japanese (multi-byte)
         {
-            encodingName = "ISO-IR-87";
+            encodingName = "ISO-IR-87";                 // - this might generate an error since "ISO-IR-87" is not supported by ICU and stdlibc iconv
             notFirstValue = OFTrue;
         }
         else if (definedTerm == "ISO 2022 IR 159")      // Japanese (multi-byte)
         {
-            encodingName = "ISO-IR-159";
+            encodingName = "ISO-IR-159";                // - this might generate an error since "ISO-IR-159" is not supported by ICU and stdlibc iconv
             notFirstValue = OFTrue;
         }
         else if (definedTerm == "ISO 2022 IR 149")      // Korean (multi-byte)
@@ -415,23 +425,29 @@ OFCondition DcmSpecificCharacterSet::selectCharacterSetWithCodeExtensions(const
         // add descriptor to the map using the defined term as a key
         if (status.good() && !encodingName.empty())
         {
+            OFPair<T_EncodingConvertersMap::iterator,OFBool> conv = EncodingConverters.insert(
+                OFMake_pair(definedTerm, OFCharacterEncoding()));
             // but first check whether this encoding has already been added before
-            if (ConversionDescriptors.find(definedTerm) == ConversionDescriptors.end())
+            if (conv.second)
             {
-                status = EncodingConverter.openDescriptor(descriptor, encodingName, DestinationEncoding);
+                status = conv.first->second.selectEncoding(encodingName, DestinationEncoding);
                 if (status.good())
                 {
-                    ConversionDescriptors[definedTerm] = descriptor;
                     // output some useful debug information
                     DCMDATA_DEBUG("DcmSpecificCharacterSet: Added character set '" << definedTerm
                         << "' (" << encodingName << ") for the conversion to " << DestinationEncoding);
                     // also remember the default descriptor, which refers to the first character set
                     if (i == 0)
                     {
-                        EncodingConverter.ConversionDescriptor = descriptor;
+                        DefaultEncodingConverter = conv.first->second;
                         DCMDATA_TRACE("DcmSpecificCharacterSet: Also selected this character set "
                             << "(i.e. '" << definedTerm << "') as the default one");
                     }
+                } else {
+                    DCMDATA_ERROR("DcmSpecificCharacterSet: '" << definedTerm <<
+                        "' is not supported by the utilized character set conversion library '"
+                        << OFCharacterEncoding::getLibraryVersionString() << '\'');
+                    EncodingConverters.erase(conv.first);
                 }
             } else {
                 DCMDATA_WARN("DcmSpecificCharacterSet: '" << definedTerm << "' is defined more than once "
@@ -440,19 +456,25 @@ OFCondition DcmSpecificCharacterSet::selectCharacterSetWithCodeExtensions(const
         }
         ++i;
     }
-    if (status.good())
+    // add ASCII to the map if needed but not already there
+    if (status.good() && needsASCII)
     {
-        // add ASCII to the map if needed but not already there
-        if (needsASCII && (ConversionDescriptors.find("ISO 2022 IR 6") == ConversionDescriptors.end()))
+        OFPair<T_EncodingConvertersMap::iterator,OFBool> conv = EncodingConverters.insert(
+            OFMake_pair(OFString("ISO 2022 IR 6"), OFCharacterEncoding()));
+        if (conv.second)
         {
-            status = EncodingConverter.openDescriptor(descriptor, "ASCII", DestinationEncoding);
+            status = conv.first->second.selectEncoding("ASCII", DestinationEncoding);
             if (status.good())
             {
-                ConversionDescriptors["ISO 2022 IR 6"] = descriptor;
                 // output some useful debug information
                 DCMDATA_DEBUG("DcmSpecificCharacterSet: Added character set 'ISO 2022 IR 6' (ASCII) "
                     << "for the conversion to " << DestinationEncoding
                     << " (because it is needed for one or more of the previously added character sets)");
+            } else {
+                DCMDATA_ERROR("DcmSpecificCharacterSet: 'ISO 2022 IR 6' is not supported by"
+                    << " the utilized character set conversion library '"
+                    << OFCharacterEncoding::getLibraryVersionString() << '\'');
+                EncodingConverters.erase(conv.first);
             }
         }
     }
@@ -476,12 +498,12 @@ OFCondition DcmSpecificCharacterSet::convertString(const char *fromString,
 {
     OFCondition status = EC_Normal;
     // check whether there are any code extensions at all
-    if ((ConversionDescriptors.size() == 0) || !checkForEscapeCharacter(fromString, fromLength))
+    if (EncodingConverters.empty() || !checkForEscapeCharacter(fromString, fromLength))
     {
         DCMDATA_DEBUG("DcmSpecificCharacterSet: Converting '"
             << convertToLengthLimitedOctalString(fromString, fromLength) << "'");
         // no code extensions according to ISO 2022 used - this is the simple case
-        status = EncodingConverter.convertString(fromString, fromLength, toString, OFTrue /*clearMode*/);
+        status = DefaultEncodingConverter.convertString(fromString, fromLength, toString, OFTrue /*clearMode*/);
     } else {
         if (delimiters.empty())
         {
@@ -497,25 +519,27 @@ OFCondition DcmSpecificCharacterSet::convertString(const char *fromString,
         // particular escape sequences in order to switch between character sets
         toString.clear();
         size_t pos = 0;
+        // some (extended) character sets use more than 1 byte per character
+        // (however, the default character set always uses a single byte)
+        unsigned char bytesPerChar = 1;
         // check whether '=' is a delimiter, as it is used in PN values
         OFBool isFirstGroup = (delimiters.find('=') != OFString_npos);
-        // by default, we expect that '^' and '=' (i.e. their ASCII codes) are valid PN delimiters
+        // by default, we expect that delimiters can be checked by their corresponding ASCII codes
         // (this implies that the default character set is not "ISO 2022 IR 87" or "ISO 2022 IR 159")
-        OFBool checkPNDelimiters = OFTrue;
+        OFBool checkDelimiters = OFTrue;
         const char *firstChar = fromString;
         const char *currentChar = fromString;
         // initially, use the default descriptor
-        OFCharacterEncoding::T_Descriptor descriptor = EncodingConverter.ConversionDescriptor;
+        OFCharacterEncoding converter = DefaultEncodingConverter;
         DCMDATA_TRACE("  Starting with the default character set");
         // iterate over all characters of the string (as long as there is no error)
         while ((pos < fromLength) && status.good())
         {
             const char c0 = *currentChar++;
             // check for characters ESC, HT, LF, FF, CR or any other specified delimiter
-            // (the PN delimiters '^' and '=' require the default character set or ASCII)
             const OFBool isEscape = (c0 == '\033');
-            const OFBool isDelimiter = (c0 == '\011') || (c0 == '\012') || (c0 == '\014') || (c0 == '\015') ||
-                ((delimiters.find(c0) != OFString_npos) && (((c0 != '^') && (c0 != '=')) || checkPNDelimiters));
+            const OFBool isDelimiter = checkDelimiters &&
+                ((c0 == '\011') || (c0 == '\012') || (c0 == '\014') || (c0 == '\015') || (delimiters.find(c0) != OFString_npos));
             if (isEscape || isDelimiter)
             {
                 // convert the sub-string (before the delimiter) with the current character set
@@ -525,7 +549,7 @@ OFCondition DcmSpecificCharacterSet::convertString(const char *fromString,
                     // output some debug information
                     DCMDATA_TRACE("    Converting sub-string '"
                         << convertToLengthLimitedOctalString(firstChar, convertLength) << "'");
-                    status = EncodingConverter.convertString(descriptor, firstChar, convertLength, toString, OFFalse /*clearMode*/);
+                    status = converter.convertString(firstChar, convertLength, toString, OFFalse /*clearMode*/);
                     if (status.bad())
                         DCMDATA_TRACE("    -> ERROR: " << status.text());
                 }
@@ -596,7 +620,7 @@ OFCondition DcmSpecificCharacterSet::convertString(const char *fromString,
                         if (pos + escLength < fromLength)
                         {
                             c3 = *currentChar++;
-                            if (c3 == 0x43)                // Korean (multi-byte)
+                            if (c3 == 0x43)                // Korean (single- and multi-byte)
                                 key = "ISO 2022 IR 149";
                             else if (c3 == 0x41)           // Simplified Chinese (multi-byte)
                                 key = "ISO 2022 IR 58";
@@ -624,14 +648,28 @@ OFCondition DcmSpecificCharacterSet::convertString(const char *fromString,
                     if (status.good())
                     {
                         DCMDATA_TRACE("  Switching to character set '" << key << "'");
-                        T_DescriptorMap::const_iterator iter = ConversionDescriptors.find(key);
+                        T_EncodingConvertersMap::const_iterator it = EncodingConverters.find(key);
                         // check whether the descriptor was found in the map, i.e. properly declared in (0008,0005)
-                        if (iter != ConversionDescriptors.end())
+                        if (it != EncodingConverters.end())
                         {
-                            descriptor = iter->second;
+                            converter = it->second;
                             // special case: these Japanese character sets replace the ASCII part (G0 code area),
-                            // so according to DICOM PS 3.5 Section 6.2.1 an explicit switch to the default is required
-                            checkPNDelimiters = (key != "ISO 2022 IR 87") && (key != "ISO 2022 IR 159");
+                            // so according to DICOM PS 3.5 Section 6.2.1.2 an explicit switch to the default is required
+                            checkDelimiters = (key != "ISO 2022 IR 87") && (key != "ISO 2022 IR 159");
+                            // determine number of bytes per character (used by the selected character set)
+                            if ((key == "ISO 2022 IR 87") || (key == "ISO 2022 IR 159") || (key == "ISO 2022 IR 58"))
+                            {
+                                DCMDATA_TRACE("    Now using 2 bytes per character");
+                                bytesPerChar = 2;
+                            }
+                            else if (key == "ISO 2022 IR 149")
+                            {
+                                DCMDATA_TRACE("    Now using 1 or 2 bytes per character");
+                                bytesPerChar = 0;      // special handling for single- and multi-byte
+                            } else {
+                                DCMDATA_TRACE("    Now using 1 byte per character");
+                                bytesPerChar = 1;
+                            }
                         } else {
                             OFOStringStream stream;
                             stream << "Cannot convert character set: Escape sequence refers to character set '" << key << "' that "
@@ -654,7 +692,7 @@ OFCondition DcmSpecificCharacterSet::convertString(const char *fromString,
                 // do not copy the escape sequence to the output
                 firstChar = currentChar;
             }
-            // the LF, FF, CR character or other delimiters (depending on the VR) also cause a switch
+            // the HT, LF, FF, CR character or other delimiters (depending on the VR) also cause a switch
             else if (isDelimiter)
             {
                 // output some debug information
@@ -664,15 +702,23 @@ OFCondition DcmSpecificCharacterSet::convertString(const char *fromString,
                 // don't forget to append the delimiter
                 toString += c0;
                 // use the default descriptor again (see DICOM PS 3.5)
-                if (descriptor != EncodingConverter.ConversionDescriptor)
+                if (converter != DefaultEncodingConverter)
                 {
                     DCMDATA_TRACE("  Switching back to the default character set (because a delimiter was found)");
-                    descriptor = EncodingConverter.ConversionDescriptor;
-                    checkPNDelimiters = OFTrue;
+                    converter = DefaultEncodingConverter;
+                    checkDelimiters = OFTrue;
                 }
                 // start new sub-string after delimiter
                 firstChar = currentChar;
             }
+            // skip remaining bytes of current character (if any)
+            else if (bytesPerChar != 1)
+            {
+                const size_t skipBytes = (bytesPerChar > 0) ? (bytesPerChar - 1) : ((c0 & 0x80) ? 1 : 0);
+                if (pos + skipBytes < fromLength)
+                    currentChar += skipBytes;
+                pos += skipBytes;
+            }
             ++pos;
         }
         if (status.good())
@@ -684,7 +730,7 @@ OFCondition DcmSpecificCharacterSet::convertString(const char *fromString,
                 // output some debug information
                 DCMDATA_TRACE("    Converting remaining sub-string '"
                     << convertToLengthLimitedOctalString(firstChar, convertLength) << "'");
-                status = EncodingConverter.convertString(descriptor, firstChar, convertLength, toString, OFFalse /*clearMode*/);
+                status = converter.convertString(firstChar, convertLength, toString, OFFalse /*clearMode*/);
                 if (status.bad())
                     DCMDATA_TRACE("    -> ERROR: " << status.text());
             }
@@ -708,7 +754,7 @@ OFCondition DcmSpecificCharacterSet::convertString(const char *fromString,
 }
 
 
-OFBool DcmSpecificCharacterSet::isConversionLibraryAvailable()
+OFBool DcmSpecificCharacterSet::isConversionAvailable()
 {
     // just call the appropriate function from the underlying class
     return OFCharacterEncoding::isLibraryAvailable();
@@ -722,37 +768,6 @@ size_t DcmSpecificCharacterSet::countCharactersInUTF8String(const OFString &utf8
 }
 
 
-void DcmSpecificCharacterSet::closeConversionDescriptors()
-{
-    T_DescriptorMap::iterator iter = ConversionDescriptors.begin();
-    T_DescriptorMap::const_iterator last = ConversionDescriptors.end();
-    // iterate over the map of conversion descriptors
-    while (iter != last)
-    {
-        // make sure that the default descriptor is not closed multiple times
-        if (iter->second != EncodingConverter.ConversionDescriptor)
-        {
-            // and close the descriptor
-            if (EncodingConverter.closeDescriptor(iter->second).bad())
-            {
-                DCMDATA_ERROR("DcmSpecificCharacterSet: Cannot close previously allocated "
-                    << "conversion descriptor for '" << iter->first << "'");
-            }
-        }
-        ++iter;
-    }
-    // clear the map
-    ConversionDescriptors.clear();
-    // and close the default descriptor
-    if (EncodingConverter.closeDescriptor(EncodingConverter.ConversionDescriptor).bad())
-        DCMDATA_ERROR("DcmSpecificCharacterSet: Cannot close currently selected conversion descriptor");
-    // also clear the various character set and encoding name variables
-    SourceCharacterSet.clear();
-    DestinationCharacterSet.clear();
-    DestinationEncoding.clear();
-}
-
-
 OFBool DcmSpecificCharacterSet::checkForEscapeCharacter(const char *strValue,
                                                         const size_t strLength) const
 {
diff --git a/dcmdata/libsrc/dcstack.cc b/dcmdata/libsrc/dcstack.cc
index eba49a2..4451447 100644
--- a/dcmdata/libsrc/dcstack.cc
+++ b/dcmdata/libsrc/dcstack.cc
@@ -162,9 +162,11 @@ DcmObject* DcmStack::elem(const unsigned long number) const
     unsigned long num = number;
     DcmObject *obj;
     DcmStackNode *node = topNode_;
-    while ( num-- > 0 && node != NULL )
+    while ( num > 0 && node != NULL )
+    {
          node = node->link;
-
+         --num;
+    }
     if ( node != NULL )
         obj = node->value();
     else
diff --git a/dcmdata/libsrc/dcswap.cc b/dcmdata/libsrc/dcswap.cc
index b6f041e..37fa4a7 100644
--- a/dcmdata/libsrc/dcswap.cc
+++ b/dcmdata/libsrc/dcswap.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -87,8 +87,9 @@ void swapBytes(void * value, const Uint32 byteLength,
         Uint8 *first = &OFstatic_cast(Uint8*, value)[0];
         Uint8 *second = &OFstatic_cast(Uint8*, value)[1];
         Uint32 times = byteLength / 2;
-        while(times--)
+        while(times)
         {
+            --times;
             save = *first;
             *first = *second;
             *second = save;
@@ -108,13 +109,15 @@ void swapBytes(void * value, const Uint32 byteLength,
         Uint32 times = OFstatic_cast(Uint32, byteLength / valWidth);
         Uint8  *base = OFstatic_cast(Uint8 *, value);
 
-        while (times--)
+        while (times)
         {
+            --times;
             i = halfWidth;
             start = base;
             end = base+offset;
-            while (i--)
+            while (i)
             {
+                --i;
                 save = *start;
                 *start++ = *end;
                 *end-- = save;
diff --git a/dcmdata/libsrc/dctypes.cc b/dcmdata/libsrc/dctypes.cc
index 561dcdd..b52e5ce 100644
--- a/dcmdata/libsrc/dctypes.cc
+++ b/dcmdata/libsrc/dctypes.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2011, OFFIS e.V.
+ *  Copyright (C) 2002-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -34,7 +34,7 @@ const size_t DCMTypes::PF_convertToMarkup       = 1 << 3;
 const size_t DCMTypes::PF_convertToOctalNumbers = 1 << 4;
 const size_t DCMTypes::PF_useANSIEscapeCodes    = 1 << 5;
 
-/* writeXML flags */
+/* write XML flags */
 const size_t DCMTypes::XF_addDocumentType       = 1 << 0;
 const size_t DCMTypes::XF_writeBinaryData       = 1 << 1;
 const size_t DCMTypes::XF_encodeBase64          = 1 << 2;
@@ -43,3 +43,7 @@ const size_t DCMTypes::XF_embedDocumentType     = 1 << 4;
 const size_t DCMTypes::XF_omitDataElementName   = 1 << 5;
 const size_t DCMTypes::XF_convertNonASCII       = 1 << 6;
 const size_t DCMTypes::XF_useNativeModel        = 1 << 7;
+
+/* character set conversion flags */
+const size_t DCMTypes::CF_transliterate         = 1 << 0;
+const size_t DCMTypes::CF_discardIllegal        = 1 << 1;
diff --git a/dcmdata/libsrc/dcuid.cc b/dcmdata/libsrc/dcuid.cc
index 18bbad1..a5b86e6 100644
--- a/dcmdata/libsrc/dcuid.cc
+++ b/dcmdata/libsrc/dcuid.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -122,6 +122,10 @@ static const UIDNameMap uidNameMap[] = {
     { UID_DeflatedExplicitVRLittleEndianTransferSyntax,        "DeflatedLittleEndianExplicit" },
     { UID_JPEG2000LosslessOnlyTransferSyntax,                  "JPEG2000LosslessOnly" },
     { UID_JPEG2000TransferSyntax,                              "JPEG2000" },
+    { UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax, "JPEG2000MulticomponentLosslessOnly" },
+    { UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax,             "JPEG2000Multicomponent" },
+    { UID_JPIPReferencedTransferSyntax,                        "JPIPReferenced" },
+    { UID_JPIPReferencedDeflateTransferSyntax,                 "JPIPReferencedDeflate" },
     { UID_MPEG2MainProfileAtMainLevelTransferSyntax,           "MPEG2MainProfile at MainLevel" },
     { UID_MPEG2MainProfileAtHighLevelTransferSyntax,           "MPEG2MainProfile at HighLevel" },
     { UID_MPEG4HighProfileLevel4_1TransferSyntax,              "MPEG4HighProfile/Level4.1" },
@@ -129,10 +133,8 @@ static const UIDNameMap uidNameMap[] = {
     { UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax,   "MPEG4HighProfile/Level4.2For2DVideo" },
     { UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax,   "MPEG4HighProfile/Level4.2For3DVideo" },
     { UID_MPEG4StereoHighProfileLevel4_2TransferSyntax,        "MPEG4StereoHighProfile/Level4.2" },
-    { UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax, "JPEG2000MulticomponentLosslessOnly" },
-    { UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax,             "JPEG2000Multicomponent" },
-    { UID_JPIPReferencedTransferSyntax,                        "JPIPReferenced" },
-    { UID_JPIPReferencedDeflateTransferSyntax,                 "JPIPReferencedDeflate" },
+    { UID_HEVCMainProfileLevel5_1TransferSyntax,               "HEVCMainProfile/Level5.1" },
+    { UID_HEVCMain10ProfileLevel5_1TransferSyntax,             "HEVCMain10Profile/Level5.1" },
     { UID_RFC2557MIMEEncapsulationTransferSyntax,              "RFC2557MIMEEncapsulation" },
     { UID_XMLEncodingTransferSyntax,                           "XMLEncoding" },
 
@@ -151,6 +153,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_CardiacElectrophysiologyWaveformStorage,             "CardiacElectrophysiologyWaveformStorage" },
     { UID_ChestCADSRStorage,                                   "ChestCADSRStorage" },
     { UID_ColonCADSRStorage,                                   "ColonCADSRStorage" },
+    { UID_ColorPaletteStorage,                                 "ColorPaletteStorage" },
     { UID_ColorSoftcopyPresentationStateStorage,               "ColorSoftcopyPresentationStateStorage" },
     { UID_CompositingPlanarMPRVolumetricPresentationStateStorage, "CompositingPlanarMPRVolumetricPresentationStateStorage" },
     { UID_Comprehensive3DSRStorage,                            "Comprehensive3DSRStorage" },
@@ -158,7 +161,9 @@ static const UIDNameMap uidNameMap[] = {
     { UID_ComputedRadiographyImageStorage,                     "ComputedRadiographyImageStorage" },
     { UID_ContentAssessmentResultsStorage,                     "ContentAssessmentResultsStorage" },
     { UID_CornealTopographyMapStorage,                         "CornealTopographyMapStorage" },
+    { UID_CTDefinedProcedureProtocolStorage,                   "CTDefinedProcedureProtocolStorage" },
     { UID_CTImageStorage,                                      "CTImageStorage" },
+    { UID_CTPerformedProcedureProtocolStorage,                 "CTPerformedProcedureProtocolStorage" },
     { UID_DeformableSpatialRegistrationStorage,                "DeformableSpatialRegistrationStorage" },
     { UID_DigitalIntraOralXRayImageStorageForPresentation,     "DigitalIntraOralXRayImageStorageForPresentation" },
     { UID_DigitalIntraOralXRayImageStorageForProcessing,       "DigitalIntraOralXRayImageStorageForProcessing" },
@@ -233,6 +238,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_RTTreatmentSummaryRecordStorage,                     "RTTreatmentSummaryRecordStorage" },
     { UID_SecondaryCaptureImageStorage,                        "SecondaryCaptureImageStorage" },
     { UID_SegmentationStorage,                                 "SegmentationStorage" },
+    { UID_SimplifiedAdultEchoSRStorage,                        "SimplifiedAdultEchoSRStorage" },
     { UID_SpatialFiducialsStorage,                             "SpatialFiducialsStorage" },
     { UID_SpatialRegistrationStorage,                          "SpatialRegistrationStorage" },
     { UID_SpectaclePrescriptionReportStorage,                  "SpectaclePrescriptionReportStorage" },
@@ -255,7 +261,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_VLSlideCoordinatesMicroscopicImageStorage,           "VLSlideCoordinatesMicroscopicImageStorage" },
     { UID_VLWholeSlideMicroscopyImageStorage,                  "VLWholeSlideMicroscopyImageStorage" },
     { UID_WideFieldOphthalmicPhotographyStereographicProjectionImageStorage, "WideFieldOphthalmicPhotographyStereographicProjectionImageStorage" },
-    { UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage, "OphthalmicPhotography3DCoordinatesImageStorage" },
+    { UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage, "WideFieldOphthalmicPhotography3DCoordinatesImageStorage" },
     { UID_XAXRFGrayscaleSoftcopyPresentationStateStorage,      "XAXRFGrayscaleSoftcopyPresentationStateStorage" },
     { UID_XRay3DAngiographicImageStorage,                      "XRay3DAngiographicImageStorage" },
     { UID_XRay3DCraniofacialImageStorage,                      "XRay3DCraniofacialImageStorage" },
@@ -345,8 +351,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_CardiacRelevantPatientInformationQuery,              "CardiacRelevantPatientInformationQuery" },
     { UID_GeneralRelevantPatientInformationQuery,              "GeneralRelevantPatientInformationQuery" },
 
-    // Color Palette Storage and Query/Retrieve
-    { UID_ColorPaletteStorage,                                 "ColorPaletteStorage" },
+    // Color Palette Query/Retrieve
     { UID_FINDColorPaletteInformationModel,                    "FINDColorPaletteInformationModel" },
     { UID_MOVEColorPaletteInformationModel,                    "MOVEColorPaletteInformationModel" },
     { UID_GETColorPaletteInformationModel,                     "GETColorPaletteInformationModel" },
@@ -362,6 +367,11 @@ static const UIDNameMap uidNameMap[] = {
     { UID_MOVEImplantTemplateGroupInformationModel,            "MOVEImplantTemplateGroupInformationModel" },
     { UID_GETImplantTemplateGroupInformationModel,             "GETImplantTemplateGroupInformationModel" },
 
+    // Defined Procedure Protocol Query/Retrieve
+    { UID_FINDDefinedProcedureProtocolInformationModel,        "FINDDefinedProcedureProtocolInformationModel" },
+    { UID_MOVEDefinedProcedureProtocolInformationModel,        "MOVEDefinedProcedureProtocolInformationModel" },
+    { UID_GETDefinedProcedureProtocolInformationModel,         "GETDefinedProcedureProtocolInformationModel" },
+
     // Print
     { UID_BasicAnnotationBoxSOPClass,                          "BasicAnnotationBoxSOPClass" },
     { UID_BasicColorImageBoxSOPClass,                          "BasicColorImageBoxSOPClass" },
@@ -507,6 +517,10 @@ static const UIDNameMap uidNameMap[] = {
     { UID_HotMetalBlueColorPaletteSOPInstance,                 "HotMetalBlueColorPaletteSOPInstance" },
     { UID_PET20StepColorPaletteSOPInstance,                    "PET20StepColorPaletteSOPInstance" },
     { UID_PETColorPaletteSOPInstance,                          "PETColorPaletteSOPInstance" },
+    { UID_SpringColorPaletteSOPInstance,                       "SpringColorPaletteSOPInstance" },
+    { UID_SummerColorPaletteSOPInstance,                       "SummerColorPaletteSOPInstance" },
+    { UID_FallColorPaletteSOPInstance,                         "FallColorPaletteSOPInstance" },
+    { UID_WinterColorPaletteSOPInstance,                       "WinterColorPaletteSOPInstance" },
 
     // Draft Supplements
     { UID_DRAFT_RTBeamsDeliveryInstructionStorage,             "DRAFT_RTBeamsDeliveryInstructionStorage" },
@@ -532,8 +546,8 @@ static const int uidNameMap_size = OFstatic_cast(int, sizeof(uidNameMap) / sizeo
 /** an array of const strings containing all known Storage SOP Classes
  *  that fit into the conventional PATIENT-STUDY-SERIES-INSTANCE information
  *  model, i.e. everything a Storage SCP might want to store in a PACS.
- *  Special cases such as hanging protocol storage or the Storage SOP Class
- *  are not included in this list.
+ *  Special cases such as the Hanging Protocol or Color Palette Storage SOP
+ *  Class are not included in this list but in dcmNonPatientStorageSOPClassUIDs.
  *
  *  THIS LIST CONTAINS ALL STORAGE SOP CLASSES INCLUDING RETIRED ONES
  *  AND IS (MUCH) LARGER THAN 64 ENTRIES.
@@ -562,6 +576,7 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_ContentAssessmentResultsStorage,
     UID_CornealTopographyMapStorage,
     UID_CTImageStorage,
+    UID_CTPerformedProcedureProtocolStorage,
     UID_DeformableSpatialRegistrationStorage,
     UID_DigitalIntraOralXRayImageStorageForPresentation,
     UID_DigitalIntraOralXRayImageStorageForProcessing,
@@ -582,13 +597,10 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_ExtensibleSRStorage,
     UID_GeneralAudioWaveformStorage,
     UID_GeneralECGWaveformStorage,
-    UID_GenericImplantTemplateStorage,
     UID_GrayscalePlanarMPRVolumetricPresentationStateStorage,
     UID_GrayscaleSoftcopyPresentationStateStorage,
     UID_HemodynamicWaveformStorage,
-    UID_ImplantAssemblyTemplateStorage,
     UID_ImplantationPlanSRDocumentStorage,
-    UID_ImplantTemplateGroupStorage,
     UID_IntraocularLensCalculationsStorage,
     UID_IntravascularOpticalCoherenceTomographyImageStorageForPresentation,
     UID_IntravascularOpticalCoherenceTomographyImageStorageForProcessing,
@@ -634,6 +646,7 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_RTTreatmentSummaryRecordStorage,
     UID_SecondaryCaptureImageStorage,
     UID_SegmentationStorage,
+    UID_SimplifiedAdultEchoSRStorage,
     UID_SpatialFiducialsStorage,
     UID_SpatialRegistrationStorage,
     UID_SpectaclePrescriptionReportStorage,
@@ -663,6 +676,8 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_XRayAngiographicImageStorage,
     UID_XRayRadiationDoseSRStorage,
     UID_XRayRadiofluoroscopicImageStorage,
+    // non-patient DICOM objects:
+    // - do not add them here but in dcmNonPatientStorageSOPClassUIDs
     // retired
     UID_RETIRED_HardcopyColorImageStorage,
     UID_RETIRED_HardcopyGrayscaleImageStorage,
@@ -699,7 +714,24 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     NULL
 };
 
-const int numberOfAllDcmStorageSOPClassUIDs = OFstatic_cast(int, sizeof(dcmAllStorageSOPClassUIDs) / sizeof(const char*) - 1);
+const int numberOfDcmAllStorageSOPClassUIDs = OFstatic_cast(int, sizeof(dcmAllStorageSOPClassUIDs) / sizeof(const char*) - 1);
+
+
+/** an array of const strings containing all known Storage SOP Classes
+ *  that do not fit into the conventional PATIENT-STUDY-SERIES-INSTANCE
+ *  information model. See function dcmIsaStorageSOPClassUID().
+ */
+
+const char* dcmNonPatientStorageSOPClassUIDs[] = {
+    UID_ColorPaletteStorage,
+    UID_CTDefinedProcedureProtocolStorage,
+    UID_GenericImplantTemplateStorage,
+    UID_HangingProtocolStorage,
+    UID_ImplantAssemblyTemplateStorage,
+    UID_ImplantTemplateGroupStorage,
+    // end marker (important!)
+    NULL
+};
 
 
 /*  an array of const strings containing all storage SOP classes that
@@ -745,17 +777,17 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = {
     UID_EnhancedXRFImageStorage,
     UID_GeneralAudioWaveformStorage,
     UID_GeneralECGWaveformStorage,
-    UID_GenericImplantTemplateStorage,
     UID_GrayscaleSoftcopyPresentationStateStorage,
     UID_HemodynamicWaveformStorage,
-    UID_ImplantAssemblyTemplateStorage,
     UID_ImplantationPlanSRDocumentStorage,
-    UID_ImplantTemplateGroupStorage,
     UID_IntraocularLensCalculationsStorage,
     UID_IntravascularOpticalCoherenceTomographyImageStorageForPresentation,
     UID_IntravascularOpticalCoherenceTomographyImageStorageForProcessing,
     UID_KeratometryMeasurementsStorage,
     UID_KeyObjectSelectionDocumentStorage,
+    UID_LegacyConvertedEnhancedCTImageStorage,
+    UID_LegacyConvertedEnhancedMRImageStorage,
+    UID_LegacyConvertedEnhancedPETImageStorage,
     UID_LensometryMeasurementsStorage,
     UID_MacularGridThicknessAndVolumeReportStorage,
     UID_MammographyCADSRStorage,
@@ -823,17 +855,23 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = {
 //  UID_CompositingPlanarMPRVolumetricPresentationStateStorage,
 //  UID_ContentAssessmentResultsStorage,
 //  UID_CornealTopographyMapStorage,
+//  UID_CTPerformedProcedureProtocolStorage,
 //  UID_ExtensibleSRStorage,
 //  UID_GrayscalePlanarMPRVolumetricPresentationStateStorage
-//  UID_LegacyConvertedEnhancedCTImageStorage,
-//  UID_LegacyConvertedEnhancedMRImageStorage,
-//  UID_LegacyConvertedEnhancedPETImageStorage,
 //  UID_ParametricMapStorage,
 //  UID_RadiopharmaceuticalRadiationDoseSRStorage,
 //  UID_RTBrachyApplicationSetupDeliveryInstructionStorage,
+//  UID_SimplifiedAdultEchoSRStorage,
 //  UID_TractographyResultsStorage,
 //  UID_WideFieldOphthalmicPhotographyStereographicProjectionImageStorage,
 //  UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage,
+    // non-patient
+//  UID_ColorPaletteStorage,
+//  UID_CTDefinedProcedureProtocolStorage,
+//  UID_GenericImplantTemplateStorage,
+//  UID_HangingProtocolStorage,
+//  UID_ImplantAssemblyTemplateStorage,
+//  UID_ImplantTemplateGroupStorage,
     // retired
     UID_RETIRED_HardcopyColorImageStorage,
     UID_RETIRED_HardcopyGrayscaleImageStorage,
@@ -1078,6 +1116,7 @@ static const DcmModalityTable modalities[] = {
     { UID_CardiacElectrophysiologyWaveformStorage,                 "WVc", 4096 },
     { UID_ChestCADSRStorage,                                       "SRh", 4096 },
     { UID_ColonCADSRStorage,                                       "SRo", 4096 },
+    { UID_ColorPaletteStorage,                                     "CP",  4096 },
     { UID_ColorSoftcopyPresentationStateStorage,                   "PSc", 4096 },
     { UID_CompositingPlanarMPRVolumetricPresentationStateStorage,  "VPc", 4096 },
     { UID_Comprehensive3DSRStorage,                                "SR3", 4096 },
@@ -1085,7 +1124,9 @@ static const DcmModalityTable modalities[] = {
     { UID_ComputedRadiographyImageStorage,                         "CR",  2048 * 2048 * 2 },
     { UID_ContentAssessmentResultsStorage,                         "AS",  4096 },
     { UID_CornealTopographyMapStorage,                             "CM",  512 * 512 },
+    { UID_CTDefinedProcedureProtocolStorage,                       "PPd", 4096 },
     { UID_CTImageStorage,                                          "CT",  512 * 512 * 2 },
+    { UID_CTPerformedProcedureProtocolStorage,                     "PPp", 4096 },
     { UID_DeformableSpatialRegistrationStorage,                    "RGd", 4096 },
     { UID_DigitalIntraOralXRayImageStorageForPresentation,         "DXo", 1024 * 1024 * 2 },
     { UID_DigitalIntraOralXRayImageStorageForProcessing,           "DPo", 1024 * 1024 * 2 },
@@ -1109,6 +1150,7 @@ static const DcmModalityTable modalities[] = {
     { UID_GenericImplantTemplateStorage,                           "IT",  4096 },
     { UID_GrayscalePlanarMPRVolumetricPresentationStateStorage,    "VPg", 4096 },
     { UID_GrayscaleSoftcopyPresentationStateStorage,               "PSg", 4096 },
+    { UID_HangingProtocolStorage,                                  "HP",  4096 },
     { UID_HemodynamicWaveformStorage,                              "WVh", 4096 },
     { UID_ImplantAssemblyTemplateStorage,                          "ITa", 4096 },
     { UID_ImplantationPlanSRDocumentStorage,                       "SRi", 4096 },
@@ -1158,6 +1200,7 @@ static const DcmModalityTable modalities[] = {
     { UID_RTTreatmentSummaryRecordStorage,                         "RTs", 4096 },
     { UID_SecondaryCaptureImageStorage,                            "SC",  512 * 512 * 2 },
     { UID_SegmentationStorage,                                     "SG",  4096 },
+    { UID_SimplifiedAdultEchoSRStorage,                            "SRu", 4096 },
     { UID_SpatialFiducialsStorage,                                 "FID", 4096 },
     { UID_SpatialRegistrationStorage,                              "RGs", 4096 },
     { UID_SpectaclePrescriptionReportStorage,                      "SRs", 4096 },
@@ -1302,15 +1345,35 @@ dcmFindUIDFromName(const char* name)
 /*
 ** dcmIsaStorageSOPClassUID(const char* uid)
 ** Returns true if the uid is one of the Storage SOP Classes.
-** Performs a table lookup in the dcmAllStorageSOPClassUIDs table.
+** Performs a table lookup in the dcmAllStorageSOPClassUIDs,
+** dcmNonPatientStorageSOPClassUIDs and/or dcmImageSOPClassUIDs table.
 */
 OFBool
-dcmIsaStorageSOPClassUID(const char* uid)
+dcmIsaStorageSOPClassUID(const char* uid, const E_StorageSOPClassType type)
 {
     if (uid == NULL) return OFFalse;
-    for (int i = 0; i < numberOfAllDcmStorageSOPClassUIDs; i++) {
-      if (dcmAllStorageSOPClassUIDs[i] != NULL && strcmp(uid, dcmAllStorageSOPClassUIDs[i]) == 0) {
-        return OFTrue;
+    /* check for patient object */
+    if (type & ESSC_Patient) {
+      for (int i = 0; i < numberOfDcmAllStorageSOPClassUIDs; i++) {
+        if (dcmAllStorageSOPClassUIDs[i] != NULL && strcmp(uid, dcmAllStorageSOPClassUIDs[i]) == 0) {
+          return OFTrue;
+        }
+      }
+    }
+    /* check for non-patient object */
+    if (type & ESSC_NonPatient) {
+      for (int i = 0; dcmNonPatientStorageSOPClassUIDs[i] != NULL; i++) {
+        if (strcmp(uid, dcmNonPatientStorageSOPClassUIDs[i]) == 0) {
+          return OFTrue;
+        }
+      }
+    }
+    /* check for image object */
+    if (type & ESSC_Image) {
+      for (int i = 0; i < numberOfDcmImageSOPClassUIDs; i++) {
+        if (dcmImageSOPClassUIDs[i] != NULL && strcmp(uid, dcmImageSOPClassUIDs[i]) == 0) {
+          return OFTrue;
+        }
       }
     }
     return OFFalse;
@@ -1320,18 +1383,11 @@ dcmIsaStorageSOPClassUID(const char* uid)
 /*
 ** dcmIsImageStorageSOPClassUID(const char* uid)
 ** Returns true if the uid is one of the Image Storage SOP Classes.
-** Performs a table lookup in the dcmImageSOPClassUIDs table.
 */
 OFBool
 dcmIsImageStorageSOPClassUID(const char* uid)
 {
-    if (uid == NULL) return OFFalse;
-    for (int i = 0; i < numberOfDcmImageSOPClassUIDs; i++) {
-      if (dcmImageSOPClassUIDs[i] != NULL && strcmp(uid, dcmImageSOPClassUIDs[i]) == 0) {
-        return OFTrue;
-      }
-    }
-    return OFFalse;
+    return dcmIsaStorageSOPClassUID(uid, ESSC_Image);
 }
 
 // ********************************
diff --git a/dcmdata/libsrc/dcvr.cc b/dcmdata/libsrc/dcvr.cc
index 5d33fb3..9765c9b 100644
--- a/dcmdata/libsrc/dcvr.cc
+++ b/dcmdata/libsrc/dcvr.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -71,92 +71,97 @@ void dcmDisableGenerationOfNewVRs()
 ** VR property table
 */
 
-#define DCMVR_PROP_NONE         0x00
-#define DCMVR_PROP_NONSTANDARD  0x01
-#define DCMVR_PROP_INTERNAL     0x02
+#define DCMVR_PROP_NONE                   0x00
+#define DCMVR_PROP_NONSTANDARD            0x01
+#define DCMVR_PROP_INTERNAL               0x02
 #define DCMVR_PROP_EXTENDEDLENGTHENCODING 0x04
-#define DCMVR_PROP_ISASTRING 0x08
+#define DCMVR_PROP_ISASTRING              0x08
+#define DCMVR_PROP_ISAFFECTEDBYCHARSET    0x10
 
 struct DcmVREntry {
-    DcmEVR vr;                  // Enumeration Value of Value representation
-    const char* vrName;         // Name of Value representation
-    size_t fValWidth;           // Length of minimal unit, used for swapping
-    int propertyFlags;          // Normal, internal, non-standard vr
-    Uint32 minValueLength;      // Minimum length of a single value (bytes)
-    Uint32 maxValueLength;      // Maximum length of a single value (bytes)
+    DcmEVR vr;                      // Enumeration Value of Value representation
+    const char* vrName;             // Name of Value representation
+    const OFString* delimiterChars; // Delimiter characters, switch to default charset
+    size_t fValWidth;               // Length of minimal unit, used for swapping
+    int propertyFlags;              // Normal, internal, non-standard vr
+    Uint32 minValueLength;          // Minimum length of a single value (bytes)
+    Uint32 maxValueLength;          // Maximum length of a single value (bytes)
 };
 
+static const OFString noDelimiters;             // none
+static const OFString bsDelimiter("\\");        // backslash
+static const OFString pnDelimiters("\\^=");     // person name
 
 static const DcmVREntry DcmVRDict[] = {
 
-    { EVR_AE, "AE", sizeof(char), DCMVR_PROP_ISASTRING, 0, 16 },
-    { EVR_AS, "AS", sizeof(char), DCMVR_PROP_ISASTRING, 4, 4 },
-    { EVR_AT, "AT", sizeof(Uint16), DCMVR_PROP_NONE, 4, 4 },
-    { EVR_CS, "CS", sizeof(char), DCMVR_PROP_ISASTRING, 0, 16 },
-    { EVR_DA, "DA", sizeof(char), DCMVR_PROP_ISASTRING, 8, 10 },
-    { EVR_DS, "DS", sizeof(char), DCMVR_PROP_ISASTRING, 0, 16 },
-    { EVR_DT, "DT", sizeof(char), DCMVR_PROP_ISASTRING, 0, 26},
-    { EVR_FL, "FL", sizeof(Float32), DCMVR_PROP_NONE, 4, 4 },
-    { EVR_FD, "FD", sizeof(Float64), DCMVR_PROP_NONE, 8, 8 },
-    { EVR_IS, "IS", sizeof(char), DCMVR_PROP_ISASTRING, 0, 12 },
-    { EVR_LO, "LO", sizeof(char), DCMVR_PROP_ISASTRING, 0, 64 },
-    { EVR_LT, "LT", sizeof(char), DCMVR_PROP_ISASTRING, 0, 10240 },
-    { EVR_OB, "OB", sizeof(Uint8), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
-    { EVR_OD, "OD", sizeof(Float64), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
-    { EVR_OF, "OF", sizeof(Float32), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
-    { EVR_OL, "OL", sizeof(Uint32), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
-    { EVR_OW, "OW", sizeof(Uint16), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
-    { EVR_PN, "PN", sizeof(char), DCMVR_PROP_ISASTRING, 0, 64 },
-    { EVR_SH, "SH", sizeof(char), DCMVR_PROP_ISASTRING, 0, 16 },
-    { EVR_SL, "SL", sizeof(Sint32), DCMVR_PROP_NONE, 4, 4 },
-    { EVR_SQ, "SQ", 0, DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
-    { EVR_SS, "SS", sizeof(Sint16), DCMVR_PROP_NONE, 2, 2 },
-    { EVR_ST, "ST", sizeof(char), DCMVR_PROP_ISASTRING, 0, 1024 },
-    { EVR_TM, "TM", sizeof(char), DCMVR_PROP_ISASTRING, 0, 16 },
-    { EVR_UC, "UC", sizeof(char), DCMVR_PROP_ISASTRING|DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
-    { EVR_UI, "UI", sizeof(char), DCMVR_PROP_ISASTRING, 0, 64 },
-    { EVR_UL, "UL", sizeof(Uint32), DCMVR_PROP_NONE, 4, 4 },
-    { EVR_UR, "UR", sizeof(char), DCMVR_PROP_ISASTRING|DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
-    { EVR_US, "US", sizeof(Uint16), DCMVR_PROP_NONE, 2, 2 },
-    { EVR_UT, "UT", sizeof(char), DCMVR_PROP_ISASTRING|DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
-    { EVR_ox, "ox", sizeof(Uint8), DCMVR_PROP_NONSTANDARD | DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
-    { EVR_xs, "xs", sizeof(Uint16), DCMVR_PROP_NONSTANDARD, 2, 2 },
-    { EVR_lt, "lt", sizeof(Uint16), DCMVR_PROP_NONSTANDARD | DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
-    { EVR_na, "na", 0, DCMVR_PROP_NONSTANDARD, 0, 0 },
-    { EVR_up, "up", sizeof(Uint32), DCMVR_PROP_NONSTANDARD, 4, 4 },
+    { EVR_AE, "AE", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING, 0, 16 },
+    { EVR_AS, "AS", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING, 4, 4 },
+    { EVR_AT, "AT", &noDelimiters, sizeof(Uint16), DCMVR_PROP_NONE, 4, 4 },
+    { EVR_CS, "CS", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING, 0, 16 },
+    { EVR_DA, "DA", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING, 8, 10 },
+    { EVR_DS, "DS", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING, 0, 16 },
+    { EVR_DT, "DT", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING, 0, 26},
+    { EVR_FL, "FL", &noDelimiters, sizeof(Float32), DCMVR_PROP_NONE, 4, 4 },
+    { EVR_FD, "FD", &noDelimiters, sizeof(Float64), DCMVR_PROP_NONE, 8, 8 },
+    { EVR_IS, "IS", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING, 0, 12 },
+    { EVR_LO, "LO", &bsDelimiter, sizeof(char), DCMVR_PROP_ISASTRING | DCMVR_PROP_ISAFFECTEDBYCHARSET, 0, 64 },
+    { EVR_LT, "LT", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING | DCMVR_PROP_ISAFFECTEDBYCHARSET, 0, 10240 },
+    { EVR_OB, "OB", &noDelimiters, sizeof(Uint8), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
+    { EVR_OD, "OD", &noDelimiters, sizeof(Float64), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
+    { EVR_OF, "OF", &noDelimiters, sizeof(Float32), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
+    { EVR_OL, "OL", &noDelimiters, sizeof(Uint32), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
+    { EVR_OW, "OW", &noDelimiters, sizeof(Uint16), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
+    { EVR_PN, "PN", &pnDelimiters, sizeof(char), DCMVR_PROP_ISASTRING | DCMVR_PROP_ISAFFECTEDBYCHARSET, 0, 64 },
+    { EVR_SH, "SH", &bsDelimiter, sizeof(char), DCMVR_PROP_ISASTRING | DCMVR_PROP_ISAFFECTEDBYCHARSET, 0, 16 },
+    { EVR_SL, "SL", &noDelimiters, sizeof(Sint32), DCMVR_PROP_NONE, 4, 4 },
+    { EVR_SQ, "SQ", &noDelimiters, 0, DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
+    { EVR_SS, "SS", &noDelimiters, sizeof(Sint16), DCMVR_PROP_NONE, 2, 2 },
+    { EVR_ST, "ST", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING | DCMVR_PROP_ISAFFECTEDBYCHARSET, 0, 1024 },
+    { EVR_TM, "TM", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING, 0, 16 },
+    { EVR_UC, "UC", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING | DCMVR_PROP_EXTENDEDLENGTHENCODING | DCMVR_PROP_ISAFFECTEDBYCHARSET, 0, DCM_UndefinedLength },
+    { EVR_UI, "UI", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING, 0, 64 },
+    { EVR_UL, "UL", &noDelimiters, sizeof(Uint32), DCMVR_PROP_NONE, 4, 4 },
+    { EVR_UR, "UR", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING|DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
+    { EVR_US, "US", &noDelimiters, sizeof(Uint16), DCMVR_PROP_NONE, 2, 2 },
+    { EVR_UT, "UT", &noDelimiters, sizeof(char), DCMVR_PROP_ISASTRING | DCMVR_PROP_EXTENDEDLENGTHENCODING | DCMVR_PROP_ISAFFECTEDBYCHARSET, 0, DCM_UndefinedLength },
+    { EVR_ox, "ox", &noDelimiters, sizeof(Uint8), DCMVR_PROP_NONSTANDARD | DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
+    { EVR_xs, "xs", &noDelimiters, sizeof(Uint16), DCMVR_PROP_NONSTANDARD, 2, 2 },
+    { EVR_lt, "lt", &noDelimiters, sizeof(Uint16), DCMVR_PROP_NONSTANDARD | DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
+    { EVR_na, "na", &noDelimiters, 0, DCMVR_PROP_NONSTANDARD, 0, 0 },
+    { EVR_up, "up", &noDelimiters, sizeof(Uint32), DCMVR_PROP_NONSTANDARD, 4, 4 },
 
     /* unique prefixes have been "invented" for the following internal VRs */
-    { EVR_item, "it_EVR_item", 0,
+    { EVR_item, "it_EVR_item", &noDelimiters, 0,
       DCMVR_PROP_NONSTANDARD | DCMVR_PROP_INTERNAL, 0, 0 },
-    { EVR_metainfo, "mi_EVR_metainfo", 0,
+    { EVR_metainfo, "mi_EVR_metainfo", &noDelimiters, 0,
       DCMVR_PROP_NONSTANDARD | DCMVR_PROP_INTERNAL, 0, 0 },
-    { EVR_dataset, "ds_EVR_dataset", 0,
+    { EVR_dataset, "ds_EVR_dataset", &noDelimiters, 0,
       DCMVR_PROP_NONSTANDARD | DCMVR_PROP_INTERNAL, 0, 0 },
-    { EVR_fileFormat, "ff_EVR_fileFormat", 0,
+    { EVR_fileFormat, "ff_EVR_fileFormat", &noDelimiters, 0,
       DCMVR_PROP_NONSTANDARD | DCMVR_PROP_INTERNAL, 0, 0 },
-    { EVR_dicomDir, "dd_EVR_dicomDir", 0,
+    { EVR_dicomDir, "dd_EVR_dicomDir", &noDelimiters, 0,
       DCMVR_PROP_NONSTANDARD | DCMVR_PROP_INTERNAL, 0, 0 },
-    { EVR_dirRecord, "dr_EVR_dirRecord", 0,
+    { EVR_dirRecord, "dr_EVR_dirRecord", &noDelimiters, 0,
       DCMVR_PROP_NONSTANDARD | DCMVR_PROP_INTERNAL, 0, 0 },
 
-    { EVR_pixelSQ, "ps_EVR_pixelSQ", sizeof(Uint8),
+    { EVR_pixelSQ, "ps_EVR_pixelSQ", &noDelimiters, sizeof(Uint8),
       DCMVR_PROP_NONSTANDARD | DCMVR_PROP_INTERNAL, 0, DCM_UndefinedLength },
     /* Moved from internal use to non standard only: necessary to distinguish from "normal" OB */
-    { EVR_pixelItem, "pi", sizeof(Uint8),
+    { EVR_pixelItem, "pi", &noDelimiters, sizeof(Uint8),
       DCMVR_PROP_NONSTANDARD, 0, DCM_UndefinedLength },
 
-    { EVR_UNKNOWN, "??", sizeof(Uint8), /* EVR_UNKNOWN (i.e. "future" VRs) should be mapped to UN or OB */
+    { EVR_UNKNOWN, "??", &noDelimiters, sizeof(Uint8), /* EVR_UNKNOWN (i.e. "future" VRs) should be mapped to UN or OB */
       DCMVR_PROP_NONSTANDARD | DCMVR_PROP_INTERNAL | DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
 
     /* Unknown Value Representation */
-    { EVR_UN, "UN", sizeof(Uint8), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
+    { EVR_UN, "UN", &noDelimiters, sizeof(Uint8), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
 
     /* Pixel Data - only used in ident() */
-    { EVR_PixelData, "PixelData", 0, DCMVR_PROP_INTERNAL, 0, DCM_UndefinedLength },
+    { EVR_PixelData, "PixelData", &noDelimiters, 0, DCMVR_PROP_INTERNAL, 0, DCM_UndefinedLength },
     /* Overlay Data - only used in ident() */
-    { EVR_OverlayData, "OverlayData", 0, DCMVR_PROP_INTERNAL, 0, DCM_UndefinedLength },
+    { EVR_OverlayData, "OverlayData", &noDelimiters, 0, DCMVR_PROP_INTERNAL, 0, DCM_UndefinedLength },
 
-    { EVR_UNKNOWN2B, "??", sizeof(Uint8), /* illegal VRs, we assume no extended length coding */
+    { EVR_UNKNOWN2B, "??", &noDelimiters, sizeof(Uint8), /* illegal VRs, we assume no extended length coding */
       DCMVR_PROP_NONSTANDARD | DCMVR_PROP_INTERNAL, 0, DCM_UndefinedLength },
 
 };
@@ -449,3 +454,15 @@ DcmVR::isEquivalent(const DcmVR& avr) const
     }
     return result;
 }
+
+OFBool
+DcmVR::isAffectedBySpecificCharacterSet() const
+{
+    return (DcmVRDict[vr].propertyFlags & DCMVR_PROP_ISAFFECTEDBYCHARSET) ? OFTrue : OFFalse;
+}
+
+const OFString&
+DcmVR::getDelimiterChars() const
+{
+    return *DcmVRDict[vr].delimiterChars;
+}
diff --git a/dcmdata/libsrc/dcvrat.cc b/dcmdata/libsrc/dcvrat.cc
index 32c4422..afca44a 100644
--- a/dcmdata/libsrc/dcvrat.cc
+++ b/dcmdata/libsrc/dcvrat.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -23,15 +23,20 @@
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 #include "dcmtk/ofstd/ofstream.h"
 #include "dcmtk/dcmdata/dcvrat.h"
+#include "dcmtk/dcmdata/dcjson.h"
 
 #define INCLUDE_CSTDIO
 #define INCLUDE_CSTRING
 #include "dcmtk/ofstd/ofstdinc.h"
 
-
 // ********************************
 
 
+DcmAttributeTag::DcmAttributeTag(const DcmTag &tag)
+  : DcmElement(tag, 0)
+{
+}
+
 DcmAttributeTag::DcmAttributeTag(const DcmTag &tag,
                                  const Uint32 len)
   : DcmElement(tag, len)
@@ -248,6 +253,46 @@ OFCondition DcmAttributeTag::writeXML(STD_NAMESPACE ostream &out,
 // ********************************
 
 
+OFCondition DcmAttributeTag::writeJson(STD_NAMESPACE ostream &out,
+                                       DcmJsonFormat &format)
+{
+    // always write JSON Opener
+    DcmElement::writeJsonOpener(out, format);
+    Uint16 *uintVals;
+    getUint16Array(uintVals);
+    const unsigned long vm = getVM();
+    // check for empty/invalid value
+    if ((uintVals != NULL) && (vm > 0))
+    {
+        format.printValuePrefix(out);
+        out << STD_NAMESPACE uppercase << STD_NAMESPACE setfill('0');
+        // print tag values "ggggeeee" in hex mode (upper case!)
+        out << "\"";
+        out << STD_NAMESPACE hex << STD_NAMESPACE setw(4) << (*(uintVals++));
+        out << STD_NAMESPACE setw(4) << (*(uintVals++)) << STD_NAMESPACE dec;
+        out << "\"";
+        for (unsigned long valNo = 1; valNo < vm; valNo++)
+        {
+            format.printNextArrayElementPrefix(out);
+            out << "\"";
+            out << STD_NAMESPACE hex << STD_NAMESPACE setw(4) << (*(uintVals++));
+            out << STD_NAMESPACE setw(4) << (*(uintVals++)) << STD_NAMESPACE dec;
+            out << "\"";
+        }
+        // reset i/o manipulators
+        out << STD_NAMESPACE nouppercase << STD_NAMESPACE setfill(' ');
+        format.printValueSuffix(out);
+    }
+    // write normal JSON closer
+    DcmElement::writeJsonCloser(out, format);
+    // always report success
+    return EC_Normal;
+}
+
+
+// ********************************
+
+
 OFCondition DcmAttributeTag::getTagVal(DcmTagKey &tagVal,
                                        const unsigned long pos)
 {
diff --git a/dcmdata/libsrc/dcvrda.cc b/dcmdata/libsrc/dcvrda.cc
index 4da50b5..fdead9b 100644
--- a/dcmdata/libsrc/dcvrda.cc
+++ b/dcmdata/libsrc/dcvrda.cc
@@ -193,37 +193,74 @@ OFCondition DcmDate::getDicomDateFromOFDate(const OFDate &dateValue,
     return l_error;
 }
 
+OFCondition DcmDate::getOFDateFromString(const OFString &dicomDate,
+                                         OFDate &dateValue)
+{
+    return getOFDateFromString(dicomDate.c_str(), dicomDate.size(), dateValue, OFTrue);
+}
 
 OFCondition DcmDate::getOFDateFromString(const OFString &dicomDate,
                                          OFDate &dateValue,
                                          const OFBool supportOldFormat)
 {
-    OFCondition l_error = EC_IllegalParameter;
-    /* clear result variable */
+    return getOFDateFromString(dicomDate.c_str(), dicomDate.size(), dateValue, supportOldFormat);
+}
+
+OFCondition DcmDate::getOFDateFromString(const char* dicomDate,
+                                         const size_t dicomDateSize,
+                                         OFDate &dateValue)
+{
+    return getOFDateFromString(dicomDate, dicomDateSize, dateValue, OFTrue);
+}
+
+OFCondition DcmDate::getOFDateFromString(const char* dicomDate,
+                                         const size_t dicomDateSize,
+                                         OFDate &dateValue,
+                                         const OFBool supportOldFormat)
+{
+    // clear result variable
     dateValue.clear();
-    /* fixed length (8 or 10 bytes) required by DICOM part 5 */
-    if ((dicomDate.length() == 8) && (dicomDate.find('.') == OFString_npos))
+    // fixed length 8 bytes required by DICOM part 5: YYYYMMDD
+    if (dicomDateSize == 8 && OFStandard::checkDigits<8>(dicomDate))
     {
-        unsigned int year, month, day;
-        /* extract components from date string */
-        if (sscanf(dicomDate.c_str(), "%04u%02u%02u", &year, &month, &day) == 3)
+        // extract components from date string
+        if
+        (
+            dateValue.setDate
+            (
+                OFStandard::extractDigits<unsigned int,4>(dicomDate),
+                OFStandard::extractDigits<unsigned int,2>(dicomDate + 4),
+                OFStandard::extractDigits<unsigned int,2>(dicomDate + 6)
+            )
+        )
         {
-            if (dateValue.setDate(year, month, day))
-                l_error = EC_Normal;
+            return EC_Normal;
         }
     }
-    /* old prior V3.0 version of VR=DA: YYYY.MM.DD */
-    else if (supportOldFormat && (dicomDate.length() == 10) && (dicomDate[4] == '.') && (dicomDate[7] == '.'))
+    // old prior V3.0 version of VR=DA with fixed length 10 bytes: YYYY.MM.DD
+    else if
+    (
+        supportOldFormat && dicomDateSize == 10 && dicomDate[4] == '.' && dicomDate[7] == '.' &&
+        OFStandard::checkDigits<4>(dicomDate) &&
+        OFStandard::checkDigits<2>(dicomDate + 5) &&
+        OFStandard::checkDigits<2>(dicomDate + 8)
+    )
     {
-        unsigned int year, month, day;
-        /* extract components from date string */
-        if (sscanf(dicomDate.c_str(), "%04u.%02u.%02u", &year, &month, &day) == 3)
+        // extract components from date string
+        if
+        (
+            dateValue.setDate
+            (
+                OFStandard::extractDigits<unsigned int,4>(dicomDate),
+                OFStandard::extractDigits<unsigned int,2>(dicomDate + 5),
+                OFStandard::extractDigits<unsigned int,2>(dicomDate + 8)
+            )
+        )
         {
-            if (dateValue.setDate(year, month, day))
-                l_error = EC_Normal;
+            return EC_Normal;
         }
     }
-    return l_error;
+    return EC_IllegalParameter;
 }
 
 
diff --git a/dcmdata/libsrc/dcvrds.cc b/dcmdata/libsrc/dcvrds.cc
index 937f946..e8895e7 100644
--- a/dcmdata/libsrc/dcvrds.cc
+++ b/dcmdata/libsrc/dcvrds.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -23,6 +23,7 @@
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
 #include "dcmtk/dcmdata/dcvrds.h"
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/ofstd/ofstring.h"
 #include "dcmtk/ofstd/ofstd.h"
 
@@ -220,6 +221,58 @@ OFCondition DcmDecimalString::writeXML(STD_NAMESPACE ostream &out,
 // ********************************
 
 
+OFCondition DcmDecimalString::writeJson(STD_NAMESPACE ostream &out,
+                                        DcmJsonFormat &format)
+{
+    /* always write JSON Opener */
+    writeJsonOpener(out, format);
+    /* write element value (if loaded) */
+    if (valueLoaded())
+    {
+        OFString bulkDataValue;
+        if (format.asBulkDataURI(getTag(), bulkDataValue))
+        {
+            format.printBulkDataURIPrefix(out);
+            DcmJsonFormat::printString(out, bulkDataValue);
+        }
+        else
+        {
+            /* get string data (without normalization) */
+            char *value_ = OFnullptr;
+            Uint32 length = 0;
+            getString(value_, length);
+            if ((value_ != OFnullptr) && (length > 0))
+            {
+                /* explicitly convert to OFString because of possible NULL bytes */
+                OFString value(value_, length);
+                OFCondition status = getOFString(value, 0L);
+                if (status.bad())
+                    return status;
+                format.printValuePrefix(out);
+                DcmJsonFormat::printNumberDecimal(out, value);
+                const unsigned long vm = getVM();
+                for (unsigned long valNo = 1; valNo < vm; ++valNo)
+                {
+                    status = getOFString(value, valNo);
+                    if (status.bad())
+                        return status;
+                    format.printNextArrayElementPrefix(out);
+                    DcmJsonFormat::printNumberDecimal(out, value);
+                }
+                format.printValueSuffix(out);
+            }
+        }
+    }
+    /* write JSON Closer  */
+    writeJsonCloser(out, format);
+    /* always report success */
+    return EC_Normal;
+}
+
+
+// ********************************
+
+
 OFCondition DcmDecimalString::checkStringValue(const OFString &value,
                                                const OFString &vm)
 {
diff --git a/dcmdata/libsrc/dcvrdt.cc b/dcmdata/libsrc/dcvrdt.cc
index 160c1c1..a917556 100644
--- a/dcmdata/libsrc/dcvrdt.cc
+++ b/dcmdata/libsrc/dcvrdt.cc
@@ -225,45 +225,66 @@ OFCondition DcmDateTime::getDicomDateTimeFromOFDateTime(const OFDateTime &dateTi
     return l_error;
 }
 
-
 OFCondition DcmDateTime::getOFDateTimeFromString(const OFString &dicomDateTime,
                                                  OFDateTime &dateTimeValue)
 {
-    OFCondition l_error = EC_IllegalParameter;
-    /* clear result variable */
+    return getOFDateTimeFromString(dicomDateTime.c_str(), dicomDateTime.size(), dateTimeValue);
+}
+
+OFCondition DcmDateTime::getOFDateTimeFromString(const char *dicomDateTime,
+                                                 size_t dicomDateTimeSize,
+                                                 OFDateTime &dateTimeValue)
+{
+    // clear result variable
     dateTimeValue.clear();
-    /* minimal check for valid format: YYYYMMDD */
-    if (dicomDateTime.length() >= 8)
+    /* minimal check for valid format: YYYY */
+    if (dicomDateTimeSize < 4 || !OFStandard::checkDigits<4>(dicomDateTime))
+        return EC_IllegalParameter;
+    unsigned int month = 1;
+    unsigned int day = 1;
+    double timeZone;
+    // check for/extract time zone
+    if (dicomDateTimeSize >= 9 && DcmTime::getTimeZoneFromString(dicomDateTime + dicomDateTimeSize - 5, 5, timeZone).good())
+        dicomDateTimeSize -= 5;
+    else
+        timeZone = OFTime::getLocalTimeZone();
+    switch(dicomDateTimeSize)
     {
-        OFString string;
-        unsigned int year, month, day;
-        unsigned int hour = 0;
-        unsigned int minute = 0;
-        double second = 0;
-        double timeZone = 0;
-        /* check whether optional time zone is present and extract the value if so */
-        if (DcmTime::getTimeZoneFromString(dicomDateTime.substr(dicomDateTime.length() - 5), timeZone).good())
-            string = dicomDateTime.substr(0, dicomDateTime.length() - 5);
-        else
+    default:
+        // check whether a time value is contained or it is simply an error
+        if (dicomDateTimeSize >= 10)
         {
-            string = dicomDateTime;
-            /* no time zone specified, therefore, use the local one */
-            timeZone = OFTime::getLocalTimeZone();
+            OFCondition status = DcmTime::getOFTimeFromString(dicomDateTime + 8,
+                                                              dicomDateTimeSize - 8,
+                                                              dateTimeValue.Time,
+                                                              OFFalse, // no support for HH:MM:SS in VR=DT
+                                                              timeZone);
+            if (status.bad())
+                return status;
         }
-        /* extract remaining components from date/time string: YYYYMMDDHHMM[SS[.FFFFFF]] */
-        /* scan seconds using OFStandard::atof to avoid locale issues */
-        if (sscanf(string.c_str(), "%04u%02u%02u%02u%02u", &year, &month, &day, &hour, &minute) >= 3)
+        else break;
+
+    case 8:
+        if (OFStandard::checkDigits<2>(dicomDateTime + 6))
+            day = OFStandard::extractDigits<unsigned int,2>(dicomDateTime + 6);
+        else
+            break;
+    case 6:
+        if (OFStandard::checkDigits<2>(dicomDateTime + 4))
+            month = OFStandard::extractDigits<unsigned int,2>(dicomDateTime + 4);
+        else
+            break;
+    case 4:
+        if (dateTimeValue.Date.setDate(OFStandard::extractDigits<unsigned int,4>(dicomDateTime), month, day))
         {
-            if (string.length() > 12)
-            {
-                string.erase(0, 12);
-                second = OFStandard::atof(string.c_str());
-            }
-            if (dateTimeValue.setDateTime(year, month, day, hour, minute, second, timeZone))
-                l_error = EC_Normal;
+            // set timezone if it hasn't been set
+            if (dicomDateTimeSize <= 8)
+                dateTimeValue.Time.setTimeZone(timeZone);
+            return EC_Normal;
         }
+        break;
     }
-    return l_error;
+    return EC_IllegalParameter;
 }
 
 
diff --git a/dcmdata/libsrc/dcvrfd.cc b/dcmdata/libsrc/dcvrfd.cc
index a408dfa..dc6e9f3 100644
--- a/dcmdata/libsrc/dcvrfd.cc
+++ b/dcmdata/libsrc/dcvrfd.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,6 +33,11 @@
 
 // ********************************
 
+DcmFloatingPointDouble::DcmFloatingPointDouble(const DcmTag &tag)
+  : DcmElement(tag, 0)
+{
+}
+
 
 DcmFloatingPointDouble::DcmFloatingPointDouble(const DcmTag &tag,
                                                const Uint32 len)
diff --git a/dcmdata/libsrc/dcvrfl.cc b/dcmdata/libsrc/dcvrfl.cc
index 070719f..9234826 100644
--- a/dcmdata/libsrc/dcvrfl.cc
+++ b/dcmdata/libsrc/dcvrfl.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,6 +33,11 @@
 
 // ********************************
 
+DcmFloatingPointSingle::DcmFloatingPointSingle(const DcmTag &tag)
+  : DcmElement(tag, 0)
+{
+}
+
 
 DcmFloatingPointSingle::DcmFloatingPointSingle(const DcmTag &tag,
                                                const Uint32 len)
diff --git a/dcmdata/libsrc/dcvris.cc b/dcmdata/libsrc/dcvris.cc
index 941775b..8d72d21 100644
--- a/dcmdata/libsrc/dcvris.cc
+++ b/dcmdata/libsrc/dcvris.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2010, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -22,6 +22,7 @@
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
 #include "dcmtk/dcmdata/dcvris.h"
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/ofstd/ofstring.h"
 
 #define INCLUDE_CSTDIO
@@ -140,3 +141,55 @@ OFCondition DcmIntegerString::checkStringValue(const OFString &value,
 {
     return DcmByteString::checkStringValue(value, vm, "is", 8, MAX_IS_LENGTH);
 }
+
+
+// ********************************
+
+
+OFCondition DcmIntegerString::writeJson(STD_NAMESPACE ostream &out,
+                                        DcmJsonFormat &format)
+{
+    /* always write JSON Opener */
+    writeJsonOpener(out, format);
+    /* write element value (if loaded) */
+    if (valueLoaded())
+    {
+        OFString bulkDataValue;
+        if (format.asBulkDataURI(getTag(), bulkDataValue))
+        {
+            format.printBulkDataURIPrefix(out);
+            DcmJsonFormat::printString(out, bulkDataValue);
+        }
+        else
+        {
+            /* get string data (without normalization) */
+            char *value_ = NULL;
+            Uint32 length = 0;
+            getString(value_, length);
+            if ((value_ != NULL) && (length > 0))
+            {
+                /* explicitly convert to OFString because of possible NULL bytes */
+                OFString value(value_, length);
+                OFCondition status = getOFString(value, 0L);
+                if (status.bad())
+                    return status;
+                format.printValuePrefix(out);
+                DcmJsonFormat::printNumberInteger(out, value);
+                const unsigned long vm = getVM();
+                for (unsigned long valNo = 1; valNo < vm; ++valNo)
+                {
+                    status = getOFString(value, valNo);
+                    if (status.bad())
+                        return status;
+                    format.printNextArrayElementPrefix(out);
+                    DcmJsonFormat::printNumberInteger(out, value);
+                }
+                format.printValueSuffix(out);
+            }
+        }
+    }
+    /* write JSON Closer  */
+    writeJsonCloser(out, format);
+    /* always report success */
+    return EC_Normal;
+}
diff --git a/dcmdata/libsrc/dcvrlo.cc b/dcmdata/libsrc/dcvrlo.cc
index 5d20017..c34a623 100644
--- a/dcmdata/libsrc/dcvrlo.cc
+++ b/dcmdata/libsrc/dcvrlo.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2013, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -22,6 +22,7 @@
 
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/dcmdata/dcvrlo.h"
 
 
@@ -34,7 +35,6 @@ DcmLongString::DcmLongString(const DcmTag &tag,
 {
     setMaxLength(64);
     setNonSignificantChars(" \\");
-    setDelimiterChars("\\");
 }
 
 
@@ -116,3 +116,47 @@ OFCondition DcmLongString::checkStringValue(const OFString &value,
 {
     return DcmByteString::checkStringValue(value, vm, "lo", 12, 0 /* maxLen: no check */, charset);
 }
+
+
+// ********************************
+
+
+OFCondition DcmLongString::writeJson(STD_NAMESPACE ostream &out,
+                                     DcmJsonFormat &format)
+{
+    /* always write JSON Opener */
+    DcmElement::writeJsonOpener(out, format);
+    /* write element value (if non-empty) */
+    if (!isEmpty())
+    {
+        OFString value;
+        OFCondition status = getOFString(value, 0L);
+        if (status.bad())
+            return status;
+        format.printValuePrefix(out);
+        DcmJsonFormat::printValueString(out, value);
+        const unsigned long vm = getVM();
+        for (unsigned long valNo = 1; valNo < vm; ++valNo)
+        {
+            status = getOFString(value, valNo);
+            if (status.bad())
+                return status;
+            format.printNextArrayElementPrefix(out);
+            DcmJsonFormat::printValueString(out, value);
+        }
+        format.printValueSuffix(out);
+    }
+    /* write JSON Closer  */
+    DcmElement::writeJsonCloser(out, format);
+    /* always report success */
+    return EC_Normal;
+}
+
+
+// ********************************
+
+
+const OFString& DcmLongString::getDelimiterChars() const
+{
+    return DcmVR(EVR_LO).getDelimiterChars();
+}
diff --git a/dcmdata/libsrc/dcvrobow.cc b/dcmdata/libsrc/dcvrobow.cc
index 3818d34..00e33fb 100644
--- a/dcmdata/libsrc/dcvrobow.cc
+++ b/dcmdata/libsrc/dcvrobow.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -26,6 +26,7 @@
 #include "dcmtk/ofstd/ofstream.h"
 #include "dcmtk/ofstd/ofuuid.h"
 
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/dcmdata/dcvrobow.h"
 #include "dcmtk/dcmdata/dcdeftag.h"
 #include "dcmtk/dcmdata/dcswap.h"
@@ -40,6 +41,13 @@
 // ********************************
 
 
+DcmOtherByteOtherWord::DcmOtherByteOtherWord(const DcmTag &tag)
+: DcmElement(tag, 0)
+, compactAfterTransfer(OFFalse)
+{
+}
+
+
 DcmOtherByteOtherWord::DcmOtherByteOtherWord(const DcmTag &tag,
                                              const Uint32 len)
 : DcmElement(tag, len)
@@ -477,7 +485,7 @@ OFCondition DcmOtherByteOtherWord::getUint8(Uint8 &byteVal,
     }
     /* clear value in case of error */
     if (errorFlag.bad())
-	    byteVal = 0;
+        byteVal = 0;
     return errorFlag;
 }
 
@@ -513,7 +521,7 @@ OFCondition DcmOtherByteOtherWord::getUint16(Uint16 &wordVal,
     }
     /* clear value in case of error */
     if (errorFlag.bad())
-	    wordVal = 0;
+        wordVal = 0;
     return errorFlag;
 }
 
@@ -813,3 +821,38 @@ OFCondition DcmOtherByteOtherWord::writeXML(STD_NAMESPACE ostream &out,
     /* always report success */
     return EC_Normal;
 }
+
+
+// ********************************
+
+
+OFCondition DcmOtherByteOtherWord::writeJson(STD_NAMESPACE ostream &out,
+                                             DcmJsonFormat &format)
+{
+    /* write JSON Opener */
+    writeJsonOpener(out, format);
+    /* for an empty value field, we do not need to do anything */
+    if (getLengthField() > 0)
+    {
+        OFString value;
+        if (format.asBulkDataURI(getTag(), value))
+        {
+            /* return defined BulkDataURI */
+            format.printBulkDataURIPrefix(out);
+            DcmJsonFormat::printString(out, value);
+        }
+        else
+        {
+            /* encode binary data as Base64 */
+            format.printInlineBinaryPrefix(out);
+            out << "\"";
+            Uint8 *byteValues = OFstatic_cast(Uint8 *, getValue());
+            OFStandard::encodeBase64(out, byteValues, OFstatic_cast(size_t, getLengthField()));
+            out << "\"";
+        }
+    }
+    /* write JSON Closer */
+    writeJsonCloser(out, format);
+    /* always report success */
+    return EC_Normal;
+}
diff --git a/dcmdata/libsrc/dcvrod.cc b/dcmdata/libsrc/dcvrod.cc
index 9ecd24e..8a40914 100644
--- a/dcmdata/libsrc/dcvrod.cc
+++ b/dcmdata/libsrc/dcvrod.cc
@@ -26,6 +26,7 @@
 
 #include "dcmtk/dcmdata/dcvrod.h"
 #include "dcmtk/dcmdata/dcswap.h"
+#include "dcmtk/dcmdata/dcjson.h"
 
 
 // ********************************
@@ -150,3 +151,38 @@ OFCondition DcmOtherDouble::writeXML(STD_NAMESPACE ostream &out,
     /* always report success */
     return EC_Normal;
 }
+
+
+// ********************************
+
+
+OFCondition DcmOtherDouble::writeJson(STD_NAMESPACE ostream &out,
+                                      DcmJsonFormat &format)
+{
+    /* always write JSON Opener */
+    writeJsonOpener(out, format);
+    /* for an empty value field, we do not need to do anything */
+    if (getLengthField() > 0)
+    {
+        OFString value;
+        if (format.asBulkDataURI(getTag(), value))
+        {
+            /* return defined BulkDataURI */
+            format.printBulkDataURIPrefix(out);
+            DcmJsonFormat::printString(out, value);
+        }
+        else
+        {
+            /* encode binary data as Base64 */
+            format.printInlineBinaryPrefix(out);
+            out << "\"";
+            Uint8 *byteValues = OFstatic_cast(Uint8 *, getValue());
+            OFStandard::encodeBase64(out, byteValues, OFstatic_cast(size_t, getLengthField()));
+            out << "\"";
+        }
+    }
+    /* write JSON Closer  */
+    writeJsonCloser(out, format);
+    /* always report success */
+    return EC_Normal;
+}
diff --git a/dcmdata/libsrc/dcvrof.cc b/dcmdata/libsrc/dcvrof.cc
index d9acb36..307660b 100644
--- a/dcmdata/libsrc/dcvrof.cc
+++ b/dcmdata/libsrc/dcvrof.cc
@@ -24,6 +24,7 @@
 
 #include "dcmtk/ofstd/ofuuid.h"
 
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/dcmdata/dcvrof.h"
 #include "dcmtk/dcmdata/dcswap.h"
 
@@ -150,3 +151,38 @@ OFCondition DcmOtherFloat::writeXML(STD_NAMESPACE ostream &out,
     /* always report success */
     return EC_Normal;
 }
+
+
+// ********************************
+
+
+OFCondition DcmOtherFloat::writeJson(STD_NAMESPACE ostream &out,
+                                     DcmJsonFormat &format)
+{
+    /* always write JSON Opener */
+    writeJsonOpener(out, format);
+    /* for an empty value field, we do not need to do anything */
+    if (getLengthField() > 0)
+    {
+        OFString value;
+        if (format.asBulkDataURI(getTag(), value))
+        {
+            /* return defined BulkDataURI */
+            format.printBulkDataURIPrefix(out);
+            DcmJsonFormat::printString(out, value);
+        }
+        else
+        {
+            /* encode binary data as Base64 */
+            format.printInlineBinaryPrefix(out);
+            out << "\"";
+            Uint8 *byteValues = OFstatic_cast(Uint8 *, getValue());
+            OFStandard::encodeBase64(out, byteValues, OFstatic_cast(size_t, getLengthField()));
+            out << "\"";
+        }
+    }
+    /* always write JSON Closer */
+    writeJsonCloser(out, format);
+    /* always report success */
+    return EC_Normal;
+}
diff --git a/dcmdata/libsrc/dcvrol.cc b/dcmdata/libsrc/dcvrol.cc
index 60c0197..40d002b 100644
--- a/dcmdata/libsrc/dcvrol.cc
+++ b/dcmdata/libsrc/dcvrol.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2016, OFFIS e.V.
+ *  Copyright (C) 2016-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -25,12 +25,19 @@
 #include "dcmtk/ofstd/ofuuid.h"
 
 #include "dcmtk/dcmdata/dcvrol.h"
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/dcmdata/dcswap.h"
 
 
 // ********************************
 
 
+DcmOtherLong::DcmOtherLong(const DcmTag &tag)
+  : DcmUnsignedLong(tag, 0)
+{
+}
+
+
 DcmOtherLong::DcmOtherLong(const DcmTag &tag,
                            const Uint32 len)
   : DcmUnsignedLong(tag, len)
@@ -146,3 +153,38 @@ OFCondition DcmOtherLong::writeXML(STD_NAMESPACE ostream &out,
     /* always report success */
     return EC_Normal;
 }
+
+
+// ********************************
+
+
+OFCondition DcmOtherLong::writeJson(STD_NAMESPACE ostream &out,
+                                    DcmJsonFormat &format)
+{
+    /* write JSON Opener */
+    writeJsonOpener(out, format);
+    /* for an empty value field, we do not need to do anything */
+    if (getLengthField() > 0)
+    {
+        OFString value;
+        if (format.asBulkDataURI(getTag(), value))
+        {
+            /* return defined BulkDataURI */
+            format.printBulkDataURIPrefix(out);
+            DcmJsonFormat::printString(out, value);
+        }
+        else
+        {
+            /* encode binary data as Base64 */
+            format.printInlineBinaryPrefix(out);
+            out << "\"";
+            Uint8 *byteValues = OFstatic_cast(Uint8 *, getValue());
+            OFStandard::encodeBase64(out, byteValues, OFstatic_cast(size_t, getLengthField()));
+            out << "\"";
+        }
+    }
+    /* write JSON Closer */
+    writeJsonCloser(out, format);
+    /* always report success */
+    return EC_Normal;
+}
diff --git a/dcmdata/libsrc/dcvrpn.cc b/dcmdata/libsrc/dcvrpn.cc
index 0fb5852..2b88b0b 100644
--- a/dcmdata/libsrc/dcvrpn.cc
+++ b/dcmdata/libsrc/dcvrpn.cc
@@ -22,19 +22,22 @@
 
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
+#include "dcmtk/dcmdata/dcjson.h"
 #include "dcmtk/dcmdata/dcvrpn.h"
 
 
 // ********************************
 
 
+const char* const DcmPersonName::componentGroupNames[3] = { "Alphabetic", "Ideographic", "Phonetic" };
+
+
 DcmPersonName::DcmPersonName(const DcmTag &tag,
                              const Uint32 len)
   : DcmCharString(tag, len)
 {
     setMaxLength(64);     // not correct: max length of PN is 3*64+2 = 194 characters (not bytes!)
     setNonSignificantChars(" \\^=");
-    setDelimiterChars("\\^=");
 }
 
 
@@ -125,7 +128,6 @@ OFCondition DcmPersonName::writeXML(STD_NAMESPACE ostream &out,
             /* strings to hold family, first, and middle name as well as prefix and suffix component */
             OFString components[5];
             /* arrays in order to permit looping while creating the output */
-            const char* compGroupNames[3] = { "Alphabetic", "Ideographic", "Phonetic" };
             const char* compNames[5] = { "FamilyName", "GivenName", "MiddleName", "NamePrefix", "NameSuffix" };
             for (unsigned int it = 0; it < vm; it++)
             {
@@ -149,7 +151,7 @@ OFCondition DcmPersonName::writeXML(STD_NAMESPACE ostream &out,
                         /* output one component group, e.g. <SingleByte> <FamilyName>Onken</FamilyName> </SingleByte> */
                         if (result.good())
                         {
-                            out << "<" << compGroupNames[cg] << ">" << OFendl; // e.g. <SingleByte>
+                            out << "<" << componentGroupNames[cg] << ">" << OFendl; // e.g. <SingleByte>
                             /* go through components (last name, first name, ...) */
                             for (unsigned short c = 0; c < 5; c++)
                             {
@@ -159,7 +161,7 @@ OFCondition DcmPersonName::writeXML(STD_NAMESPACE ostream &out,
                                     out << "<" << compNames[c] << ">" << components[c] << "</" << compNames[c] << ">" << OFendl;
                                 }
                             }
-                            out << "</" << compGroupNames[cg] << ">" << OFendl; // e.g. </SingleByte>
+                            out << "</" << componentGroupNames[cg] << ">" << OFendl; // e.g. </SingleByte>
                         }
                     }
                 }
@@ -177,6 +179,250 @@ OFCondition DcmPersonName::writeXML(STD_NAMESPACE ostream &out,
 }
 
 
+// ********************************
+
+
+OFCondition DcmPersonName::writeJson(STD_NAMESPACE ostream &out,
+                                     DcmJsonFormat &format)
+{
+    // helper struct to operate on the value pointers
+    struct Lexer
+    {
+        // initializes everything with foolproof defaults
+        Lexer()
+        : it(OFnullptr)
+        , end(OFnullptr)
+        , componentGroupName(componentGroupNames)
+        , currentComponent(0)
+        , hasTrailingNull(OFFalse)
+        {
+
+        }
+
+        // resets component groups and components for the new value and
+        // remembers that there was a value separator, so that trailing
+        // 'null' values can be printed.
+        void handleValue()
+        {
+            currentComponent = 0;
+            componentGroupName = componentGroupNames;
+            hasTrailingNull = OFTrue;
+        }
+
+        // check component group validity and set members
+        // appropriately
+        // emit warnings for invalid component groups
+        void handleComponentGroup()
+        {
+            if (componentGroupName != componentGroupNames + 2)
+            {
+                currentComponent = 0;
+                ++componentGroupName;
+            }
+            else
+            {
+                DCMDATA_ERROR("DcmPersonName::writeJson(): omitting invalid "
+                    "component group (more than three component groups present)");
+                // seek to the end of the current component group - 1, since
+                // the iterator will be incremented in the calling code
+                while (++it != end && *it != '\\' && *it != '=');
+                --it;
+            }
+        }
+
+        // searches for the next significant character
+        // (no delimiter or padding character).
+        // keeps track of the component group name and component
+        // number.
+        // returns OFFalse if no more significant characters exist.
+        OFBool nextValue()
+        {
+            for (; it != end; ++it) switch (*it)
+            {
+            case '\\':
+                handleValue();
+                return OFTrue;
+            case '=':
+                handleComponentGroup();
+                break;
+            case '^':
+                ++currentComponent;
+                break;
+            case ' ':
+                break;
+            default:
+                return OFTrue;
+            }
+            // this ends the output, unless we have to write
+            // a trailing 'null'
+            return hasTrailingNull;
+        }
+
+        // searches for the next significant character
+        // (no delimiter or padding character)
+        // within the current value.
+        // keeps track of the current component group and component
+        // number.
+        // returns OFFalse if no more significant characters exist
+        // within the current value.
+        OFBool nextComponentGroup()
+        {
+            for (; it != end; ++it) switch(*it)
+            {
+            case '\\':
+                // skip over any value separator
+                ++it;
+                handleValue();
+                return OFFalse;
+            case '=':
+                handleComponentGroup();
+                break;
+            case '^':
+                ++currentComponent;
+                break;
+            case ' ':
+                break;
+            default:
+                return OFTrue;
+            }
+            return OFFalse;
+        }
+
+        // searches for the next significant character
+        // (no delimiter or padding character)
+        // within the current component group.
+        // keeps track of the current component number.
+        // returns OFFalse if no more significant characters exist
+        // within the current component group.
+        OFBool nextComponent()
+        {
+            for (; it != end; ++it) switch(*it)
+            {
+            case '\\':
+            case '=':
+                return OFFalse;
+            case '^':
+                ++currentComponent;
+                break;
+            case ' ':
+                break;
+            default:
+                return OFTrue;
+            }
+            return OFFalse;
+        }
+
+        // writes all significant characters of the current component,
+        // prepending '^' characters as required by the current component
+        // number.
+        void writeComponent(STD_NAMESPACE ostream &out)
+        {
+            for (; currentComponent; --currentComponent)
+                out << '^';
+            const char* const begin = it;
+            while (++it != end && *it != '\\' && *it != '=' && *it != '^');
+            const char* componentEnd = it - 1;
+            while (*componentEnd == ' ')
+                --componentEnd;
+            out.write(begin, componentEnd - begin + 1);
+        }
+
+        // writes the name of the current component group and all components
+        // within the current component group that contain at least one significant
+        // character.
+        // All others are replaced by a single '^' character each, except for the
+        // trailing ones (that are omitted).
+        void writeComponentGroup(STD_NAMESPACE ostream &out, DcmJsonFormat &format)
+        {
+            out << format.indent() << '"' << *componentGroupName << "\":"
+                << format.space() << '"';
+            writeComponent(out);
+            while (nextComponent())
+                writeComponent(out);
+            out << '"';
+        }
+
+        // writes all component groups of the current value that contain at least
+        // a single significant character, separated by ',' characters.
+        // all other component groups are omitted entirely.
+        // writes 'null' if all component groups are empty.
+        void writeCurrentValue(STD_NAMESPACE ostream &out, DcmJsonFormat &format)
+        {
+            hasTrailingNull = OFFalse;
+            if (nextComponentGroup())
+            {
+                out << '{' << format.newline();
+                ++format.indent();
+                writeComponentGroup(out, format);
+                while (nextComponentGroup())
+                {
+                    out << ',' << format.newline();
+                    writeComponentGroup(out, format);
+                }
+                out << format.newline() << --format.indent() << '}';
+            }
+            else out << "null";
+        }
+
+        // points to the character that is currently being processed
+        const char* it;
+
+        // points to the end of the entire attribute's data, including
+        // all values
+        const char* const end;
+
+        // points to the respective entry of the componentGroupNames
+        // array that contains the name of the component group that
+        // is currently being processed
+        const char* const * componentGroupName;
+
+        // denotes the number of empty components within the current
+        // component group since the last component that contained
+        // at least one significant character.
+        unsigned currentComponent;
+
+        // will be OFTrue if the last value is empty, so that a
+        // trailing 'null' will be written
+        OFBool hasTrailingNull;
+    } lexer;
+
+    // initialize the lexer, return an error if the data
+    // of the current attribute can't be accessed for whatever
+    // reason
+    OFCondition result = DcmCharString::getString(OFconst_cast(char*&, lexer.it));
+    if (result.bad())
+        return result;
+    OFconst_cast(const char*&, lexer.end) = lexer.it + DcmCharString::getLength();
+
+    // write attribute name etc., even if the attribute is empty
+    DcmElement::writeJsonOpener(out, format);
+
+    // search for the first significant character within the
+    // entire data or the first value separator '\'
+    if (lexer.nextValue())
+    {
+        // write the fist value or 'null'
+        format.printValuePrefix(out);
+        lexer.writeCurrentValue(out, format);
+        // search for the first significant character within
+        // the next value or the next '\'
+        while (lexer.nextValue())
+        {
+            // write array element separator and the next
+            // value or 'null'
+            format.printNextArrayElementPrefix(out);
+            lexer.writeCurrentValue(out, format);
+        }
+        // close the array after the last value
+        format.printValueSuffix(out);
+    }
+
+    // close the current attribute
+    DcmElement::writeJsonCloser(out, format);
+
+    return EC_Normal;
+}
+
 
 // ********************************
 
@@ -483,3 +729,12 @@ OFCondition DcmPersonName::checkStringValue(const OFString &value,
     }
     return result;
 }
+
+
+// ********************************
+
+
+const OFString& DcmPersonName::getDelimiterChars() const
+{
+    return DcmVR(EVR_PN).getDelimiterChars();
+}
diff --git a/dcmdata/libsrc/dcvrsh.cc b/dcmdata/libsrc/dcvrsh.cc
index b01ab03..f80c779 100644
--- a/dcmdata/libsrc/dcvrsh.cc
+++ b/dcmdata/libsrc/dcvrsh.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2013, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -23,6 +23,7 @@
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
 #include "dcmtk/dcmdata/dcvrsh.h"
+#include "dcmtk/dcmdata/dcjson.h"
 
 
 // ********************************
@@ -34,7 +35,6 @@ DcmShortString::DcmShortString(const DcmTag &tag,
 {
     setMaxLength(16);
     setNonSignificantChars(" \\");
-    setDelimiterChars("\\");
 }
 
 
@@ -116,3 +116,47 @@ OFCondition DcmShortString::checkStringValue(const OFString &value,
 {
     return DcmByteString::checkStringValue(value, vm, "lo", 12, 0 /* maxLen: no check */, charset);
 }
+
+
+// ********************************
+
+
+OFCondition DcmShortString::writeJson(STD_NAMESPACE ostream &out,
+                                     DcmJsonFormat &format)
+{
+    /* always write JSON Opener */
+    DcmElement::writeJsonOpener(out, format);
+    /* write element value (if non-empty) */
+    if (!isEmpty())
+    {
+        OFString value;
+        OFCondition status = getOFString(value, 0L);
+        if (status.bad())
+            return status;
+        format.printValuePrefix(out);
+        DcmJsonFormat::printValueString(out, value);
+        const unsigned long vm = getVM();
+        for (unsigned long valNo = 1; valNo < vm; ++valNo)
+        {
+            status = getOFString(value, valNo);
+            if (status.bad())
+                return status;
+            format.printNextArrayElementPrefix(out);
+            DcmJsonFormat::printValueString(out, value);
+        }
+        format.printValueSuffix(out);
+    }
+    /* write JSON Closer  */
+    DcmElement::writeJsonCloser(out, format);
+    /* always report success */
+    return EC_Normal;
+}
+
+
+// ********************************
+
+
+const OFString& DcmShortString::getDelimiterChars() const
+{
+    return DcmVR(EVR_SH).getDelimiterChars();
+}
diff --git a/dcmdata/libsrc/dcvrsl.cc b/dcmdata/libsrc/dcvrsl.cc
index 8400169..16562f9 100644
--- a/dcmdata/libsrc/dcvrsl.cc
+++ b/dcmdata/libsrc/dcvrsl.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -31,6 +31,11 @@
 
 // ********************************
 
+DcmSignedLong::DcmSignedLong(const DcmTag &tag)
+  : DcmElement(tag, 0)
+{
+}
+
 
 DcmSignedLong::DcmSignedLong(const DcmTag &tag,
                              const Uint32 len)
diff --git a/dcmdata/libsrc/dcvrss.cc b/dcmdata/libsrc/dcvrss.cc
index a80969e..846983d 100644
--- a/dcmdata/libsrc/dcvrss.cc
+++ b/dcmdata/libsrc/dcvrss.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -31,6 +31,11 @@
 
 // ********************************
 
+DcmSignedShort::DcmSignedShort(const DcmTag &tag)
+  : DcmElement(tag, 0)
+{
+}
+
 
 DcmSignedShort::DcmSignedShort(const DcmTag &tag,
                                const Uint32 len)
diff --git a/dcmdata/libsrc/dcvrtm.cc b/dcmdata/libsrc/dcvrtm.cc
index 3aa4117..0f3e177 100644
--- a/dcmdata/libsrc/dcvrtm.cc
+++ b/dcmdata/libsrc/dcvrtm.cc
@@ -218,41 +218,109 @@ OFCondition DcmTime::getDicomTimeFromOFTime(const OFTime &timeValue,
     return l_error;
 }
 
+OFCondition DcmTime::getOFTimeFromString(const OFString &dicomTime,
+                                         OFTime &timeValue)
+{
+    return getOFTimeFromString(dicomTime.c_str(), dicomTime.size(), timeValue, OFTrue);
+}
 
 OFCondition DcmTime::getOFTimeFromString(const OFString &dicomTime,
                                          OFTime &timeValue,
                                          const OFBool supportOldFormat)
 {
-    OFCondition l_error = EC_IllegalParameter;
-    /* clear result variable */
+    return getOFTimeFromString(dicomTime.c_str(), dicomTime.size(), timeValue, supportOldFormat);
+}
+
+OFCondition DcmTime::getOFTimeFromString(const OFString &dicomTime,
+                                         OFTime &timeValue,
+                                         const OFBool supportOldFormat,
+                                         const double timeZone)
+{
+    return getOFTimeFromString(dicomTime.c_str(), dicomTime.size(), timeValue, supportOldFormat, timeZone);
+}
+
+OFCondition DcmTime::getOFTimeFromString(const char *dicomTime,
+                                         const size_t dicomTimeSize,
+                                         OFTime &timeValue)
+{
+    return getOFTimeFromString(dicomTime, dicomTimeSize, timeValue, OFTrue);
+}
+
+OFCondition DcmTime::getOFTimeFromString(const char *dicomTime,
+                                         const size_t dicomTimeSize,
+                                         OFTime &timeValue,
+                                         const OFBool supportOldFormat)
+{
+    return getOFTimeFromString(dicomTime, dicomTimeSize, timeValue, supportOldFormat, OFTime::getLocalTimeZone());
+}
+
+OFCondition DcmTime::getOFTimeFromString(const char *dicomTime,
+                                         const size_t dicomTimeSize,
+                                         OFTime &timeValue,
+                                         const OFBool supportOldFormat,
+                                         const double timeZone)
+{
+    // clear result variable
     timeValue.clear();
-    /* minimal check for valid format */
-    if (supportOldFormat || (dicomTime.find(":") == OFString_npos))
+    // do checks for any valid DICOM time format, before performing any extraction
+    if (dicomTimeSize < 2 || !OFStandard::checkDigits<2>(dicomTime))
+        return EC_IllegalParameter;
+    unsigned int minutes = 0;
+    double seconds = 0;
+    // test for HH[MM[SS[.FFFFFF]]] format
+    switch (dicomTimeSize)
+    {
+    default:
+        if (dicomTimeSize < 7 || dicomTime[6] != '.' || !parseFragment(dicomTime + 7, dicomTimeSize - 7, seconds))
+            break;
+    case 6:
+        if (OFStandard::checkDigits<2>(dicomTime + 4))
+            seconds += OFStandard::extractDigits<unsigned int,2>(dicomTime + 4);
+        else
+            break;
+    case 4:
+        if (OFStandard::checkDigits<2>(dicomTime + 2))
+            minutes = OFStandard::extractDigits<unsigned int,2>(dicomTime + 2);
+        else
+            break;
+    case 2:
+        if (timeValue.setTime(OFStandard::extractDigits<unsigned int,2>(dicomTime), minutes, seconds, timeZone))
+            return EC_Normal;
+        else
+            return EC_IllegalParameter;
+    }
+    // test for legacy time format HH[:MM[:SS[.FFFFFF]]], if enabled
+    if (supportOldFormat && dicomTimeSize >= 5 && dicomTime[2] == ':' && OFStandard::checkDigits<2>(dicomTime + 3))
     {
-        unsigned int hour, minute = 0;
-        double second = 0.0;
-        /* normalize time format (remove ":" chars) */
-        OFString string = dicomTime;
-        if ((string.length() > 5) && (string[5] == ':'))
-            string.erase(5, 1);
-        if ((string.length() > 2) && (string[2] == ':'))
-            string.erase(2, 1);
-        /* extract components from time string: HH[MM[SS[.FFFFFF]]] */
-       	/* scan seconds using OFStandard::atof to avoid locale issues */
-        if (sscanf(string.c_str(), "%02u%02u", &hour, &minute) >= 1)
+        seconds = 0;
+        switch (dicomTimeSize)
         {
-            if (string.length() > 4)
+        default:
+            if (dicomTimeSize < 9 || dicomTime[8] != '.' || !parseFragment(dicomTime + 9, dicomTimeSize - 9, seconds))
+                break;
+        case 8:
+            if (dicomTime[5] == ':' && OFStandard::checkDigits<2>(dicomTime + 6))
+                seconds += OFStandard::extractDigits<unsigned int,2>(dicomTime + 6);
+            else
+                break;
+        case 5:
+            if
+            (
+                timeValue.setTime
+                (
+                    OFStandard::extractDigits<unsigned int,2>(dicomTime),
+                    OFStandard::extractDigits<unsigned int,2>(dicomTime + 3),
+                    seconds,
+                    timeZone
+                )
+            )
             {
-                /* get optional seconds part */
-            	string.erase(0, 4);
-            	second = OFStandard::atof(string.c_str());
+                return EC_Normal;
             }
-            /* always use the local time zone */
-            if (timeValue.setTime(hour, minute, second, OFTime::getLocalTimeZone()))
-                l_error = EC_Normal;
+            break;
         }
     }
-    return l_error;
+    return EC_IllegalParameter;
 }
 
 
@@ -332,40 +400,28 @@ OFCondition DcmTime::getISOFormattedTimeFromString(const OFString &dicomTime,
     return result;
 }
 
-
 OFCondition DcmTime::getTimeZoneFromString(const OFString &dicomTimeZone,
                                            double &timeZone)
 {
-    OFCondition result = EC_IllegalParameter;
+    return getTimeZoneFromString(dicomTimeZone.c_str(), dicomTimeZone.size(), timeZone);
+}
+
+OFCondition DcmTime::getTimeZoneFromString(const char *dicomTimeZone,
+                                           const size_t dicomTimeZoneSize,
+                                           double &timeZone)
+{
     /* init return value */
     timeZone = 0;
     /* minimal check for valid format */
-    if (dicomTimeZone.length() == 5)
+    if (dicomTimeZoneSize == 5 && (dicomTimeZone[0] == '+' || dicomTimeZone[0] == '-') && OFStandard::checkDigits<4>(dicomTimeZone + 1))
     {
-        unsigned int hour;
-        unsigned int minute;
-        /* positive sign */
-        if (dicomTimeZone[0] == '+')
-        {
-            /* extract components from time zone string */
-            if (sscanf(dicomTimeZone.c_str() + 1, "%02u%02u", &hour, &minute) == 2)
-            {
-                timeZone = OFstatic_cast(double, hour) + OFstatic_cast(double, minute) / 60;
-                result = EC_Normal;
-            }
-        }
-        /* negative sign */
-        else if (dicomTimeZone[0] == '-')
-        {
-            /* extract components from time zone string */
-            if (sscanf(dicomTimeZone.c_str() + 1, "%02u%02u", &hour, &minute) == 2)
-            {
-                timeZone = -OFstatic_cast(double, hour) - OFstatic_cast(double, minute) / 60;
-                result = EC_Normal;
-            }
-        }
+        timeZone = OFstatic_cast(double, (OFStandard::extractDigits<unsigned,2>(dicomTimeZone + 1)))
+            + OFstatic_cast(double, (OFStandard::extractDigits<unsigned,2>(dicomTimeZone + 3))) / 60;
+        if (dicomTimeZone[0] == '-')
+            timeZone = -timeZone;
+        return EC_Normal;
     }
-    return result;
+    return EC_IllegalParameter;
 }
 
 
@@ -415,3 +471,16 @@ OFCondition DcmTime::checkStringValue(const OFString &value,
     }
     return result;
 }
+
+OFBool DcmTime::parseFragment(const char* const string, const size_t size, double& result)
+{
+    const char* p = string + size - 1;
+    if (p >= string && OFStandard::checkDigits<1>( p ))
+    {
+        result = OFStandard::extractDigits<int,1>( p ) / 10.0;
+        while (--p >= string && OFStandard::checkDigits<1>( p ))
+            result = ( result + OFStandard::extractDigits<int,1>( p ) ) / 10.0;
+        return p < string;
+    }
+    return OFFalse;
+}
diff --git a/dcmdata/libsrc/dcvrul.cc b/dcmdata/libsrc/dcvrul.cc
index 84bf281..59986be 100644
--- a/dcmdata/libsrc/dcvrul.cc
+++ b/dcmdata/libsrc/dcvrul.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -32,6 +32,12 @@
 // ********************************
 
 
+DcmUnsignedLong::DcmUnsignedLong(const DcmTag &tag)
+  : DcmElement(tag, 0)
+{
+}
+
+
 DcmUnsignedLong::DcmUnsignedLong(const DcmTag &tag,
                                  const Uint32 len)
   : DcmElement(tag, len)
diff --git a/dcmdata/libsrc/dcvrulup.cc b/dcmdata/libsrc/dcvrulup.cc
index 68cd01e..0086cd5 100644
--- a/dcmdata/libsrc/dcvrulup.cc
+++ b/dcmdata/libsrc/dcvrulup.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2010, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -31,6 +31,13 @@
 // ********************************
 
 
+DcmUnsignedLongOffset::DcmUnsignedLongOffset(const DcmTag &tag)
+  : DcmUnsignedLong(tag, 0),
+    nextRecord(NULL)
+{
+}
+
+
 DcmUnsignedLongOffset::DcmUnsignedLongOffset(const DcmTag &tag,
                                              const Uint32 len)
   : DcmUnsignedLong(tag, len),
diff --git a/dcmdata/libsrc/dcvrus.cc b/dcmdata/libsrc/dcvrus.cc
index 0954595..e92fd3d 100644
--- a/dcmdata/libsrc/dcvrus.cc
+++ b/dcmdata/libsrc/dcvrus.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -32,6 +32,12 @@
 // ********************************
 
 
+DcmUnsignedShort::DcmUnsignedShort(const DcmTag &tag)
+  : DcmElement(tag, 0)
+{
+}
+
+
 DcmUnsignedShort::DcmUnsignedShort(const DcmTag &tag, const Uint32 len)
   : DcmElement(tag, len)
 {
diff --git a/dcmdata/libsrc/dcxfer.cc b/dcmdata/libsrc/dcxfer.cc
index b7ec1b5..b3244c3 100644
--- a/dcmdata/libsrc/dcxfer.cc
+++ b/dcmdata/libsrc/dcxfer.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -48,6 +48,7 @@ typedef struct
 
 const S_XferNames XferNames[] =
 {
+    // entry #0
     { UID_LittleEndianImplicitTransferSyntax,
       "Little Endian Implicit",
       EXS_LittleEndianImplicit,
@@ -58,6 +59,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none },
+    // entry #1
     { "",  // illegal type
       "Virtual Big Endian Implicit",
       EXS_BigEndianImplicit,
@@ -68,6 +70,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none },
+    // entry #2
     { UID_LittleEndianExplicitTransferSyntax,
       "Little Endian Explicit",
       EXS_LittleEndianExplicit,
@@ -78,6 +81,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none },
+    // entry #3
     { UID_BigEndianExplicitTransferSyntax,
       "Big Endian Explicit",
       EXS_BigEndianExplicit,
@@ -88,6 +92,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFTrue, // retired with Supplement 98
       ESC_none },
+    // entry #4
     { UID_JPEGProcess1TransferSyntax,
       "JPEG Baseline",
       EXS_JPEGProcess1,
@@ -98,6 +103,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none },
+    // entry #5
     { UID_JPEGProcess2_4TransferSyntax,
       "JPEG Extended, Process 2+4",
       EXS_JPEGProcess2_4,
@@ -108,6 +114,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none },
+    // entry #6
     { UID_JPEGProcess3_5TransferSyntax,
       "JPEG Extended, Process 3+5",
       EXS_JPEGProcess3_5,
@@ -118,6 +125,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #7
     { UID_JPEGProcess6_8TransferSyntax,
       "JPEG Spectral Selection, Non-hierarchical, Process 6+8",
       EXS_JPEGProcess6_8,
@@ -128,6 +136,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #8
     { UID_JPEGProcess7_9TransferSyntax,
       "JPEG Spectral Selection, Non-hierarchical, Process 7+9",
       EXS_JPEGProcess7_9,
@@ -138,6 +147,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #9
     { UID_JPEGProcess10_12TransferSyntax,
       "JPEG Full Progression, Non-hierarchical, Process 10+12",
       EXS_JPEGProcess10_12,
@@ -148,6 +158,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #10
     { UID_JPEGProcess11_13TransferSyntax,
       "JPEG Full Progression, Non-hierarchical, Process 11+13",
       EXS_JPEGProcess11_13,
@@ -158,6 +169,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #11
     { UID_JPEGProcess14TransferSyntax,
       "JPEG Lossless, Non-hierarchical, Process 14",
       EXS_JPEGProcess14,
@@ -168,6 +180,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none },
+    // entry #12
     { UID_JPEGProcess15TransferSyntax,
       "JPEG Lossless, Non-hierarchical, Process 15",
       EXS_JPEGProcess15,
@@ -178,6 +191,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #13
     { UID_JPEGProcess16_18TransferSyntax,
       "JPEG Extended, Hierarchical, Process 16+18",
       EXS_JPEGProcess16_18,
@@ -188,6 +202,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #14
     { UID_JPEGProcess17_19TransferSyntax,
       "JPEG Extended, Hierarchical, Process 17+19",
       EXS_JPEGProcess17_19,
@@ -198,6 +213,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #15
     { UID_JPEGProcess20_22TransferSyntax,
       "JPEG Spectral Selection, Hierarchical, Process 20+22",
       EXS_JPEGProcess20_22,
@@ -208,6 +224,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #16
     { UID_JPEGProcess21_23TransferSyntax,
       "JPEG Spectral Selection, Hierarchical, Process 21+23",
       EXS_JPEGProcess21_23,
@@ -218,6 +235,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #17
     { UID_JPEGProcess24_26TransferSyntax,
       "JPEG Full Progression, Hierarchical, Process 24+26",
       EXS_JPEGProcess24_26,
@@ -228,6 +246,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #18
     { UID_JPEGProcess25_27TransferSyntax,
       "JPEG Full Progression, Hierarchical, Process 25+27",
       EXS_JPEGProcess25_27,
@@ -238,6 +257,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #19
     { UID_JPEGProcess28TransferSyntax,
       "JPEG Lossless, Hierarchical, Process 28",
       EXS_JPEGProcess28,
@@ -248,6 +268,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #20
     { UID_JPEGProcess29TransferSyntax,
       "JPEG Lossless, Hierarchical, Process 29",
       EXS_JPEGProcess29,
@@ -258,6 +279,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none },
+    // entry #21
     { UID_JPEGProcess14SV1TransferSyntax,
       "JPEG Lossless, Non-hierarchical, 1st Order Prediction",
       EXS_JPEGProcess14SV1,
@@ -268,6 +290,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none },
+    // entry #22
     { UID_RLELosslessTransferSyntax,
       "RLE Lossless",
       EXS_RLELossless,
@@ -278,6 +301,23 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none },
+    // entry #23
+    { UID_DeflatedExplicitVRLittleEndianTransferSyntax,
+      "Deflated Explicit VR Little Endian",
+      EXS_DeflatedLittleEndianExplicit,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_NotEncapsulated,
+      0L, 0L,
+      OFFalse,
+      OFFalse,
+#ifdef WITH_ZLIB
+      ESC_zlib
+#else
+      ESC_unsupported
+#endif
+    },
+    // entry #24
     { UID_JPEGLSLosslessTransferSyntax,
       "JPEG-LS Lossless",
       EXS_JPEGLSLossless,
@@ -288,6 +328,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none },
+    // entry #25
     { UID_JPEGLSLossyTransferSyntax,
       "JPEG-LS Lossy (Near-lossless)",
       EXS_JPEGLSLossy,
@@ -298,21 +339,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none },
-    { UID_DeflatedExplicitVRLittleEndianTransferSyntax,
-      "Deflated Explicit VR Little Endian",
-      EXS_DeflatedLittleEndianExplicit,
-      EBO_LittleEndian,
-      EVT_Explicit,
-      EJE_NotEncapsulated,
-      0L, 0L,
-      OFFalse,
-      OFFalse,
-#ifdef WITH_ZLIB
-      ESC_zlib
-#else
-      ESC_unsupported
-#endif
-    },
+    // entry #26
     { UID_JPEG2000LosslessOnlyTransferSyntax,
       "JPEG 2000 (Lossless only)",
       EXS_JPEG2000LosslessOnly,
@@ -323,6 +350,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none },
+    // entry #27
     { UID_JPEG2000TransferSyntax,
       "JPEG 2000 (Lossless or Lossy)",
       EXS_JPEG2000,
@@ -333,8 +361,58 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none },
+    // entry #28
+   { UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax,
+      "JPEG 2000 Part 2 Multicomponent Image Compression (Lossless only)",
+      EXS_JPEG2000MulticomponentLosslessOnly,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_Encapsulated,
+      0L, 0L,
+      OFFalse,
+      OFFalse,
+      ESC_none },
+    // entry #29
+   { UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax,
+      "JPEG 2000 Part 2 Multicomponent Image Compression (Lossless or Lossy)",
+      EXS_JPEG2000Multicomponent,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_Encapsulated,
+      0L, 0L,
+      OFTrue,
+      OFFalse,
+      ESC_none },
+    // entry #30
+   { UID_JPIPReferencedTransferSyntax,
+      "JPIP Referenced",
+      EXS_JPIPReferenced,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_NotEncapsulated,  // in fact, pixel data shall be referenced via (0028,7FE0) Pixel Data Provider URL
+      0L, 0L,
+      OFTrue,               // really lossy?
+      OFFalse,
+      ESC_none },
+    // entry #31
+   { UID_JPIPReferencedDeflateTransferSyntax,
+      "JPIP Referenced Deflate",
+      EXS_JPIPReferencedDeflate,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_NotEncapsulated,  // in fact, pixel data shall be referenced via (0028,7FE0) Pixel Data Provider URL
+      0L, 0L,
+      OFTrue,               // really lossy?
+      OFFalse,
+#ifdef WITH_ZLIB
+      ESC_zlib
+#else
+      ESC_unsupported
+#endif
+    },
+    // entry #32
     { UID_MPEG2MainProfileAtMainLevelTransferSyntax,
-      "MPEG2 Main Profile @ Main Level",
+      "MPEG2 Main Profile @ Main Level",  // changed with DICOM 2016e to: MPEG2 Main Profile / Main Level
       EXS_MPEG2MainProfileAtMainLevel,
       EBO_LittleEndian,
       EVT_Explicit,
@@ -343,8 +421,9 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none },
+    // entry #33
     { UID_MPEG2MainProfileAtHighLevelTransferSyntax,
-      "MPEG2 Main Profile @ High Level",
+      "MPEG2 Main Profile @ High Level",  // changed with DICOM 2016e to: MPEG2 Main Profile / High Level
       EXS_MPEG2MainProfileAtHighLevel,
       EBO_LittleEndian,
       EVT_Explicit,
@@ -353,6 +432,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none },
+    // entry #34
     { UID_MPEG4HighProfileLevel4_1TransferSyntax,
       "MPEG-4 AVC/H.264 High Profile / Level 4.1",
       EXS_MPEG4HighProfileLevel4_1,
@@ -363,6 +443,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none },
+    // entry #35
     { UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax,
       "MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1",
       EXS_MPEG4BDcompatibleHighProfileLevel4_1,
@@ -373,6 +454,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none },
+    // entry #36
     { UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax,
       "MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video",
       EXS_MPEG4HighProfileLevel4_2_For2DVideo,
@@ -383,6 +465,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none },
+    // entry #37
     { UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax,
       "MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video",
       EXS_MPEG4HighProfileLevel4_2_For3DVideo,
@@ -393,6 +476,7 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none },
+    // entry #38
     { UID_MPEG4StereoHighProfileLevel4_2TransferSyntax,
       "MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2",
       EXS_MPEG4StereoHighProfileLevel4_2,
@@ -403,53 +487,28 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none },
-   { UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax,
-      "JPEG 2000 Part 2 Multicomponent Image Compression (Lossless only)",
-      EXS_JPEG2000MulticomponentLosslessOnly,
+    // entry #39
+    { UID_HEVCMainProfileLevel5_1TransferSyntax,
+      "HEVC/H.265 Main Profile / Level 5.1",
+      EXS_HEVCMainProfileLevel5_1,
       EBO_LittleEndian,
       EVT_Explicit,
       EJE_Encapsulated,
       0L, 0L,
-      OFFalse,
+      OFTrue,
       OFFalse,
       ESC_none },
-   { UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax,
-      "JPEG 2000 Part 2 Multicomponent Image Compression (Lossless or Lossy)",
-      EXS_JPEG2000Multicomponent,
+    // entry #40
+    { UID_HEVCMain10ProfileLevel5_1TransferSyntax,
+      "HEVC/H.265 Main 10 Profile / Level 5.1",
+      EXS_HEVCMain10ProfileLevel5_1,
       EBO_LittleEndian,
       EVT_Explicit,
       EJE_Encapsulated,
       0L, 0L,
       OFTrue,
       OFFalse,
-      ESC_none },
-   { UID_JPIPReferencedTransferSyntax,
-      "JPIP Referenced",
-      EXS_JPIPReferenced,
-      EBO_LittleEndian,
-      EVT_Explicit,
-      EJE_NotEncapsulated,  // in fact, pixel data shall be referenced via (0028,7FE0) Pixel Data Provider URL
-      0L, 0L,
-      OFTrue,               // really lossy?
-      OFFalse,
-      ESC_none },
-   { UID_JPIPReferencedDeflateTransferSyntax,
-      "JPIP Referenced Deflate",
-      EXS_JPIPReferencedDeflate,
-      EBO_LittleEndian,
-      EVT_Explicit,
-      EJE_NotEncapsulated,  // in fact, pixel data shall be referenced via (0028,7FE0) Pixel Data Provider URL
-      0L, 0L,
-      OFTrue,               // really lossy?
-      OFFalse,
-#ifdef WITH_ZLIB
-      ESC_zlib
-#else
-      ESC_unsupported
-#endif
-    }
-
-    // enter further transfer syntaxes here ...
+      ESC_none }
 };
 
 const int DIM_OF_XferNames = OFstatic_cast(int, sizeof(XferNames) / sizeof(S_XferNames));
@@ -583,6 +642,8 @@ DcmXfer::~DcmXfer()
 
 DcmXfer &DcmXfer::operator=(const E_TransferSyntax xfer)
 {
+    // tbc: if the enum value is consistent with the index of the array,
+    //      why do we need to iterate over the array entries?
     int i = 0;
     while ((i < DIM_OF_XferNames) && (XferNames[i].xfer != xfer))
         i++;
diff --git a/dcmdata/tests/CMakeLists.txt b/dcmdata/tests/CMakeLists.txt
index 30c4178..efc8cec 100644
--- a/dcmdata/tests/CMakeLists.txt
+++ b/dcmdata/tests/CMakeLists.txt
@@ -1,5 +1,5 @@
 # declare executables
-DCMTK_ADD_EXECUTABLE(dcmdata_tests tests tpread ti2dbmp tchval tpath tvrdatim telemlen tparser tdict tvrds tvrfd tvrpn tvrui tvrol tstrval tspchrs tparent tfilter tvrcomp)
+DCMTK_ADD_EXECUTABLE(dcmdata_tests tests tpread ti2dbmp tchval tpath tvrdatim telemlen tparser tdict tvrds tvrfd tvrpn tvrui tvrol tstrval tspchrs tparent tfilter tvrcomp tmatch)
 
 # make sure executables are linked to the corresponding libraries
 DCMTK_TARGET_LINK_MODULES(dcmdata_tests i2d dcmdata oflog ofstd)
diff --git a/dcmdata/tests/Makefile.dep b/dcmdata/tests/Makefile.dep
index 2062e60..e980384 100644
--- a/dcmdata/tests/Makefile.dep
+++ b/dcmdata/tests/Makefile.dep
@@ -358,6 +358,52 @@ ti2dbmp.o: ti2dbmp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/libi2d/i2define.h
+tmatch.o: tmatch.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/oftest.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../include/dcmtk/dcmdata/dcmatch.h
 tparent.o: tparent.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -739,9 +785,10 @@ tspchrs.o: tspchrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../include/dcmtk/dcmdata/dcspchrs.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
- ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../include/dcmtk/dcmdata/dctypes.h
 tstrval.o: tstrval.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
diff --git a/dcmdata/tests/Makefile.in b/dcmdata/tests/Makefile.in
index d95ae9c..5a6d732 100644
--- a/dcmdata/tests/Makefile.in
+++ b/dcmdata/tests/Makefile.in
@@ -18,12 +18,12 @@ oflogdir = $(top_srcdir)/../oflog
 LOCALINCLUDES = -I$(top_srcdir)/include -I$(ofstddir)/include -I$(oflogdir)/include
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(top_srcdir)/libi2d -L$(ofstddir)/libsrc \
 	-L$(oflogdir)/libsrc
-LOCALLIBS = -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(ICONVLIBS)
+LOCALLIBS = -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(CHARCONVLIBS)
 I2DLIBS = -li2d
 
 objs = tests.o tpread.o ti2dbmp.o tchval.o tpath.o tvrdatim.o telemlen.o tparser.o \
 	tdict.o tvrds.o tvrfd.o tvrui.o tvrol.o tstrval.o tspchrs.o tvrpn.o \
-	tparent.o tfilter.o tvrcomp.o
+	tparent.o tfilter.o tvrcomp.o tmatch.o
 
 progs = tests
 
diff --git a/dcmdata/tests/tests.cc b/dcmdata/tests/tests.cc
index 805f087..57470f3 100644
--- a/dcmdata/tests/tests.cc
+++ b/dcmdata/tests/tests.cc
@@ -103,4 +103,5 @@ OFTEST_REGISTER(dcmdata_specificCharacterSet_2);
 OFTEST_REGISTER(dcmdata_specificCharacterSet_3);
 OFTEST_REGISTER(dcmdata_specificCharacterSet_4);
 OFTEST_REGISTER(dcmdata_attribute_filter);
+OFTEST_REGISTER(dcmdata_attribute_matching);
 OFTEST_MAIN("dcmdata")
diff --git a/dcmdata/tests/tmatch.cc b/dcmdata/tests/tmatch.cc
new file mode 100644
index 0000000..35662dc
--- /dev/null
+++ b/dcmdata/tests/tmatch.cc
@@ -0,0 +1,124 @@
+/*
+ *
+ *  Copyright (C) 2017, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmdata
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: unit test for DcmAttributeMatching
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/dcmdata/dcvr.h"
+#include "dcmtk/dcmdata/dcmatch.h"
+
+static OFBool test_singlevalue( const char* const query, const char* const candidate )
+{
+    return DcmAttributeMatching::singleValueMatching( query, strlen( query ), candidate, strlen( candidate ) );
+}
+
+static OFBool test_wildcards( const char* const query, const char* const candidate )
+{
+    return DcmAttributeMatching::wildCardMatching( query, strlen( query ), candidate, strlen( candidate ) );
+}
+
+static OFBool test_date( const char* const query, const char* const candidate )
+{
+    return DcmAttributeMatching::rangeMatchingDate( query, strlen( query ), candidate, strlen( candidate ) );
+}
+
+static OFBool test_time( const char* const query, const char* const candidate )
+{
+    return DcmAttributeMatching::rangeMatchingTime( query, strlen( query ), candidate, strlen( candidate ) );
+}
+
+static OFBool test_datetime( const char* const query, const char* const candidate )
+{
+    return DcmAttributeMatching::rangeMatchingDateTime( query, strlen( query ), candidate, strlen( candidate ) );
+}
+
+static OFBool test_uids( const char* const query, const char* const candidate )
+{
+    return DcmAttributeMatching::listOfUIDMatching( query, strlen( query ), candidate, strlen( candidate ) );
+}
+
+OFTEST(dcmdata_attribute_matching)
+{
+    // wild card matching tests
+    OFCHECK(test_wildcards( "", "hello world" ));
+    OFCHECK(test_wildcards( "*", "hello world" ));
+    OFCHECK(!test_wildcards( "?", "hello world" ));
+    OFCHECK(test_wildcards( "?*", "hello world" ));
+    OFCHECK(test_wildcards( "?ell*??l?", "hello world" ));
+    OFCHECK(!test_wildcards( "?ell***?*?l??", "hello world" ));
+    OFCHECK(test_wildcards( "?ell*?**?l?*", "hello world" ));
+    // date
+    OFCHECK(test_date( "", "20170224" ));
+    OFCHECK(test_date( "1987.08.02", "19870802" ));
+    OFCHECK(test_date( "-20000101", "20000101" ));
+    OFCHECK(test_date( "-20000101", "19990531" ));
+    OFCHECK(!test_date( "-20000101", "20010101" ));
+    OFCHECK(test_date( "20000101-", "20010101" ));
+    OFCHECK(!test_date( "20000101-", "19991231" ));
+    OFCHECK(test_date( "19990101-20000305", "20000101" ));
+    OFCHECK(!test_date( "19990101-20000305", "19980107"));
+    OFCHECK(!test_date( "19990101-20000305", "20000306"));
+    OFCHECK(!test_date( "19990101-20000305", "122713.114122"));
+    // time
+    OFCHECK(test_time( "", "120224" ));
+    OFCHECK(test_time( "11:23:17.123456", "112317.123456" ));
+    OFCHECK(test_time( "-12", "120000" ));
+    OFCHECK(test_time( "-12", "113059.654321" ));
+    OFCHECK(!test_time( "-12", "120000.000001" ));
+    OFCHECK(test_time( "1200-", "120000.000000" ));
+    OFCHECK(!test_time( "12-", "115959.999999" ));
+    OFCHECK(test_time( "11-121428.234763", "12" ));
+    OFCHECK(!test_time( "11-121428.234763", "105959.999999"));
+    OFCHECK(!test_time( "11-121428.234763", "121428.234764"));
+    OFCHECK(!test_time( "11-121428.234763", "20140909"));
+    // datetime
+    OFCHECK(test_datetime( "", "20170224120224+0100" ));
+    OFCHECK(test_datetime( "20170224113224.000000+0030", "20170224120224+0100" ));
+    OFCHECK(test_datetime( "-2000", "20000101000000.000000" ));
+    OFCHECK(test_datetime( "-2000", "19990531132417.231194" ));
+    OFCHECK(!test_datetime( "-2000", "20000102000000.000001" ));
+    OFCHECK(test_datetime( "200001-", "2001010100" ));
+    OFCHECK(!test_datetime( "2000-", "19991231235959.999999" ));
+    OFCHECK(!test_datetime( "1999-20000305173259.123456", "1998010712+0430"));
+    OFCHECK(!test_datetime( "1999-20000305173259.123456", "20000306"));
+    OFCHECK(!test_datetime( "1999-20000305173259.123456", "122713.114122"));
+    // UIDs
+    OFCHECK(test_uids("","123.456.789.10"));
+    OFCHECK(test_uids("123.456.789.10","123.456.789.10"));
+    OFCHECK(!test_uids("456.789.10","123.456.789.10"));
+    OFCHECK(test_uids("456.789.10\\123.456.789.10","123.456.789.10"));
+    OFCHECK(test_uids("456.789.10\\123.456.789.10\\456.123.789.10","123.456.789.10"));
+    OFCHECK(!test_uids("456.789.10\\123.456.79.10\\456.123.789.10","123.456.789.10"));
+    // single value matching
+    OFCHECK(test_singlevalue( "", "Hello world!" ));
+    OFCHECK(test_singlevalue( "Hello world!", "Hello world!" ));
+    OFCHECK(test_singlevalue( "Hello*world!", "Hello*world!" ));
+    OFCHECK(!test_singlevalue( "Hello*world!", "Hello world!" ));
+    // high level API tests
+    DcmAttributeMatching match( EVR_DA );
+    OFCHECK(match);
+    OFCHECK(!!match);
+    OFCHECK(match( "20160101-20181231", 17, "20170713", 8 ));
+    match = DcmAttributeMatching( EVR_TM );
+    OFCHECK(match( "-12", 3, "11", 2 ));
+    OFCHECK(!DcmAttributeMatching( EVR_PN )( "M?ller", 6, "^Martin", 7 ));
+}
diff --git a/dcmdata/tests/tspchrs.cc b/dcmdata/tests/tspchrs.cc
index ae4dae7..3be6a1a 100644
--- a/dcmdata/tests/tspchrs.cc
+++ b/dcmdata/tests/tspchrs.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2013, OFFIS e.V.
+ *  Copyright (C) 2011-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -30,7 +30,7 @@
 OFTEST(dcmdata_specificCharacterSet_1)
 {
     DcmSpecificCharacterSet converter;
-    if (converter.isConversionLibraryAvailable())
+    if (converter.isConversionAvailable())
     {
         // try to select all DICOM character sets without code extensions
         OFCHECK(converter.selectCharacterSet("").good());
@@ -48,6 +48,7 @@ OFTEST(dcmdata_specificCharacterSet_1)
         OFCHECK(converter.selectCharacterSet("ISO_IR 166").good());
         OFCHECK(converter.selectCharacterSet("ISO_IR 192").good());
         OFCHECK(converter.selectCharacterSet("  GB18030 ").good());
+        OFCHECK(converter.selectCharacterSet("    GBK   ").good());
         // try to select all DICOM character sets with code extensions
         OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 6  ").good());
         OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 100").good());
@@ -61,9 +62,13 @@ OFTEST(dcmdata_specificCharacterSet_1)
         OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 148").good());
         OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 13 ").good());
         OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 166").good());
-        OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 87" ).good());
+#if DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICONV
+        // (only the ICONV library supports these character sets)
+        OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 87 ").good());
         OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 159").good());
+#endif
         OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 149").good());
+        OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 58 ").good());
         // the following should fail
         OFCHECK(converter.selectCharacterSet("DCMTK").bad());
         OFCHECK(converter.selectCharacterSet(" \\ ").bad());
@@ -90,7 +95,7 @@ OFTEST(dcmdata_specificCharacterSet_1)
 OFTEST(dcmdata_specificCharacterSet_2)
 {
     DcmSpecificCharacterSet converter;
-    if (converter.isConversionLibraryAvailable())
+    if (converter.isConversionAvailable())
     {
         OFString resultStr;
         // check whether string conversion from Latin-1 to UTF-8 works
@@ -118,12 +123,14 @@ OFTEST(dcmdata_specificCharacterSet_2)
 OFTEST(dcmdata_specificCharacterSet_3)
 {
     DcmSpecificCharacterSet converter;
-    if (converter.isConversionLibraryAvailable())
+    if (converter.isConversionAvailable())
     {
         OFString resultStr;
         // we need the PN delimiters for a standard comformant conversion
         const OFString delimiters("\\^=");
+#if DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICONV
         // check whether string conversion from Japanese language to UTF-8 works
+        // (only the ICONV library supports these character sets)
         // example taken from DICOM PS 3.5 Annex H.3.1
         OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 87").good());
         OFCHECK(converter.convertString("Yamada^Tarou=\033$B;3ED\033(B^\033$BB at O:\033(B=\033$B$d$^$@\033(B^\033$B$?$m$&\033(B", resultStr, delimiters).good());
@@ -132,16 +139,25 @@ OFTEST(dcmdata_specificCharacterSet_3)
         OFCHECK(converter.selectCharacterSet("ISO 2022 IR 13\\ISO 2022 IR 87").good());
         OFCHECK(converter.convertString("\324\317\300\336^\300\333\263=\033$B;3ED\033(J^\033$BB at O:\033(J=\033$B$d$^$@\033(J^\033$B$?$m$&\033(J", resultStr, delimiters).good());
         OFCHECK_EQUAL(resultStr, "\357\276\224\357\276\217\357\276\200\357\276\236^\357\276\200\357\276\233\357\275\263=\345\261\261\347\224\260^\345\244\252\351\203\216=\343\202\204\343\201\276\343\201\240^\343\201\237\343\202\215\343\201\206");
+#endif
         // check whether string conversion from Korean language to UTF-8 works
         // example taken from DICOM PS 3.5 Annex I.2
         OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 149").good());
         OFCHECK(converter.convertString("Hong^Gildong=\033$)C\373\363^\033$)C\321\316\324\327=\033$)C\310\253^\033$)C\261\346\265\277", resultStr, delimiters).good());
         OFCHECK_EQUAL(resultStr, "Hong^Gildong=\346\264\252^\345\220\211\346\264\236=\355\231\215^\352\270\270\353\217\231");
+        // modified example: check for 8-bit mode (using ASCII characters)
+        OFCHECK(converter.convertString("Hong^Gildong=\033$)C\373\363^\033$)C\321\316ASCII\324\327=\033$)C\310\253^\033$)C\261\346\265\277", resultStr, delimiters).good());
+        OFCHECK_EQUAL(resultStr, "Hong^Gildong=\346\264\252^\345\220\211ASCII\346\264\236=\355\231\215^\352\270\270\353\217\231");
         // check whether string conversion from Chinese language to UTF-8 works
-        // example taken from DICOM PS 3.5 Annex J.2
+        // example taken from DICOM PS 3.5 Annex J.3
         OFCHECK(converter.selectCharacterSet("GB18030").good());
         OFCHECK(converter.convertString("Wang^XiaoDong=\315\365^\320\241\266\253=", resultStr, delimiters).good());
         OFCHECK_EQUAL(resultStr, "Wang^XiaoDong=\347\216\213^\345\260\217\344\270\234=");
+        // check whether string conversion from Chinese language to UTF-8 works
+        // example taken from DICOM PS 3.5 Annex K.2
+        OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 58").good());
+        OFCHECK(converter.convertString("Zhang^XiaoDong=\033\044\051\101\325\305\136\033\044\051\101\320\241\266\253=", resultStr, delimiters).good());
+        OFCHECK_EQUAL(resultStr, "Zhang^XiaoDong=\345\274\240\136\345\260\217\344\270\234=");
         // check whether CR and LF are detected correctly
         OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 13").good());
         OFCHECK(converter.convertString("Japanese\r\033(J\324\317\300\336\nText", resultStr).good());
@@ -163,7 +179,7 @@ OFTEST(dcmdata_specificCharacterSet_3)
 OFTEST(dcmdata_specificCharacterSet_4)
 {
     DcmSpecificCharacterSet converter;
-    if (converter.isConversionLibraryAvailable())
+    if (converter.isConversionAvailable())
     {
         OFString resultStr;
         // check whether string conversion from UTF-8 to Latin-1 works
@@ -172,18 +188,30 @@ OFTEST(dcmdata_specificCharacterSet_4)
         OFCHECK_EQUAL(resultStr, "J\366rg");
         OFCHECK(converter.convertString("J\303\251r\303\264me", resultStr).good());
         OFCHECK_EQUAL(resultStr, "J\351r\364me");
+#if DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICONV
+        // (only the ICONV library supports this character set)
         // the following should fail
         OFCHECK(converter.selectCharacterSet("\\ISO 2022 IR 87", "ISO_IR 100").good());
         OFCHECK(converter.convertString("Yamada^Tarou=\033$B;3ED\033(B^\033$BB at O:\033(B=\033$B$d$^$@\033(B^\033$B$?$m$&\033(B", resultStr).bad());
+#endif
         OFCHECK(converter.selectCharacterSet("ISO_IR 100", "").good());
-        OFCHECK(converter.convertString("J\366rg", resultStr).bad());
-        // the following should work
-        OFCHECK(converter.selectCharacterSet("ISO_IR 100", "", OFTrue /*transliterate*/).good());
-        OFCHECK(converter.convertString("J\366rg", resultStr).good());
-        OFCHECK_EQUAL(resultStr, "J\"org");
-        OFCHECK(converter.selectCharacterSet("ISO_IR 100", "", OFFalse /*transliterate*/, OFTrue /*discardIllegal*/).good());
-        OFCHECK(converter.convertString("J\366rg", resultStr).good());
-        OFCHECK_EQUAL(resultStr, "Jrg"); // discard mode removes characters that cannot be "translated"
+        if (OFCharacterEncoding::supportsConversionFlags(OFCharacterEncoding::AbortTranscodingOnIllegalSequence))
+        {
+            OFCHECK(converter.setConversionFlags(OFCharacterEncoding::AbortTranscodingOnIllegalSequence).good());
+            OFCHECK(converter.convertString("J\366rg", resultStr).bad());
+        }
+        if (OFCharacterEncoding::supportsConversionFlags(OFCharacterEncoding::DiscardIllegalSequences))
+        {
+            OFCHECK(converter.setConversionFlags(OFCharacterEncoding::DiscardIllegalSequences).good());
+            OFCHECK(converter.convertString("J\366rg", resultStr).good());
+            OFCHECK_EQUAL(resultStr, "Jrg"); // discard mode removes characters that cannot be "translated"
+        }
+        if (OFCharacterEncoding::supportsConversionFlags(OFCharacterEncoding::TransliterateIllegalSequences))
+        {
+            OFCHECK(converter.setConversionFlags(OFCharacterEncoding::TransliterateIllegalSequences).good());
+            OFCHECK(converter.convertString("J\366rg", resultStr).good());
+            OFCHECK_EQUAL(resultStr, "J\"org");
+        }
     } else {
         // in case there is no libiconv, report a warning but do not fail
         DCMDATA_WARN("Cannot test DcmSpecificCharacterSet since the underlying character set conversion library is not available");
diff --git a/dcmfg/include/dcmtk/dcmfg/fgderimg.h b/dcmfg/include/dcmtk/dcmfg/fgderimg.h
index 1b4c9c5..24b312e 100644
--- a/dcmfg/include/dcmtk/dcmfg/fgderimg.h
+++ b/dcmfg/include/dcmtk/dcmfg/fgderimg.h
@@ -169,41 +169,76 @@ public:
    */
   virtual OFCondition check() const;
 
-  /** Convenience function to add item representing reference to a file. No
+  /** Convenience function to add item representing reference to an object. No
    *  restrictions are set which frames or segments from this image has been
    *  actually used. However, such information could be added to the source
    *  image item later by modifying the resulting item being handed back to the
    *  caller.
-   * @param file Files that should be referenced by their UID, must be readable.
-   * @param purposeOfReference Code representing the purpose of reference
-   *        (Defined CID 7202)
-   * @param resultSourceImageItem The created derivation image item if
-   *        successful, NULL otherwise
-   * @return EC_Normal if adding works, error code otherwise
+   *  @param  file Files that should be referenced by their UID, must be readable.
+   *  @param  purposeOfReference Code representing the purpose of reference
+   *          (Defined CID 7202)
+   *  @param  resultSourceImageItem The created derivation image item if
+   *          successful, NULL otherwise
+   *  @return EC_Normal if adding works, error code otherwise
    */
   virtual OFCondition addSourceImageItem(const OFString& file,
                                          const CodeSequenceMacro& purposeOfReference,
                                          SourceImageItem*& resultSourceImageItem);
 
-  /** Convenience function to add items representing references to some files
+  /** Convenience function to add item representing reference to an object. No
+   *  restrictions are set which frames or segments from this image has been
+   *  actually used. However, such information could be added to the source
+   *  image item later by modifying the resulting item being handed back to the
+   *  caller.
+   *  @param  dataset DICOM dataset that should be referenced by their UID
+   *  @param  purposeOfReference Code representing the purpose of reference
+   *          (Defined CID 7202)
+   *  @param  resultSourceImageItem The created derivation image item if
+   *          successful, NULL otherwise
+   *  @return EC_Normal if adding works, error code otherwise
+   */
+  virtual OFCondition addSourceImageItem(DcmDataset *dataset,
+                                         const CodeSequenceMacro& purposeOfReference,
+                                         SourceImageItem*& resultSourceImageItem);
+
+  /** Convenience function to add items representing references to some objects
    *  which all have the same purpose of reference (code). No restrictions are
    *  set which frames or segments from those images have been actually used.
    *  However, such information could be added to the source image item later by
-    * modifying the resulting item handed back to the caller.
-    * @param files List of files that should be referenced by their UIDs.
-    * @param purposeOfReference Code representing the purpose of reference
-    *        (Defined CID 7202)
-    * @param resultSourceImageItems The created derivation image items (one per
-    *        file) if successful, NULL otherwise
-    * @param skipFileErrors If OFTrue, then files that could not be added will
-    *        not lead to error.
-    * @return EC_Normal if adding works, error code otherwise
+   *  modifying the resulting item handed back to the caller.
+   *  @param  files List of files that should be referenced by their UIDs.
+   *  @param  purposeOfReference Code representing the purpose of reference
+    *         (Defined CID 7202)
+   *  @param  resultSourceImageItems The created derivation image items (one per
+   *          file) if successful, NULL otherwise
+   *  @param  skipFileErrors If OFTrue, then files that could not be added will
+   *          not lead to error.
+   *  @return EC_Normal if adding works, error code otherwise
    */
   virtual OFCondition addSourceImageItems(const OFVector<OFString>& files,
                                           const CodeSequenceMacro& purposeOfReference,
                                           OFVector<SourceImageItem*>& resultSourceImageItems,
                                           const OFBool skipFileErrors = OFFalse);
 
+  /** Convenience function to add items representing references to some objects
+   *  which all have the same purpose of reference (code). No restrictions are
+   *  set which frames or segments from those images have been actually used.
+   *  However, such information could be added to the source image item later by
+   *  modifying the resulting item handed back to the caller.
+   *  @param  datasets List of datasets that should be referenced by their UIDs.
+   *  @param  purposeOfReference Code representing the purpose of reference
+   *          (Defined CID 7202)
+   *  @param  resultSourceImageItems The created derivation image items (one per
+   *          file) if successful, NULL otherwise
+   *  @param  skipErrors If OFTrue, then files that could not be added will
+   *          not lead to error.
+   *  @return EC_Normal if adding works, error code otherwise
+   */
+  virtual OFCondition addSourceImageItems(const OFVector<DcmDataset*>& datasets,
+                                          const CodeSequenceMacro& purposeOfReference,
+                                          OFVector<SourceImageItem*>& resultSourceImageItems,
+                                          const OFBool skipErrors = OFFalse);
+
    /** Get Derivation Description
     *  @param  value Reference to variable in which the value should be stored
     *  @param  pos Index of the value to get (0..vm-1), -1 for all components
diff --git a/dcmfg/include/dcmtk/dcmfg/fgfracon.h b/dcmfg/include/dcmtk/dcmfg/fgfracon.h
index 09abd86..2aea984 100644
--- a/dcmfg/include/dcmtk/dcmfg/fgfracon.h
+++ b/dcmfg/include/dcmtk/dcmfg/fgfracon.h
@@ -279,14 +279,14 @@ public:
 
   /** Set one of the Dimension Index Values
    *  @param  value Value that should be set (lowest index starts with 1)
-   *  @param  pos The position of the value that should be set (lowest index
+   *  @param  dim The position of the value that should be set (lowest index
    *          starts with 0), i.e.\ select the 1st, 2nd, ..nth dimension
    *  @param  checkValue Check 'value'. Not evaluated (here for consistency
    *          with other setter functions).
    *  @return EC_Normal, if value was set, error otherwise
    */
   virtual OFCondition setDimensionIndexValues(const Uint32& value,
-                                              const unsigned int pos,
+                                              const unsigned int dim,
                                               const OFBool checkValue = OFTrue);
 
   /** Set Temporal Position Index
diff --git a/dcmfg/include/dcmtk/dcmfg/fgframeanatomy.h b/dcmfg/include/dcmtk/dcmfg/fgframeanatomy.h
new file mode 100644
index 0000000..c29a78e
--- /dev/null
+++ b/dcmfg/include/dcmtk/dcmfg/fgframeanatomy.h
@@ -0,0 +1,157 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmfg
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: Class for managing Frame Anatomy Functional Group
+ *
+ */
+
+#ifndef FGFRAMEANATOMY_H
+#define FGFRAMEANATOMY_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmdata/dcitem.h"
+#include "dcmtk/dcmiod/iodmacro.h"
+#include "dcmtk/dcmfg/fgbase.h"
+
+/** Class representing the Frame Anatomy Functional Group Macro
+ */
+class DCMTK_DCMFG_EXPORT FGFrameAnatomy : public FGBase
+{
+public:
+
+  /** Enumerated values for attribute "Laterality"
+   */
+  enum LATERALITY
+  {
+    /// Undefined (e.g.\ value not set)
+    LATERALITY_UNDEFINED,
+    /// Invalid Laterality, e.g. when invalid value is read from file
+    LATERALITY_INVALID,
+    /// Right body part
+    LATERALITY_R,
+    /// Left body part
+    LATERALITY_L,
+    /// Unpaired body part
+    LATERALITY_UNPAIRED,
+    /// Both, left and right
+    LATERALITY_BOTH
+  };
+
+  /** Constructor, creates empty Frame Anatomy Functional Group
+   */
+  FGFrameAnatomy();
+
+  /** Virtual destructor, frees memory
+   */
+  virtual ~FGFrameAnatomy();
+
+  /** Returns a deep copy of this object
+   *  @return Deep copy of this object
+   */
+  virtual FGBase *clone() const;
+
+  /** Returns shared type of this group (can be shared or per-frame)
+   *  @return Always returns DcmFGTypes::EFGS_BOTH;
+   */
+  virtual DcmFGTypes::E_FGSharedType getSharedType() const {return DcmFGTypes::EFGS_BOTH;}
+
+  /** Clear all data
+   */
+  virtual void clearData();
+
+  /** Check whether data in functional group is valid
+   *  @return EC_Normal if data is valid, error otherwise
+   */
+  virtual OFCondition check() const;
+
+  /** Read functional group from given item
+   *  @param  item The item to read from, must contain Frame Anatomy Sequence
+   *  @return EC_Normal if reading was successful, error otherwise
+   */
+  virtual OFCondition read(DcmItem& item);
+
+  /** Write functional group to given item
+   *  @param  item The item to write Frame Anatomy Sequence to
+   *  @return EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition write(DcmItem& item);
+
+  // --- get() functionality ---
+
+  /** Get Laterality
+   *  @param  value Reference to variable in which the value should be stored
+   *  @return EC_Normal if successful, an error code otherwise (i.e. if
+   *          value is LATERALITY_INVALID).
+   */
+  virtual OFCondition getLaterality(LATERALITY& value);
+
+  /** Get anatomy information
+   *  @return Reference to anatomic information
+   */
+  virtual GeneralAnatomyMacro& getAnatomy();
+
+  // --- set() functionality ---
+
+  /** Set Laterality
+   *  @param  value Value to be set
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setLaterality(const LATERALITY& value);
+
+  /** Comparison operator that compares the normalized value of this object
+   *  with a given object of the same type, i.e.\ the elements within both
+   *  functional groups (this and rhs parameter) are compared by value!
+   *  Both objects (this and rhs) need to have the same type (i.e.\ both
+   *  FGUnknown) to be comparable. This function is used in order
+   *  to decide whether a functional group already exists, or is new. This
+   *  is used in particular to find out whether a given functional group
+   *  can be shared (i.e.\ the same information already exists as shared
+   *  functional group) or is different from the same shared group. In that
+   *  case the shared functional group must be distributed into per-frame
+   *  functional groups, instead. The exact implementation for implementing
+   *  the comparison is not relevant. However, it must be a comparison
+   *  by value.
+   *  @param  rhs the right hand side of the comparison
+   *  @return 0 if the object values are equal.
+   *          -1 if either the value of the first component that does not match
+   *          is lower in the this object, or all compared components match
+   *          but this component is shorter. Also returned if this type and
+   *          rhs type (DcmFGTypes::E_FGType) do not match.
+   *          1 if either the value of the first component that does not match
+   *          is greater in this object, or all compared components match
+   *          but this component is longer.
+   */
+  virtual int compare(const FGBase& rhs) const;
+
+  static LATERALITY str2Laterality(const OFString& lat);
+
+  static OFString laterality2Str(const LATERALITY lat);
+
+  static OFBool isLateralityValid(const LATERALITY lat);
+
+private:
+
+  /* Content of Frame Anatomy Macro */
+
+  /// Frame Laterality (DS, VM 1, Required type 1)
+  LATERALITY m_FrameLaterality;
+
+  /// General Anatomy Mandatory Macro
+  GeneralAnatomyMacro m_Anatomy;
+};
+
+#endif // FGFRAMEANATOMY_H
diff --git a/dcmfg/include/dcmtk/dcmfg/fgidentpixeltransform.h b/dcmfg/include/dcmtk/dcmfg/fgidentpixeltransform.h
new file mode 100644
index 0000000..5778ccd
--- /dev/null
+++ b/dcmfg/include/dcmtk/dcmfg/fgidentpixeltransform.h
@@ -0,0 +1,174 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmfg
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: Class for managing the Identity Pixel Value Transformation Functional Group
+ *
+ */
+
+#ifndef FGIDENTPIXELTRANSFORM_H
+#define FGIDENTPIXELTRANSFORM_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmdata/dcitem.h"
+#include "dcmtk/dcmfg/fgbase.h"
+#include "dcmtk/dcmdata/dcvrds.h"
+#include "dcmtk/dcmdata/dcvrlo.h"
+
+
+/** Class representing the Identity Pixel Value Transformation Functional Group Macro.
+ */
+class DCMTK_DCMFG_EXPORT FGIdentityPixelValueTransformation : public FGBase
+{
+public:
+
+  /** Constructor, creates Identity Pixel Value Transformation Functional Group.
+   *  All values (Rescale Slope, Intercept and Type) are set to their only valid
+   *  enumerated value listed in the standard, i.e. slope = 1, intercept = 0 and
+   *  type = "US".
+   */
+  FGIdentityPixelValueTransformation();
+
+  /** Destructor, frees memory
+   */
+  virtual ~FGIdentityPixelValueTransformation();
+
+  /** Returns a deep copy of this object
+   *  @return  Deep copy of this object
+   */
+  virtual FGBase *clone() const;
+
+  /** Get shared type of this functional group (can be both, per-frame and
+   *  shared)
+   *  @return Always returns EFGS_BOTH
+   */
+  virtual DcmFGTypes::E_FGSharedType getSharedType() const {return DcmFGTypes::EFGS_BOTH;}
+
+  /** Clears all data
+   */
+  virtual void clearData();
+
+  /** Check whether functional group contains valid data
+   *  @return EC_Normal if data is valid, error otherwise
+   */
+  virtual OFCondition check() const;
+
+  /** Read functional group from given item, i.e.\ read Identity Pixel Value
+   *  Transformation Sequence. Clears existing data before reading.
+   *  @param  item The item to read from
+   *  @return EC_Normal if reading was successful, error otherwise
+   */
+  virtual OFCondition read(DcmItem& item);
+
+  /** Write functional group to given item, i.e.\ write Identity Pixel Value Transformation Sequence
+   *  @param  item The item to write to
+   *  @return EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition write(DcmItem& item);
+
+  /** Get RescaleIntercept
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getRescaleIntercept(OFString &value,
+                                          const signed long pos = 0) const;
+
+  /** Get RescaleSlope
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getRescaleSlope(OFString &value,
+                                      const signed long pos = 0) const;
+
+  /** Get RescaleType
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getRescaleType(OFString &value,
+                                     const signed long pos = 0) const;
+
+  /** Comparison operator that compares the normalized value of this object
+   *  with a given object of the same type, i.e.\ the elements within both
+   *  functional groups (this and rhs parameter) are compared by value!
+   *  Both objects (this and rhs) need to have the same type (i.e.\ both
+   *  FGUnknown) to be comparable. This function is used in order
+   *  to decide whether a functional group already exists, or is new. This
+   *  is used in particular to find out whether a given functional group
+   *  can be shared (i.e.\ the same information already exists as shared
+   *  functional group) or is different from the same shared group. In that
+   *  case the shared functional group must be distributed into per-frame
+   *  functional groups, instead. The exact implementation for implementing
+   *  the comparison is not relevant. However, it must be a comparison
+   *  by value.
+   *  @param  rhs the right hand side of the comparison
+   *  @return 0 if the object values are equal.
+   *          -1 if either the value of the first component that does not match
+   *          is lower in the this object, or all compared components match
+   *          but this component is shorter. Also returned if this type and
+   *          rhs type (DcmFGTypes::E_FGType) do not match.
+   *          1 if either the value of the first component that does not match
+   *          is greater in this object, or all compared components match
+   *          but this component is longer.
+   */
+  virtual int compare(const FGBase& rhs) const;
+
+protected:
+
+  /** Set RescaleIntercept. Hidden from user since value must always be equal
+   *  to 1 (automatically set on write).
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (DS) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setRescaleIntercept(const OFString &value,
+                                          const OFBool checkValue = OFTrue);
+
+  /** Set RescaleSlope. Hidden from user since value must always be equal
+   *  to 1 (automatically set on write).
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (DS) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setRescaleSlope(const OFString &value,
+                                      const OFBool checkValue = OFTrue);
+
+  /** Set RescaleType. Hidden from user since value must always be equal
+   *  to "US" for "unspecified" (automatically set on write).
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (LO) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setRescaleType(const OFString &value,
+                                     const OFBool checkValue = OFTrue);
+
+private:
+
+  /* Content of Identity Pixel Value Transformation Functional Group Macro */
+
+  /// RescaleIntercept (DS, VM 1, Required type 1)
+  DcmDecimalString m_RescaleIntercept;
+
+  /// RescaleSlope (DS, VM 1, Required type 1)
+  DcmDecimalString m_RescaleSlope;
+
+  /// RescaleType (LO, VM 1, Required type 1)
+  DcmLongString m_RescaleType;
+};
+
+#endif // FGIDENTPIXELTRANSFORM_H
diff --git a/dcmfg/include/dcmtk/dcmfg/fginterface.h b/dcmfg/include/dcmtk/dcmfg/fginterface.h
index 5af1df1..ba2c3da 100644
--- a/dcmfg/include/dcmtk/dcmfg/fginterface.h
+++ b/dcmfg/include/dcmtk/dcmfg/fginterface.h
@@ -134,7 +134,7 @@ public:
 
   /** Add functional group that should be shared for all frames. This will
    *  delete all per-frame groups of the same type if existing.
-   *  @param  group   The group to be added (copy is performed)
+   *  @param  group   The group to be added. The group is copied.
    *  @return EC_Normal, if adding was successful, error otherwise
    */
   virtual OFCondition addShared(const FGBase& group);
@@ -148,7 +148,9 @@ public:
    *  overwritten.
    *  @param  frameNo The frame number this group should be added for (starts
    *          from 0)
-   *  @param  group The group to be added
+   *  @param  group The group to be added. The group is copied when adding,
+   *          so the ownership stays with the caller, no matter what the
+   *          method returns.
    *  @return EC_Normal, if adding was successful, error otherwise
    */
   virtual OFCondition addPerFrame(const Uint32 frameNo,
@@ -162,7 +164,8 @@ public:
   virtual OFBool deleteShared(const DcmFGTypes::E_FGType fgType);
 
   /** Deletes per-frame functional group of the given type for a specific frame
-   *  @param frameNo The frame number for the functional group of interest
+   *  @param frameNo The frame number for the functional group of interest.
+   *         First frame is frame 0.
    *  @param fgType The type of functional group to delete
    *  @return OFTrue if group existed and could be deleted, OFFalse (group did
    *          not exist) otherwise
@@ -173,10 +176,17 @@ public:
   /** Deletes per-frame functional group for all frames
    *  @param  fgType The type of functional group to delete
    *  @return Number of per-frame groups deleted (usually equal to number of
-   *          images)
+   *          frames)
    */
   size_t deletePerFrame(const DcmFGTypes::E_FGType fgType);
 
+  /** Deletes all functional groups for a specific frame
+   *  @param frameNo The frame number whose functional groups should be deleted.
+   *         First frame is frame 0.
+   *  @return Number of per-frame groups deleted for this frame
+   */
+  size_t deleteFrame(const Uint32 frameNo);
+
 protected:
 
   /** Get shared functional group based on its type
diff --git a/dcmfg/include/dcmtk/dcmfg/fgparametricmapframetype.h b/dcmfg/include/dcmtk/dcmfg/fgparametricmapframetype.h
new file mode 100644
index 0000000..fd46346
--- /dev/null
+++ b/dcmfg/include/dcmtk/dcmfg/fgparametricmapframetype.h
@@ -0,0 +1,124 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmfg
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: Class for managing the Parametric Map Frame Type Functional Group
+ *
+ */
+
+#ifndef FGPARAMETRICMAPFRAMETYPE_H
+#define FGPARAMETRICMAPFRAMETYPE_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmdata/dcitem.h"
+#include "dcmtk/dcmfg/fgbase.h"
+#include "dcmtk/dcmdata/dcvrcs.h"
+
+/** Class representing the Parametric Map Frame Type Functional Group Macro.
+ */
+class DCMTK_DCMFG_EXPORT FGParametricMapFrameType : public FGBase
+{
+public:
+  /** Constructor, creates empty Parametric Map Frame Type Functional Group
+   */
+  FGParametricMapFrameType();
+
+  /** Destructor, frees memory
+   */
+  virtual ~FGParametricMapFrameType();
+
+  /** Returns a deep copy of this object
+   *  @return  Deep copy of this object
+   */
+  virtual FGBase *clone() const;
+
+  /** Get shared type of this functional group (can be both, per-frame and
+   *  shared)
+   *  @return Always returns EFGS_BOTH
+   */
+  virtual DcmFGTypes::E_FGSharedType getSharedType() const {return DcmFGTypes::EFGS_BOTH;}
+
+  /** Clears all data
+   */
+  virtual void clearData();
+
+  /** Check whether functional group contains valid data
+   *  @return EC_Normal if data is valid, error otherwise
+   */
+  virtual OFCondition check() const;
+
+  /** Read functional group from given item, i.e.\ read Parametric Map Frame Type Sequence
+   *  @param  item The item to read from
+   *  @return EC_Normal if reading was successful, error otherwise
+   */
+  virtual OFCondition read(DcmItem& item);
+
+  /** Write functional group to given item, i.e.\ write Parametric Map Frame Type Sequence
+   *  @param  item The item to write to
+   *  @return EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition write(DcmItem& item);
+
+  /** Get FrameType
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getFrameType(OFString &value,
+                                   const signed long pos = 0) const;
+
+  /** Set FrameType
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (4) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setFrameType(const OFString &value,
+                                   const OFBool checkValue = OFTrue);
+
+  /** Comparison operator that compares the normalized value of this object
+   *  with a given object of the same type, i.e.\ the elements within both
+   *  functional groups (this and rhs parameter) are compared by value!
+   *  Both objects (this and rhs) need to have the same type (i.e.\ both
+   *  FGUnknown) to be comparable. This function is used in order
+   *  to decide whether a functional group already exists, or is new. This
+   *  is used in particular to find out whether a given functional group
+   *  can be shared (i.e.\ the same information already exists as shared
+   *  functional group) or is different from the same shared group. In that
+   *  case the shared functional group must be distributed into per-frame
+   *  functional groups, instead. The exact implementation for implementing
+   *  the comparison is not relevant. However, it must be a comparison
+   *  by value.
+   *  @param  rhs the right hand side of the comparison
+   *  @return 0 if the object values are equal.
+   *          -1 if either the value of the first component that does not match
+   *          is lower in the this object, or all compared components match
+   *          but this component is shorter. Also returned if this type and
+   *          rhs type (DcmFGTypes::E_FGType) do not match.
+   *          1 if either the value of the first component that does not match
+   *          is greater in this object, or all compared components match
+   *          but this component is longer.
+   */
+  virtual int compare(const FGBase& rhs) const;
+
+private:
+
+  /* Content of Parametric Map Frame Type Functional Group Macro */
+
+  /// FrameType (CS, VM 4, Required type 1)
+  DcmCodeString m_FrameType;
+};
+
+#endif // FGPARAMETRICMAPFRAMETYPE_H
diff --git a/dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h b/dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h
index f585b2f..0465b53 100644
--- a/dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h
+++ b/dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h
@@ -27,6 +27,7 @@
 #include "dcmtk/dcmdata/dcitem.h"
 #include "dcmtk/dcmiod/modbase.h"
 #include "dcmtk/dcmiod/iodmacro.h"
+#include "dcmtk/dcmiod/iodcontentitemmacro.h"
 
 /** Class representing the Real World Value Mapping Functional Group that
  *  specifies the mapping of stored values to associated Real World values
@@ -131,7 +132,7 @@ private:
  * LUT Explanation (LO, 1, 1)
  * LUT Label (SH, 1, 1)
  * Measurement Units Code Sequence (SQ, 1, 1)
- * Not yet supported: Quantity Definition Sequence (SQ, 1, 3)
+ * Quantity Definition Sequence (SQ, 1, 3)
  */
 class DCMTK_DCMFG_EXPORT FGRealWorldValueMapping::RWVMItem : public IODComponent
 {
@@ -153,6 +154,11 @@ public:
    */
   RWVMItem(IODComponent* parent = NULL);
 
+  /** Copy Constructor
+   *  @param  rhs The item to copy from
+   */
+  RWVMItem(const RWVMItem& rhs);
+
   /** Clone this class (perform deep copy)
    *  @return Clone of this class or NULL (e.g.\ if memory exhausted)
    */
@@ -229,6 +235,22 @@ public:
   virtual OFCondition getRealWorldValueLastValueMapped(Sint32 &value,
                                                        const unsigned long pos = 0) const;
 
+  /** Get Double Float Real World Value First Value Mapped
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getDoubleFloatRealWorldValueFirstValueMapped(Float64& value,
+                                                                   const unsigned long pos = 0) const;
+
+  /** Get Double Float Real World Value Last Value Mapped
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getDoubleFloatRealWorldValueLastValueMapped(Float64& value,
+                                                                   const unsigned long pos = 0) const;
+
   /** Get Real World Value LUT Data
    *  @param  value Reference to variable in which the value should be stored
    *  @param  pos Index of the value to get (0..vm-1)
@@ -264,6 +286,12 @@ public:
    */
   virtual CodeSequenceMacro& getMeasurementUnitsCode();
 
+  /** Get a reference to the entire ConceptNameCodeSequence, including items
+   *  exceeding the value multiplicity restriction of "1"
+   *  @return a reference to the entire ConceptNameCodeSequence
+   */
+  virtual OFVector<ContentItemMacro*>& getEntireQuantityDefinitionSequence();
+
   // --- set() functionality ---
 
   /** Set Real World Value First Value Mapped
@@ -274,7 +302,7 @@ public:
    *          if enabled
    *  @return EC_Normal if successful, an error code otherwise
    */
-  virtual OFCondition setRealWorldValueFirstValueMappedUnsigned(const Uint16 &value,
+  virtual OFCondition setRealWorldValueFirstValueMappedUnsigned(const Uint16 value,
                                                                 const OFBool checkValue = OFTrue);
 
   /** Set Real World Value First Value Mapped
@@ -296,7 +324,7 @@ public:
    *          if enabled
    *  @return EC_Normal if successful, an error code otherwise
    */
-  virtual OFCondition setRealWorldValueLastValueMappedUnsigned(const Uint16 &value,
+  virtual OFCondition setRealWorldValueLastValueMappedUnsigned(const Uint16 value,
                                                                const OFBool checkValue = OFTrue);
 
   /** Set Real World Value Last Value Mapped
@@ -308,7 +336,25 @@ public:
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setRealWorldValueLastValueMappedSigned(const Sint16 &value,
-                                                        const OFBool checkValue = OFTrue);
+                                                             const OFBool checkValue = OFTrue);
+
+  /** Set Double Float Real World Value First Value Mapped
+   *  @param  value Value to be set
+   *  @param  checkValue Check 'value'. Does nothing, only for consistency with
+   *          other set() functions.
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setDoubleFloatRealWorldValueFirstValueMapped(const Float64 value,
+                                                                  const OFBool checkValue = OFTrue);
+
+  /** Set Double Float Real World Value Last Value Mapped
+   *  @param  value Value to be set
+   *  @param  checkValue Check 'value'. Does nothing, only for consistency with
+   *          other set() functions.
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setDoubleFloatRealWorldValueLastValueMapped(const Float64 value,
+                                                                  const OFBool checkValue = OFTrue);
 
   /** Set Real World Value Intercept
    *  @param  value Value to be set
@@ -316,7 +362,7 @@ public:
    *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
-  virtual OFCondition setRealWorldValueIntercept(const Float64& value,
+  virtual OFCondition setRealWorldValueIntercept(const Float64 value,
                                                  const OFBool checkValue = OFTrue);
 
   /** Set Real World Value Slope
@@ -325,7 +371,7 @@ public:
    *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
-  virtual OFCondition setRealWorldValueSlope(const Float64& value,
+  virtual OFCondition setRealWorldValueSlope(const Float64 value,
                                              const OFBool checkValue = OFTrue);
 
   /** Set Real World Value LUT Data
@@ -367,7 +413,8 @@ private:
   /// Measurement Units Code Sequence
   CodeSequenceMacro m_MeasurementUnitsCode;
 
-  /// TODO Content Item Macro for Quantity Definition Sequence
+  /// Quantity Definition Sequence
+  OFVector<ContentItemMacro*> m_QuantityDefinitionSequence;
 };
 
 #endif // FGREALWORLDVALUEMAPPING_H
diff --git a/dcmfg/include/dcmtk/dcmfg/fgtypes.h b/dcmfg/include/dcmtk/dcmfg/fgtypes.h
index 451cfe7..22bdfca 100644
--- a/dcmfg/include/dcmtk/dcmfg/fgtypes.h
+++ b/dcmfg/include/dcmtk/dcmfg/fgtypes.h
@@ -48,7 +48,7 @@ extern DCMTK_DCMFG_EXPORT OFLogger DCM_dcmfgLogger;
  *  constant definitions  *
  *-----------------------*/
 
-/* Specific error conditions for module dcmfg.(TODO)
+/* Specific error conditions for module dcmfg.
  * These error codes can be used in addition to the general purpose
  * codes defined in module dcmdata.
  */
@@ -120,10 +120,14 @@ public:
     EFG_FRAMEPIXELSHIFT,
     /// "Frame VOI LUT" or "Frame VOI LUT with LUT" Macro (share same starting sequence)
     EFG_FRAMEVOILUTMETA,
+    /// Identity Pixel Value Transformation
+    EFG_IDENTITYPIXELVALUETRANSFORMATION,
     /// Image Data Type
     EFG_IMAGEDATATYPE,
     /// Irradiation Event Identification
     EFG_IRRADIATIONEVENTIDENT,
+    /// Parametric Map Frame Type
+    EFG_PARAMETRICMAPFRAMETYPE,
     /// Patient Orientation in Frame
     EFG_PATIENTORIENTINFRAME,
     /// Patient Physiological State
diff --git a/dcmfg/include/dcmtk/dcmfg/stack.h b/dcmfg/include/dcmtk/dcmfg/stack.h
index 6e3e107..a04b84a 100644
--- a/dcmfg/include/dcmtk/dcmfg/stack.h
+++ b/dcmfg/include/dcmtk/dcmfg/stack.h
@@ -76,8 +76,6 @@ public:
    */
   virtual ~FGStack();
 
-  // TODO add sorted iterators using views, for example
-
   /** Return const iterator to first frame (not sorted after stack position)
    *  @return Const iterator to first frame
    */
@@ -137,8 +135,6 @@ private:
   /// More than one frame can have the same in-stack position
   OFMap<Uint32, Uint32> m_FrameNumbers;
 
-  // TODO Maybe add a redundant data structures mapping in-stack positions
-  // to frame numbers in order to enable fast access?
 };
 
 #endif // STACKREADER_H
diff --git a/dcmfg/libsrc/CMakeLists.txt b/dcmfg/libsrc/CMakeLists.txt
index c37d868..6d2afe3 100644
--- a/dcmfg/libsrc/CMakeLists.txt
+++ b/dcmfg/libsrc/CMakeLists.txt
@@ -5,10 +5,13 @@ DCMTK_ADD_LIBRARY(dcmfg
   fgderimg
   fgfact
   fgfracon
+  fgframeanatomy
   fgframevoilut
+  fgidentpixeltransform
   fgimagedatatype
   fginterface
   fgpixmsr
+  fgparametricmapframetype
   fgplanor
   fgplanorvol
   fgplanpo
diff --git a/dcmfg/libsrc/Makefile.dep b/dcmfg/libsrc/Makefile.dep
index 62c13c9..8617090 100644
--- a/dcmfg/libsrc/Makefile.dep
+++ b/dcmfg/libsrc/Makefile.dep
@@ -429,6 +429,8 @@ fgfact.o: fgfact.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -459,11 +461,9 @@ fgfact.o: fgfact.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -494,13 +494,18 @@ fgfact.o: fgfact.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmfg/fgbase.h \
- ../include/dcmtk/dcmfg/fgfracon.h ../include/dcmtk/dcmfg/fgframevoilut.h \
+ ../include/dcmtk/dcmfg/fgfracon.h \
+ ../include/dcmtk/dcmfg/fgframeanatomy.h \
+ ../include/dcmtk/dcmfg/fgframevoilut.h \
+ ../include/dcmtk/dcmfg/fgidentpixeltransform.h \
  ../include/dcmtk/dcmfg/fgimagedatatype.h \
+ ../include/dcmtk/dcmfg/fgparametricmapframetype.h \
  ../include/dcmtk/dcmfg/fgpixmsr.h ../include/dcmtk/dcmfg/fgplanor.h \
  ../include/dcmtk/dcmfg/fgplanorvol.h ../include/dcmtk/dcmfg/fgplanpo.h \
  ../include/dcmtk/dcmfg/fgplanposvol.h ../include/dcmtk/dcmfg/fgseg.h \
  ../include/dcmtk/dcmfg/fgusimagedescription.h \
- ../include/dcmtk/dcmfg/fgrealworldvaluemapping.h
+ ../include/dcmtk/dcmfg/fgrealworldvaluemapping.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodcontentitemmacro.h
 fgfracon.o: fgfracon.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -561,6 +566,8 @@ fgfracon.o: fgfracon.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -590,11 +597,9 @@ fgfracon.o: fgfracon.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -623,6 +628,131 @@ fgfracon.o: fgfracon.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgbase.h ../include/dcmtk/dcmfg/fgtypes.h \
  ../include/dcmtk/dcmfg/fgdefine.h
+fgframeanatomy.o: fgframeanatomy.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmfg/fgframeanatomy.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
+ ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
+ ../../dcmiod/include/dcmtk/dcmiod/cielabutil.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmfg/fgbase.h \
+ ../include/dcmtk/dcmfg/fgtypes.h ../include/dcmtk/dcmfg/fgdefine.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
 fgframevoilut.o: fgframevoilut.cc \
  ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
@@ -684,6 +814,8 @@ fgframevoilut.o: fgframevoilut.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -714,11 +846,132 @@ fgframevoilut.o: fgframevoilut.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmfg/fgdefine.h
+fgidentpixeltransform.o: fgidentpixeltransform.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
+ ../../dcmiod/include/dcmtk/dcmiod/cielabutil.h \
+ ../include/dcmtk/dcmfg/fgidentpixeltransform.h \
+ ../include/dcmtk/dcmfg/fgbase.h ../include/dcmtk/dcmfg/fgtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -807,6 +1060,8 @@ fgimagedatatype.o: fgimagedatatype.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -837,11 +1092,9 @@ fgimagedatatype.o: fgimagedatatype.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -933,6 +1186,8 @@ fginterface.o: fginterface.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
@@ -960,11 +1215,9 @@ fginterface.o: fginterface.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -994,6 +1247,129 @@ fginterface.o: fginterface.cc \
  ../include/dcmtk/dcmfg/fgtypes.h ../include/dcmtk/dcmfg/fgdefine.h \
  ../include/dcmtk/dcmfg/fg.h ../include/dcmtk/dcmfg/fgbase.h \
  ../include/dcmtk/dcmfg/fgfact.h
+fgparametricmapframetype.o: fgparametricmapframetype.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
+ ../../dcmiod/include/dcmtk/dcmiod/cielabutil.h \
+ ../include/dcmtk/dcmfg/fgparametricmapframetype.h \
+ ../include/dcmtk/dcmfg/fgbase.h ../include/dcmtk/dcmfg/fgtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmfg/fgdefine.h
 fgpixmsr.o: fgpixmsr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmfg/fgpixmsr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1300,6 +1676,8 @@ fgplanorvol.o: fgplanorvol.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -1330,11 +1708,9 @@ fgplanorvol.o: fgplanorvol.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -1544,6 +1920,8 @@ fgplanposvol.o: fgplanposvol.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -1574,11 +1952,9 @@ fgplanposvol.o: fgplanposvol.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -1730,6 +2106,7 @@ fgrealworldvaluemapping.o: fgrealworldvaluemapping.cc \
  ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
  ../../dcmiod/include/dcmtk/dcmiod/cielabutil.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodcontentitemmacro.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
 fgseg.o: fgseg.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2048,6 +2425,8 @@ fgusimagedescription.o: fgusimagedescription.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -2078,11 +2457,9 @@ fgusimagedescription.o: fgusimagedescription.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -2185,6 +2562,8 @@ stackinterface.o: stackinterface.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -2215,11 +2594,9 @@ stackinterface.o: stackinterface.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
diff --git a/dcmfg/libsrc/fg.cc b/dcmfg/libsrc/fg.cc
index c7fe5da..b97d2f1 100644
--- a/dcmfg/libsrc/fg.cc
+++ b/dcmfg/libsrc/fg.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -53,7 +53,8 @@ FGBase* FunctionalGroups::find(const DcmFGTypes::E_FGType fgType)
 {
   FGBase* group = NULL;
   FunctionalGroups::iterator it = m_groups.find(fgType);
-  if ( it != m_groups.end() )
+  FunctionalGroups::iterator done = m_groups.end();
+  if ( it != done)
   {
     group = (*it).second;
   }
diff --git a/dcmfg/libsrc/fgbase.cc b/dcmfg/libsrc/fgbase.cc
index 0e58526..3cb43c3 100644
--- a/dcmfg/libsrc/fgbase.cc
+++ b/dcmfg/libsrc/fgbase.cc
@@ -162,7 +162,6 @@ OFCondition FGUnknown::write(DcmItem& item)
 
 OFCondition FGUnknown::check() const
 {
-  // TODO
   return EC_Normal;
 }
 
diff --git a/dcmfg/libsrc/fgderimg.cc b/dcmfg/libsrc/fgderimg.cc
index e8776da..c517ea6 100644
--- a/dcmfg/libsrc/fgderimg.cc
+++ b/dcmfg/libsrc/fgderimg.cc
@@ -157,8 +157,15 @@ void FGDerivationImage::clearData()
 
 OFCondition FGDerivationImage::check() const
 {
-  // TODO
-  return EC_Normal;
+  OFCondition result;
+  OFVector<DerivationImageItem*>::const_iterator it = m_DerivationImageItems.begin();
+  while ( (it != m_DerivationImageItems.end()) && result.good() )
+  {
+    result = (*it)->check();
+    it++;
+  }
+
+  return result;
 }
 
 DerivationImageItem& DerivationImageItem::operator=(const DerivationImageItem& rhs)
@@ -243,7 +250,7 @@ OFCondition FGDerivationImage::read(DcmItem& item)
 
 OFCondition FGDerivationImage::write(DcmItem& item)
 {
-  OFCondition result = EC_Normal;
+  OFCondition result = check();
   DcmIODUtil::writeSubSequence<OFVector<DerivationImageItem*> >
   ( result,
     DCM_DerivationImageSequence,
@@ -288,8 +295,13 @@ void SourceImageItem::clearData()
 
 OFCondition SourceImageItem::check() const
 {
-  // TODO
-  return EC_Normal;
+  OFCondition result = OFconst_cast(ImageSOPInstanceReferenceMacro*, &m_ImageSOPInstanceReference)->check();
+  if (result.bad())
+  {
+    return result;
+  }
+
+  return OFconst_cast(CodeSequenceMacro*, &m_PurposeOfReferenceCode)->check();
 }
 
 
@@ -351,7 +363,7 @@ OFCondition SourceImageItem::write(DcmItem& itemOfSourceImageSequence)
 }
 
 
-/* -- Class DerivationImages Implementation -- */
+/* -- Class DerivationImageItem Implementation -- */
 
 DerivationImageItem::DerivationImageItem()
   : m_DerivationDescription(DCM_DerivationDescription),
@@ -459,10 +471,28 @@ int DerivationImageItem::compare(const DerivationImageItem& rhs) const
 
 OFCondition DerivationImageItem::check() const
 {
-  // TODO
-  return EC_Normal;
-}
+  if (m_DerivationCodeItems.size() == 0)
+  {
+    DCMFG_ERROR("Derivation Code Sequence in Derivation Image Functional Group Macro must have one or more items");
+    return FG_EC_InvalidData;
+  }
 
+  OFCondition result;
+  OFVector<CodeSequenceMacro*>::const_iterator it = m_DerivationCodeItems.begin();
+  while (it != m_DerivationCodeItems.end() && result.good())
+  {
+    result = (*it)->check();
+    it++;
+  }
+
+  OFVector<SourceImageItem*>::const_iterator ref = m_SourceImageItems.begin();
+  while ((ref != m_SourceImageItems.end()) && result.good())
+  {
+    result = (*ref)->check();
+    ref++;
+  }
+  return result;
+}
 
 
 DerivationImageItem::~DerivationImageItem()
@@ -475,17 +505,41 @@ OFCondition DerivationImageItem::addSourceImageItem(const OFString& file,
                                                     const CodeSequenceMacro& purposeOfReference,
                                                     SourceImageItem*& resultSourceImageItem)
 {
+  DcmFileFormat dcmff;
+  DcmDataset *dataset = NULL;
+  OFCondition result = dcmff.loadFile(file.c_str());
+  if (result.bad())
+  {
+    DCMFG_ERROR("Could not load file " << file << ": " << result.text());
+    return result;
+  }
+  dataset = dcmff.getDataset();
+  return addSourceImageItem(dataset, purposeOfReference, resultSourceImageItem);
+}
+
+
+OFCondition DerivationImageItem::addSourceImageItem(DcmDataset *dataset,
+                                                    const CodeSequenceMacro& purposeOfReference,
+                                                    SourceImageItem*& resultSourceImageItem)
+{
   // Create new source image item
   SourceImageItem *item = new SourceImageItem();
   if (item == NULL)
   {
     return EC_MemoryExhausted;
   }
+
+  // check code validity
+  if ( OFconst_cast(CodeSequenceMacro*, &purposeOfReference)->check().bad() )
+  {
+    DCMFG_ERROR("Purpose of Reference code within item of Derivation Image Sequence is invalid");
+    return FG_EC_InvalidData;
+  }
+
   item->getPurposeOfReferenceCode() = purposeOfReference;
-  // TODO: Check code for completeness, and context group?
   resultSourceImageItem = NULL;
   OFString sopClass, sopInstance, ts;
-  OFCondition result = DcmDataUtil::getSOPInstanceFromFile(file, sopClass, sopInstance, ts /*ignored*/);
+  OFCondition result = DcmDataUtil::getSOPInstanceFromDataset(dataset, EXS_Unknown, sopClass, sopInstance, ts /*ignored*/);
   {
     if ( result.good() ) result = item->getImageSOPInstanceReference().setReferencedSOPClassUID(sopClass);
     if ( result.good() ) result = item->getImageSOPInstanceReference().setReferencedSOPInstanceUID(sopInstance);
@@ -495,6 +549,11 @@ OFCondition DerivationImageItem::addSourceImageItem(const OFString& file,
     m_SourceImageItems.push_back(item);
     resultSourceImageItem = item;
   }
+  else
+  {
+    delete item;
+  }
+
   return result;
 }
 
@@ -504,11 +563,36 @@ OFCondition DerivationImageItem::addSourceImageItems(const OFVector< OFString >&
                                                      OFVector<SourceImageItem*>& resultSourceImageItems,
                                                      const OFBool skipErrors)
 {
-  // Add files
+  DcmFileFormat dcmff;
   OFCondition result;
+  DcmDataset *dataset = NULL;
+  OFVector<DcmDataset*> datasets;
   OFVector<OFString>::const_iterator it = files.begin();
   while (it != files.end())
   {
+    result = dcmff.loadFile((*it).c_str());
+    if (result.bad())
+    {
+      DCMFG_ERROR("Could not load file " << (*it) << ": " << result.text());
+      return result;
+    }
+    dataset = dcmff.getDataset();
+    datasets.push_back(dataset);
+    it++;
+  }
+  return addSourceImageItems(datasets, purposeOfReference, resultSourceImageItems, skipErrors);
+}
+
+
+OFCondition DerivationImageItem::addSourceImageItems(const OFVector<DcmDataset*>& datasets,
+                                                     const CodeSequenceMacro& purposeOfReference,
+                                                     OFVector<SourceImageItem*>& resultSourceImageItems,
+                                                     const OFBool skipErrors)
+  {
+  OFCondition result;
+  OFVector<DcmDataset*>::const_iterator it = datasets.begin();
+  while (it != datasets.end())
+  {
     SourceImageItem* resultItem = NULL;
     result = addSourceImageItem((*it), purposeOfReference, resultItem);
     if (result.good())
diff --git a/dcmfg/libsrc/fgfact.cc b/dcmfg/libsrc/fgfact.cc
index 6285a31..c8fcd30 100644
--- a/dcmfg/libsrc/fgfact.cc
+++ b/dcmfg/libsrc/fgfact.cc
@@ -24,8 +24,11 @@
 #include "dcmtk/dcmfg/fgfact.h"
 #include "dcmtk/dcmfg/fgderimg.h"
 #include "dcmtk/dcmfg/fgfracon.h"
+#include "dcmtk/dcmfg/fgframeanatomy.h"
 #include "dcmtk/dcmfg/fgframevoilut.h"
+#include "dcmtk/dcmfg/fgidentpixeltransform.h"
 #include "dcmtk/dcmfg/fgimagedatatype.h"
+#include "dcmtk/dcmfg/fgparametricmapframetype.h"
 #include "dcmtk/dcmfg/fgpixmsr.h"
 #include "dcmtk/dcmfg/fgplanor.h"
 #include "dcmtk/dcmfg/fgplanorvol.h"
@@ -62,11 +65,18 @@ FGBase* FGFactory::create(const DcmFGTypes::E_FGType fgtype)
     case DcmFGTypes::EFG_PIXELMEASURES:
       return new FGPixelMeasures();
       break;
+    case DcmFGTypes::EFG_FRAMEANATOMY:
+      return new FGFrameAnatomy();
+      break;
     case DcmFGTypes::EFG_FRAMECONTENT:
       return new FGFrameContent();
       break;
     case DcmFGTypes::EFG_FRAMEVOILUTMETA:      // Frame VOI LUT and Frame VOI LUT with LUT
       return new FGFrameVOILUT();
+      break;
+    case DcmFGTypes::EFG_PARAMETRICMAPFRAMETYPE:
+      return new FGParametricMapFrameType;
+      break;
     case DcmFGTypes::EFG_PLANEPOSPATIENT:
       return new FGPlanePosPatient();
       break;
@@ -80,6 +90,9 @@ FGBase* FGFactory::create(const DcmFGTypes::E_FGType fgtype)
     case DcmFGTypes::EFG_DERIVATIONIMAGE:
       return new FGDerivationImage();
       break;
+    case DcmFGTypes::EFG_IDENTITYPIXELVALUETRANSFORMATION:
+      return new FGIdentityPixelValueTransformation();
+      break;
     case DcmFGTypes::EFG_IMAGEDATATYPE:
       return new FGImageDataType();
       break;
@@ -93,7 +106,6 @@ FGBase* FGFactory::create(const DcmFGTypes::E_FGType fgtype)
       return new FGUSImageDescription();
       break;
     case DcmFGTypes::EFG_CARDIACSYNC:
-    case DcmFGTypes::EFG_FRAMEANATOMY:
     case DcmFGTypes::EFG_PIXELVALUETRANSMETA:  // Pixel Value Transformation Macro or Identity Pixel Value Transformation Macro
     case DcmFGTypes::EFG_CONTRASTBOLUSUSAGE:
     case DcmFGTypes::EFG_PIXELINTENSITYRELLUT:
diff --git a/dcmfg/libsrc/fgfracon.cc b/dcmfg/libsrc/fgfracon.cc
index 0d30731..e60124f 100644
--- a/dcmfg/libsrc/fgfracon.cc
+++ b/dcmfg/libsrc/fgfracon.cc
@@ -91,7 +91,7 @@ void FGFrameContent::clearData()
 
 OFCondition FGFrameContent::check() const
 {
-  // TODO
+  // Maybe add checks later
   return EC_Normal;
 }
 
@@ -315,7 +315,7 @@ OFCondition FGFrameContent::setRespiratoryCyclePosition(const OFString& value,
 }
 
 OFCondition FGFrameContent::setDimensionIndexValues(const Uint32& value,
-                                                    const unsigned int pos,
+                                                    const unsigned int dim,
                                                     const OFBool checkValue)
 {
   // no other meaningful checks possible in this context
@@ -325,7 +325,7 @@ OFCondition FGFrameContent::setDimensionIndexValues(const Uint32& value,
     DCMFG_ERROR("Cannot set dimension index value 0, must be >= 1)");
     return EC_InvalidValue;
   }
-  return m_DimensionIndexValues.putUint32(value, pos);
+  return m_DimensionIndexValues.putUint32(value, dim);
 }
 
 OFCondition FGFrameContent::setTemporalPositionIndex(const Uint32& value,
diff --git a/dcmfg/libsrc/fgframeanatomy.cc b/dcmfg/libsrc/fgframeanatomy.cc
new file mode 100644
index 0000000..1a4cae0
--- /dev/null
+++ b/dcmfg/libsrc/fgframeanatomy.cc
@@ -0,0 +1,203 @@
+/*
+ *
+ *  Copyright (C) 2015-2017, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmfg
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: Class for managing Frame Anatomy Functional Group
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmfg/fgframeanatomy.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
+#include "dcmtk/dcmiod/iodutil.h"
+
+
+FGFrameAnatomy::FGFrameAnatomy()
+: FGBase(DcmFGTypes::EFG_FRAMEANATOMY),
+  m_FrameLaterality(LATERALITY_UNDEFINED),
+  m_Anatomy("1" /* Use Mandatory version of macro, i.e. make "Anatomic Region Sequence type 1" */)
+{
+}
+
+
+FGFrameAnatomy::~FGFrameAnatomy()
+{
+  // nothing to do
+}
+
+
+FGBase* FGFrameAnatomy::clone() const
+{
+  FGFrameAnatomy* copy = new FGFrameAnatomy();
+  if (copy)
+  {
+    copy->m_FrameLaterality= this->m_FrameLaterality;
+    copy->m_Anatomy = this->m_Anatomy;
+  }
+  return copy;
+}
+
+
+void FGFrameAnatomy::clearData()
+{
+  m_FrameLaterality = LATERALITY_UNDEFINED;
+  m_Anatomy.clearData();
+}
+
+
+OFCondition FGFrameAnatomy::check() const
+{
+  if (!isLateralityValid(m_FrameLaterality))
+  {
+    DCMFG_ERROR("Frame Laterality invalid");
+    return FG_EC_InvalidData;
+  }
+  return OFconst_cast(GeneralAnatomyMacro*, &m_Anatomy)->check();
+}
+
+
+int FGFrameAnatomy::compare(const FGBase& rhs) const
+{
+  int result = FGBase::compare(rhs);
+  if (result != 0)
+    return result;
+
+  const FGFrameAnatomy* myRhs = OFstatic_cast(const FGFrameAnatomy*, &rhs);
+
+  // Compare all elements
+  if (m_FrameLaterality != myRhs->m_FrameLaterality)
+    return 1;
+
+  return m_Anatomy.compare(myRhs->m_Anatomy);
+}
+
+
+/// Read from Frame Content Sequence
+OFCondition FGFrameAnatomy::read(DcmItem& item)
+{
+  clearData();
+
+  OFCondition result;
+  DcmItem* seqItem = NULL;
+  result = getItemFromFGSequence(item, DCM_FrameAnatomySequence, 0, seqItem);
+  if (result.bad())
+    return result;
+
+  DcmCodeString elem(DCM_FrameLaterality);
+  DcmIODUtil::getAndCheckElementFromDataset(*seqItem, elem,   "1", "1", "FrameAnatomyMacro");
+  OFString val;
+  elem.getOFStringArray(val);
+  m_FrameLaterality = str2Laterality(val);
+
+  m_Anatomy.read(*seqItem);
+
+  return EC_Normal;
+}
+
+
+OFCondition FGFrameAnatomy::write(DcmItem& item)
+{
+  OFCondition result = check();
+  if (result.good())
+  {
+    DcmItem* seqItem = NULL;
+    result = createNewFGSequence(item, DCM_FrameAnatomySequence, 0, seqItem);
+    if (result.good())
+    {
+      OFString lat = laterality2Str(m_FrameLaterality);
+      result = seqItem->putAndInsertOFStringArray(DCM_FrameLaterality, lat);
+      if (result.good())
+      {
+        result = m_Anatomy.write(*seqItem);
+      }
+    }
+  }
+
+  return result;
+}
+
+
+OFCondition FGFrameAnatomy::getLaterality(FGFrameAnatomy::LATERALITY& value)
+{
+  value = m_FrameLaterality;
+  return EC_Normal;
+}
+
+
+GeneralAnatomyMacro& FGFrameAnatomy::getAnatomy()
+{
+  return m_Anatomy;
+}
+
+
+OFCondition FGFrameAnatomy::setLaterality(const FGFrameAnatomy::LATERALITY& value)
+{
+  if (isLateralityValid(value))
+  {
+    m_FrameLaterality = value;
+    return EC_Normal;
+  }
+  else
+  {
+    return FG_EC_InvalidData;
+  }
+}
+
+
+OFString FGFrameAnatomy::laterality2Str(const FGFrameAnatomy::LATERALITY lat)
+{
+  switch(lat)
+  {
+    case LATERALITY_INVALID: return "Invalid";
+    case LATERALITY_L: return "L";
+    case LATERALITY_R: return "R";
+    case LATERALITY_BOTH: return "B";
+    case LATERALITY_UNDEFINED: return "Undefined";
+    case LATERALITY_UNPAIRED: return "U";
+    default: return "Invalid";
+  }
+}
+
+
+FGFrameAnatomy::LATERALITY FGFrameAnatomy::str2Laterality(const OFString& lat)
+{
+  if (lat == "L")
+    return LATERALITY_L;
+  if (lat == "R")
+    return LATERALITY_R;
+  if (lat == "U")
+    return LATERALITY_UNPAIRED;
+  if (lat == "B")
+    return LATERALITY_BOTH;
+
+  if (lat.empty())
+    return LATERALITY_UNDEFINED;
+
+  return LATERALITY_INVALID;
+
+}
+
+
+OFBool FGFrameAnatomy::isLateralityValid(const FGFrameAnatomy::LATERALITY lat)
+{
+  if ( (lat == LATERALITY_L) || (lat == LATERALITY_R) || (lat == LATERALITY_BOTH) ||
+       (lat == LATERALITY_UNPAIRED) )
+    return OFTrue;
+  else
+    return OFFalse;
+}
+
diff --git a/dcmfg/libsrc/fgframevoilut.cc b/dcmfg/libsrc/fgframevoilut.cc
index 3b22012..2b04ac0 100644
--- a/dcmfg/libsrc/fgframevoilut.cc
+++ b/dcmfg/libsrc/fgframevoilut.cc
@@ -67,7 +67,7 @@ void FGFrameVOILUT::clearData()
 
 OFCondition FGFrameVOILUT::check() const
 {
-  // TODO
+  // For now attribute-based checks in read() and write() are sufficient
   return EC_Normal;
 }
 
diff --git a/dcmfg/libsrc/fgidentpixeltransform.cc b/dcmfg/libsrc/fgidentpixeltransform.cc
new file mode 100644
index 0000000..ef5f6d4
--- /dev/null
+++ b/dcmfg/libsrc/fgidentpixeltransform.cc
@@ -0,0 +1,229 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmpmap
+ *
+ *  Author: Jan Schlamelcher
+ *
+ *  Purpose: Class for managing the Identity Pixel Value Transformation
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
+#include "dcmtk/dcmiod/iodutil.h"
+#include "dcmtk/dcmfg/fgidentpixeltransform.h"
+
+FGIdentityPixelValueTransformation::FGIdentityPixelValueTransformation()
+: FGBase(DcmFGTypes::EFG_UNDEFINED)
+, m_RescaleIntercept(DCM_RescaleIntercept)
+, m_RescaleSlope(DCM_RescaleSlope)
+, m_RescaleType(DCM_RescaleType)
+{
+  m_RescaleIntercept.putOFStringArray("0");
+  m_RescaleSlope.putOFStringArray("1");
+  m_RescaleType.putOFStringArray("US");
+}
+
+
+FGIdentityPixelValueTransformation::~FGIdentityPixelValueTransformation()
+{
+
+}
+
+
+OFCondition FGIdentityPixelValueTransformation::check() const
+{
+  Float64 rs, ri;
+  rs = ri = 0;
+  OFString rt;
+  OFBool ok = OFTrue;
+  if (OFconst_cast(DcmDecimalString*, &m_RescaleIntercept)->getFloat64(ri).good())
+  {
+    if (ri != 0)
+    {
+      DCMFG_ERROR("Rescale Intercept in Identity Pixel Value Transformation FG must be 0 but is set to " << ri);
+      ok = OFFalse;
+    }
+  }
+  else
+  {
+    DCMFG_ERROR("Invalid or no value for Rescale Intercept in Identity Pixel Value Transformation FG (0 is the only valid value");
+    ok = OFFalse;
+  }
+
+  if (OFconst_cast(DcmDecimalString*, &m_RescaleSlope)->getFloat64(rs).good())
+  {
+    if (rs != 1)
+    {
+      DCMFG_ERROR("Rescale Slope in Identity Pixel Value Transformation FG must be 1 but is set to " << rs);
+      ok = OFFalse;
+    }
+  }
+  else
+  {
+    DCMFG_ERROR("Invalid or no value for Rescale Slope in Identity Pixel Value Transformation FG (1 is the only valid value");
+    ok = OFFalse;
+  }
+
+  if (OFconst_cast(DcmLongString*, &m_RescaleType)->getOFStringArray(rt).good())
+  {
+    if (rt != "US")
+    {
+      DCMFG_ERROR("Rescale Type in Identity Pixel Value Transformation FG must be \"US\" but is set to " << rt);
+      ok = OFFalse;
+    }
+  }
+  else
+  {
+    DCMFG_ERROR("Invalid or no value for Rescale Type in Identity Pixel Value Transformation FG (\"US\" is the only valid value");
+    ok = OFFalse;
+  }
+  if (ok)
+  {
+    return EC_Normal;
+  }
+  else
+  {
+    return FG_EC_InvalidData;
+  }
+}
+
+
+void FGIdentityPixelValueTransformation::clearData()
+{
+  m_RescaleIntercept.clear();
+  m_RescaleSlope.clear();
+  m_RescaleType.clear();
+}
+
+
+FGBase* FGIdentityPixelValueTransformation::clone() const
+{
+  if(FGIdentityPixelValueTransformation* copy = new FGIdentityPixelValueTransformation)
+  {
+    copy->m_RescaleIntercept = m_RescaleIntercept;
+    copy->m_RescaleSlope = m_RescaleSlope;
+    copy->m_RescaleType = m_RescaleType;
+    return copy;
+  }
+  return OFnullptr;
+}
+
+
+OFCondition FGIdentityPixelValueTransformation::read(DcmItem& item)
+{
+  clearData();
+
+  DcmItem* seqItem;
+  OFCondition result;
+
+  seqItem = OFnullptr;
+  result = getItemFromFGSequence(item, DCM_PixelValueTransformationSequence, 0, seqItem);
+  if(result.bad())
+    return result;
+  DcmIODUtil::getAndCheckElementFromDataset(*seqItem, m_RescaleIntercept, "1", "1", "Identity Pixel Value Transformation");
+  DcmIODUtil::getAndCheckElementFromDataset(*seqItem, m_RescaleSlope, "1", "1", "Identity Pixel Value Transformation");
+  DcmIODUtil::getAndCheckElementFromDataset(*seqItem, m_RescaleType, "1", "1", "Identity Pixel Value Transformation");
+
+  return EC_Normal;
+}
+
+
+OFCondition FGIdentityPixelValueTransformation::write(DcmItem& item)
+{
+  DcmItem* seqItem;
+  DCMFG_DEBUG("Identity Pixel Value Transformation Macro: Fixing values for Rescale Slope, Intercept and Type to enumerated values '1', '0' and 'US'");
+  m_RescaleSlope.putOFStringArray("1");
+  m_RescaleIntercept.putOFStringArray("0");
+  m_RescaleType.putOFStringArray("US");
+
+  seqItem = OFnullptr;
+  OFCondition result = createNewFGSequence(item, DCM_PixelValueTransformationSequence, 0, seqItem);
+  if(result.bad())
+    return result;
+  DcmIODUtil::copyElementToDataset(result, *seqItem, m_RescaleIntercept, "1", "1", "Identity Pixel Value Transformation");
+  DcmIODUtil::copyElementToDataset(result, *seqItem, m_RescaleSlope, "1", "1", "Identity Pixel Value Transformation");
+  DcmIODUtil::copyElementToDataset(result, *seqItem, m_RescaleType, "1", "1", "Identity Pixel Value Transformation");
+
+  return result;
+}
+
+
+int FGIdentityPixelValueTransformation::compare(const FGBase& rhs) const
+{
+  int result = FGBase::compare(rhs);
+  if(result == 0)
+  {
+    const FGIdentityPixelValueTransformation* myRhs = OFstatic_cast(const FGIdentityPixelValueTransformation*, &rhs);
+
+    // Compare all elements
+    result = m_RescaleIntercept.compare(myRhs->m_RescaleIntercept);
+    result = m_RescaleSlope.compare(myRhs->m_RescaleSlope);
+    result = m_RescaleType.compare(myRhs->m_RescaleType);
+  }
+
+  return result;
+}
+
+
+OFCondition FGIdentityPixelValueTransformation::getRescaleIntercept(OFString &value,
+                                                                    const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromElement(m_RescaleIntercept, value, pos);
+}
+
+
+OFCondition FGIdentityPixelValueTransformation::getRescaleSlope(OFString &value,
+                                                                const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromElement(m_RescaleSlope, value, pos);
+}
+
+
+OFCondition FGIdentityPixelValueTransformation::getRescaleType(OFString &value,
+                                                               const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromElement(m_RescaleType, value, pos);
+}
+
+
+OFCondition FGIdentityPixelValueTransformation::setRescaleIntercept(const OFString &value,
+                                                                    const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_RescaleIntercept.putString(value.c_str());
+  return result;
+}
+
+
+OFCondition FGIdentityPixelValueTransformation::setRescaleSlope(const OFString &value,
+                                                                const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_RescaleSlope.putString(value.c_str());
+  return result;
+}
+
+
+OFCondition FGIdentityPixelValueTransformation::setRescaleType(const OFString &value,
+                                                               const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_RescaleType.putString(value.c_str());
+  return result;
+}
+
diff --git a/dcmfg/libsrc/fgimagedatatype.cc b/dcmfg/libsrc/fgimagedatatype.cc
index dc71962..af6ea14 100644
--- a/dcmfg/libsrc/fgimagedatatype.cc
+++ b/dcmfg/libsrc/fgimagedatatype.cc
@@ -74,7 +74,7 @@ void FGImageDataType::clearData()
 
 OFCondition FGImageDataType::check() const
 {
-  // TODO
+   // For now, checks in read() and write() are sufficient
   return EC_Normal;
 }
 
@@ -228,6 +228,19 @@ OFCondition FGImageDataType::write(DcmItem& item)
   {
     DcmIODUtil::copyElementToDataset(result, *seqItem, m_ZeroVelocityPixelValueUS, "1", "1C", "ImageDataTypeMacro");
   }
+  // Zero Velocity Pixel Value is required in case Data Type is TISSUE_VELOCITY,
+  // FLOW_VELOCITY or DIRECTION_POWER.
+  else
+  {
+    OFString val;
+    m_DataType.getOFStringArray(val);
+    if ( (val == "TISSUE_VELOCITY") || (val == "FLOW_VELOCITY") ||  (val == "DIRECTION_POWER") )
+    {
+      DCMFG_ERROR("Missing value for Zero Velocity Pixel Value (required if Data Type has" <<
+                  "the value TISSUE_VELOCITY, FLOW_VELOCITY or DIRECTION_POWER");
+      return FG_EC_InvalidData;
+    }
+  }
 
   return result;
 }
diff --git a/dcmfg/libsrc/fginterface.cc b/dcmfg/libsrc/fginterface.cc
index 0844711..c7c0802 100644
--- a/dcmfg/libsrc/fginterface.cc
+++ b/dcmfg/libsrc/fginterface.cc
@@ -250,11 +250,11 @@ OFCondition FGInterface::readPerFrameFG(DcmItem& dataset)
   }
 
   /* Read functional groups for each item (one per frame) */
-  for (size_t count = 0; count < numFrames; count++)
+  DcmItem *oneFrameItem = OFstatic_cast(DcmItem*, perFrame->nextInContainer(NULL));
+  Uint32 count = 0;
+  while (oneFrameItem != NULL)
   {
-    DcmItem* oneFrameItem = perFrame->getItem(count);
     OFauto_ptr<FunctionalGroups> perFrameGroups(new FunctionalGroups());
-    // FunctionalGroups* perFrameGroups = new FunctionalGroups();
     if (!oneFrameItem)
     {
       DCMFG_ERROR("Could not get functional group item for frame #" << count << " (internal error)");
@@ -278,6 +278,8 @@ OFCondition FGInterface::readPerFrameFG(DcmItem& dataset)
         DCMFG_ERROR("Could not read functional groups for frame #" << count << ": " << result.text());
       }
     }
+    oneFrameItem = OFstatic_cast(DcmItem*, perFrame->nextInContainer(oneFrameItem));
+    count++;
   }
   return EC_Normal; // for now we always return EC_Normal...
 }
@@ -353,7 +355,6 @@ OFCondition FGInterface::write(DcmItem& dataset)
 }
 
 
-// TODO: overload (templates?) to return correct derived class type?
 FGBase* FGInterface::getShared(const DcmFGTypes::E_FGType fgType)
 {
   return m_shared.find(fgType);
@@ -432,6 +433,25 @@ size_t FGInterface::deletePerFrame(const DcmFGTypes::E_FGType fgType)
 }
 
 
+size_t FGInterface::deleteFrame(const Uint32 frameNo)
+{
+  OFMap<Uint32, FunctionalGroups*>::iterator it = m_perFrame.find(frameNo);
+  if (it != m_perFrame.end())
+  {
+    if ( (*it).second )
+    {
+      FunctionalGroups::iterator fg = (*it).second->begin();
+      while (fg != (*it).second->end())
+      {
+        delete (*fg).second;
+        fg++;
+      }
+    }
+    m_perFrame.erase(it);
+  }
+  return OFFalse;
+}
+
 
 FunctionalGroups* FGInterface::getOrCreatePerFrameGroups(const Uint32 frameNo)
 {
@@ -512,7 +532,8 @@ OFCondition FGInterface::writeSharedFG(DcmItem& dataset)
   }
 
   FunctionalGroups::iterator it = m_shared.begin();
-  while ( (it != m_shared.end()) && result.good() )
+  FunctionalGroups::iterator end = m_shared.end();
+  while ( (it != end) && result.good() )
   {
     DCMFG_DEBUG("Writing shared group: " << DcmFGTypes::FGType2OFString((*it).second->getType()));
     result = (*it).second->write(*sharedFGItem);
@@ -623,10 +644,12 @@ OFBool FGInterface::check()
     // Every frame requires the FrameContent functional group, check "en passant"
     OFBool foundFrameContent = OFFalse;
     OFMap<Uint32, FunctionalGroups*>::iterator frameFG = m_perFrame.begin();
-    while (frameFG != m_perFrame.end())
+    OFMap<Uint32, FunctionalGroups*>::iterator end = m_perFrame.end();
+    while (frameFG != end)
     {
       FunctionalGroups::iterator group = (*frameFG).second->begin();
-      while (group !=  (*frameFG).second->end())
+      FunctionalGroups::iterator groupEnd = (*frameFG).second->end();
+      while (group != groupEnd)
       {
         // Check that per-frame group is not shared group at the same time
         DcmFGTypes::E_FGType groupType = group->second->getType();
@@ -660,7 +683,8 @@ OFBool FGInterface::check()
 
   // Check whether shared groups contain FGs that are only permitted per-frame
   FunctionalGroups::iterator it = m_shared.begin();
-  while (it != m_shared.begin())
+  FunctionalGroups::iterator end = m_shared.end();
+  while (it != end)
   {
     if ( (*it).second->getSharedType() == DcmFGTypes::EFGS_ONLYPERFRAME )
     {
diff --git a/dcmfg/libsrc/fgparametricmapframetype.cc b/dcmfg/libsrc/fgparametricmapframetype.cc
new file mode 100644
index 0000000..b60a57e
--- /dev/null
+++ b/dcmfg/libsrc/fgparametricmapframetype.cc
@@ -0,0 +1,145 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmfg
+ *
+ *  Author: Jan Schlamelcher
+ *
+ *  Purpose: Class for managing the Parametric Map Frame Type
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
+#include "dcmtk/dcmiod/iodutil.h"
+#include "dcmtk/dcmfg/fgparametricmapframetype.h"
+
+FGParametricMapFrameType::FGParametricMapFrameType()
+: FGBase(DcmFGTypes::EFG_PARAMETRICMAPFRAMETYPE)
+, m_FrameType(DCM_FrameType)
+{
+
+}
+
+FGParametricMapFrameType::~FGParametricMapFrameType()
+{
+
+}
+
+void FGParametricMapFrameType::clearData()
+{
+  m_FrameType.clear();
+}
+
+FGBase* FGParametricMapFrameType::clone() const
+{
+  if(FGParametricMapFrameType* copy = new FGParametricMapFrameType)
+  {
+    copy->m_FrameType = m_FrameType;
+    return copy;
+  }
+  return OFnullptr;
+}
+
+OFCondition FGParametricMapFrameType::read(DcmItem& item)
+{
+  clearData();
+
+  DcmItem* seqItem;
+  OFCondition result;
+
+  seqItem = OFnullptr;
+  result = getItemFromFGSequence(item, DCM_ParametricMapFrameTypeSequence, 0, seqItem);
+  if(result.bad())
+    return result;
+  DcmIODUtil::getAndCheckElementFromDataset(*seqItem, m_FrameType, "4", "1", "Parametric Map Frame Type");
+
+  return EC_Normal;
+}
+
+
+OFCondition FGParametricMapFrameType::write(DcmItem& item)
+{
+  OFCondition result = check();
+  if (result.good())
+  {
+    DcmItem* seqItem;
+    seqItem = OFnullptr;
+    result = createNewFGSequence(item, DCM_ParametricMapFrameTypeSequence, 0, seqItem);
+    if(result.good())
+    {
+      DcmIODUtil::copyElementToDataset(result, *seqItem, m_FrameType, "4", "1", "Parametric Map Frame Type");
+    }
+  }
+  return result;
+}
+
+
+int FGParametricMapFrameType::compare(const FGBase& rhs) const
+{
+  int result = FGBase::compare(rhs);
+  if(result == 0)
+  {
+    const FGParametricMapFrameType* myRhs = OFstatic_cast(const FGParametricMapFrameType*, &rhs);
+
+    // Compare all elements
+    result = m_FrameType.compare(myRhs->m_FrameType);
+  }
+
+  return result;
+}
+
+
+OFCondition FGParametricMapFrameType::check() const
+{
+  DcmCodeString myFrameType = m_FrameType;
+  OFCondition result = myFrameType.checkValue("4");
+  if (result.good())
+  {
+    OFString val;
+    myFrameType.getOFString(val, 0);
+    if (val == "DERIVED")
+    {
+      val.clear();
+      myFrameType.getOFString(val, 1);
+      if (val == "PRIMARY")
+      {
+        val.clear();
+        myFrameType.getOFString(val, 1);
+        return EC_Normal;
+      }
+      else
+        DCMFG_ERROR("Frame Type' 2nd value must be \"PRIMARY\" but is \"" << val << "\"");
+    }
+    else
+      DCMFG_ERROR("Frame Type 1st value must be \"DERIVED\" but is \"" << val << "\"");
+  }
+  return FG_EC_InvalidData;
+}
+
+
+OFCondition FGParametricMapFrameType::getFrameType(OFString &value,
+                                                   const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromElement(m_FrameType, value, pos);
+}
+
+
+OFCondition FGParametricMapFrameType::setFrameType(const OFString &value,
+                                                   const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "4") : EC_Normal;
+  if (result.good())
+    result = m_FrameType.putString(value.c_str());
+  return result;
+}
diff --git a/dcmfg/libsrc/fgpixmsr.cc b/dcmfg/libsrc/fgpixmsr.cc
index 9fa1eec..24bb4dd 100644
--- a/dcmfg/libsrc/fgpixmsr.cc
+++ b/dcmfg/libsrc/fgpixmsr.cc
@@ -64,7 +64,7 @@ void FGPixelMeasures::clearData()
 
 OFCondition FGPixelMeasures::check() const
 {
-  // TODO
+  // Checks in read() and write() are sufficient for now
   return EC_Normal;
 }
 
diff --git a/dcmfg/libsrc/fgplanor.cc b/dcmfg/libsrc/fgplanor.cc
index b46599d..49265b5 100644
--- a/dcmfg/libsrc/fgplanor.cc
+++ b/dcmfg/libsrc/fgplanor.cc
@@ -42,7 +42,7 @@ void FGPlaneOrientationPatient::clearData()
 
 OFCondition FGPlaneOrientationPatient::check() const
 {
-  // TODO
+  // Checks in read() and write() are sufficient for now
   return EC_Normal;
 }
 
diff --git a/dcmfg/libsrc/fgplanorvol.cc b/dcmfg/libsrc/fgplanorvol.cc
index d5c038f..eccea15 100644
--- a/dcmfg/libsrc/fgplanorvol.cc
+++ b/dcmfg/libsrc/fgplanorvol.cc
@@ -60,7 +60,7 @@ void FGPlaneOrientationVolume::clearData()
 
 OFCondition FGPlaneOrientationVolume::check() const
 {
-  // TODO
+  // Checks in read() and write() are sufficient for now
   return EC_Normal;
 }
 
diff --git a/dcmfg/libsrc/fgplanpo.cc b/dcmfg/libsrc/fgplanpo.cc
index 6fce31f..44fe208 100644
--- a/dcmfg/libsrc/fgplanpo.cc
+++ b/dcmfg/libsrc/fgplanpo.cc
@@ -71,7 +71,7 @@ void FGPlanePosPatient::clearData()
 
 OFCondition FGPlanePosPatient::check() const
 {
-  // TODO
+  // Checks in read() and write() are sufficient for now
   return EC_Normal;
 }
 
diff --git a/dcmfg/libsrc/fgplanposvol.cc b/dcmfg/libsrc/fgplanposvol.cc
index 00eaf46..4a88836 100644
--- a/dcmfg/libsrc/fgplanposvol.cc
+++ b/dcmfg/libsrc/fgplanposvol.cc
@@ -58,7 +58,7 @@ void FGPlanePositionVolume::clearData()
 
 OFCondition FGPlanePositionVolume::check() const
 {
-  // TODO
+  // Checks in read() and write() are sufficient for now
   return EC_Normal;
 }
 
diff --git a/dcmfg/libsrc/fgrealworldvaluemapping.cc b/dcmfg/libsrc/fgrealworldvaluemapping.cc
index a2e595a..08ba72e 100644
--- a/dcmfg/libsrc/fgrealworldvaluemapping.cc
+++ b/dcmfg/libsrc/fgrealworldvaluemapping.cc
@@ -64,7 +64,7 @@ void FGRealWorldValueMapping::clearData()
 
 OFCondition FGRealWorldValueMapping::check() const
 {
-  // TODO
+  // More checks checks for 1C conditions could be added
   return EC_Normal;
 }
 
@@ -122,7 +122,8 @@ OFVector< FGRealWorldValueMapping::RWVMItem* >& FGRealWorldValueMapping::getReal
 
 FGRealWorldValueMapping::RWVMItem::RWVMItem(IODComponent* parent)
 : IODComponent(parent),
-  m_MeasurementUnitsCode()
+  m_MeasurementUnitsCode(),
+  m_QuantityDefinitionSequence()
 {
   resetRules();
 }
@@ -132,33 +133,43 @@ FGRealWorldValueMapping::RWVMItem::RWVMItem(OFshared_ptr< DcmItem > item,
                                             OFshared_ptr< IODRules > rules,
                                             IODComponent* parent)
 : IODComponent(item, rules, parent),
-  m_MeasurementUnitsCode()
+  m_MeasurementUnitsCode(),
+  m_QuantityDefinitionSequence()
 {
   resetRules();
 }
 
 
-FGRealWorldValueMapping::RWVMItem* FGRealWorldValueMapping::RWVMItem::clone()
+FGRealWorldValueMapping::RWVMItem::RWVMItem(const FGRealWorldValueMapping::RWVMItem& rhs)
+: IODComponent(rhs)
 {
-  FGRealWorldValueMapping::RWVMItem* mapping = new FGRealWorldValueMapping::RWVMItem(*this);
-  if (mapping)
+  m_MeasurementUnitsCode = rhs.m_MeasurementUnitsCode;
+  OFVector<ContentItemMacro*>::const_iterator it = rhs.m_QuantityDefinitionSequence.begin();
+  while (it != rhs.m_QuantityDefinitionSequence.end())
   {
-    // We do not have a copy constructor or clone function on IODComponent
-    OFString code, meaning, scheme, version;
-    m_MeasurementUnitsCode.getCodeValue(code);
-    m_MeasurementUnitsCode.getCodeMeaning(meaning);
-    m_MeasurementUnitsCode.getCodingSchemeDesignator(scheme);
-    m_MeasurementUnitsCode.getCodingSchemeVersion(version);
-    mapping->m_MeasurementUnitsCode.set(code, scheme, meaning, version, OFFalse /* do not check */);
+    ContentItemMacro* macro = new ContentItemMacro(**it);
+    if (macro == NULL)
+    {
+      DCMFG_ERROR("Out of memory in copy constructor of FGRealWorldValueMapping::RWVMItem::RWVMItem");
+      return;
+    }
+    m_QuantityDefinitionSequence.push_back(macro);
+    it++;
   }
-  return mapping;
+}
+
+
+
+FGRealWorldValueMapping::RWVMItem* FGRealWorldValueMapping::RWVMItem::clone()
+{
+  return new FGRealWorldValueMapping::RWVMItem(*this);
 }
 
 
 
 FGRealWorldValueMapping::RWVMItem::~RWVMItem()
 {
-  // nothing to do
+  DcmIODUtil::freeContainer(m_QuantityDefinitionSequence);
 }
 
 
@@ -173,24 +184,29 @@ int FGRealWorldValueMapping::RWVMItem::compare(const IODComponent& rhs) const
   return IODComponent::compare(rhs);
 }
 
+
 void FGRealWorldValueMapping::RWVMItem::resetRules()
 {
   // parameters are tag, VM, type. Overwrite old rules if any.
-  m_Rules->addRule(new IODRule(DCM_RealWorldValueFirstValueMapped, "1","1",getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_RealWorldValueLastValueMapped, "1","1", getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_RealWorldValueFirstValueMapped, "1","1C",getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_RealWorldValueLastValueMapped, "1","1C", getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_DoubleFloatRealWorldValueFirstValueMapped, "1","1C",getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_DoubleFloatRealWorldValueLastValueMapped, "1","1C", getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
   m_Rules->addRule(new IODRule(DCM_RealWorldValueIntercept, "1","1C", getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
   m_Rules->addRule(new IODRule(DCM_RealWorldValueSlope, "1","1C", getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
   m_Rules->addRule(new IODRule(DCM_RealWorldValueLUTData, "1-n","1C", getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
   m_Rules->addRule(new IODRule(DCM_LUTExplanation, "1","1", getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
   m_Rules->addRule(new IODRule(DCM_LUTLabel, "1","1", getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
   m_Rules->addRule(new IODRule(DCM_MeasurementUnitsCodeSequence, "1","1", getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
-  //m_Rules->addRule(new IODRule(DCM_QuantityDefinitionSequence, "1","3", getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_QuantityDefinitionSequence, "1-n","3", getName(), DcmIODTypes::IE_INSTANCE), OFTrue);
 }
 
+
 OFCondition FGRealWorldValueMapping::RWVMItem::read(DcmItem& source,
                                                     const OFBool clearOldData)
 {
   DcmIODUtil::readSingleItem(source, DCM_MeasurementUnitsCodeSequence, m_MeasurementUnitsCode, "1", m_ModuleName);
+  DcmIODUtil::readSubSequence(source, DCM_QuantityDefinitionSequence, m_QuantityDefinitionSequence, m_Rules->getByTag(DCM_QuantityDefinitionSequence));
   return IODComponent::read(source, clearOldData);
 }
 
@@ -199,6 +215,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::write(DcmItem& destination)
 {
   OFCondition result;
   DcmIODUtil::writeSingleItem(result, DCM_MeasurementUnitsCodeSequence, m_MeasurementUnitsCode, *m_Item, "1", m_ModuleName);
+  DcmIODUtil::writeSubSequence(result, DCM_QuantityDefinitionSequence, m_QuantityDefinitionSequence, *m_Item, m_Rules->getByTag(DCM_QuantityDefinitionSequence));
   if (result.good()) result = IODComponent::write(destination);
   return result;
 }
@@ -212,12 +229,26 @@ OFCondition FGRealWorldValueMapping::RWVMItem::getRealWorldValueFirstValueMapped
 
 
 OFCondition FGRealWorldValueMapping::RWVMItem::getRealWorldValueLastValueMapped(Sint32& value,
-                                                                                 const unsigned long pos) const
+                                                                                const unsigned long pos) const
 {
   return getUSorSS(*m_Item, DCM_RealWorldValueLastValueMapped, pos, value);
 }
 
 
+OFCondition FGRealWorldValueMapping::RWVMItem::getDoubleFloatRealWorldValueFirstValueMapped(Float64& value,
+                                                                                            const unsigned long pos) const
+{
+  return (*m_Item).findAndGetFloat64(DCM_DoubleFloatRealWorldValueFirstValueMapped, value, pos);
+}
+
+
+OFCondition FGRealWorldValueMapping::RWVMItem::getDoubleFloatRealWorldValueLastValueMapped(Float64& value,
+                                                                                           const unsigned long pos) const
+{
+  return (*m_Item).findAndGetFloat64(DCM_DoubleFloatRealWorldValueFirstValueMapped, value, pos);
+}
+
+
 OFCondition FGRealWorldValueMapping::RWVMItem::getRealWorldValueLUTData(OFVector< Float64 >& values) const
 {
   DcmElement* elem = NULL;
@@ -263,7 +294,13 @@ CodeSequenceMacro& FGRealWorldValueMapping::RWVMItem::getMeasurementUnitsCode()
 }
 
 
-OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueFirstValueMappedUnsigned(const Uint16& value,
+OFVector<ContentItemMacro*> & FGRealWorldValueMapping::RWVMItem::getEntireQuantityDefinitionSequence()
+{
+  return m_QuantityDefinitionSequence;
+}
+
+
+OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueFirstValueMappedUnsigned(const Uint16 value,
                                                                                          const OFBool checkValue)
 {
   (void)checkValue;
@@ -299,7 +336,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedS
 }
 
 
-OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedUnsigned(const Uint16& value,
+OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedUnsigned(const Uint16 value,
                                                                                         const OFBool checkValue)
 {
   (void)checkValue;
@@ -311,7 +348,23 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedU
 }
 
 
-OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueIntercept(const Float64& value,
+OFCondition FGRealWorldValueMapping::RWVMItem::setDoubleFloatRealWorldValueFirstValueMapped(const Float64 value,
+                                                                                            const OFBool checkValue)
+{
+  (void)checkValue;
+  return (*m_Item).putAndInsertFloat64(DCM_DoubleFloatRealWorldValueFirstValueMapped, value);
+}
+
+
+OFCondition FGRealWorldValueMapping::RWVMItem::setDoubleFloatRealWorldValueLastValueMapped(const Float64 value,
+                                                                                           const OFBool checkValue)
+{
+  (void)checkValue;
+  return (*m_Item).putAndInsertFloat64(DCM_DoubleFloatRealWorldValueLastValueMapped, value);
+}
+
+
+OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueIntercept(const Float64 value,
                                                                           const OFBool checkValue)
 {
   (void)checkValue;
@@ -319,7 +372,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueIntercept(const
 }
 
 
-OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueSlope(const Float64& value,
+OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueSlope(const Float64 value,
                                                                       const OFBool checkValue)
 {
   (void)checkValue;
diff --git a/dcmfg/libsrc/fgseg.cc b/dcmfg/libsrc/fgseg.cc
index 4e28d64..72cfa40 100644
--- a/dcmfg/libsrc/fgseg.cc
+++ b/dcmfg/libsrc/fgseg.cc
@@ -57,7 +57,7 @@ void FGSegmentation::clearData()
 
 OFCondition FGSegmentation::check() const
 {
-  // TODO
+  // Checks in read() and write() are sufficient for now
   return EC_Normal;
 }
 
diff --git a/dcmfg/libsrc/fgtypes.cc b/dcmfg/libsrc/fgtypes.cc
index eecd622..fc5ca7c 100644
--- a/dcmfg/libsrc/fgtypes.cc
+++ b/dcmfg/libsrc/fgtypes.cc
@@ -93,6 +93,8 @@ OFString DcmFGTypes::FGType2OFString(const DcmFGTypes::E_FGType fgType)
     case EFG_IRRADIATIONEVENTIDENT: return "Irradiation Event Identification Functional Group Macro"; break;
     /// Radiopharmaceutical Usage
     case EFG_RADIOPHARAMAUSAGE: return "Radiopharmaceutical Usage Functional Group Macro"; break;
+    /// Parametric Map Frame Type
+    case EFG_PARAMETRICMAPFRAMETYPE: return "Parametric Map Frame Type Functional Group Macro"; break;
     /// Patient Physiological State
     case EFG_PATIENTPHYSIOSTATE: return "Patient Physiological State Functional Group Macro"; break;
     /// Plane Position (Volume)
@@ -101,6 +103,8 @@ OFString DcmFGTypes::FGType2OFString(const DcmFGTypes::E_FGType fgType)
     case EFG_PLANEORIENTVOLUME: return "Plane Orientation (Volume) Functional Group Macro"; break;
     /// Temporal Position Macro
     case EFG_TEMPORALPOSITION: return "Temporal Position Functional Group Macro"; break;
+    /// Identity Pixel Value Transformation
+    case EFG_IDENTITYPIXELVALUETRANSFORMATION: return "Identity Pixel Value Transformation"; break;
     /// Image Data Type
     case EFG_IMAGEDATATYPE: return "Image Data Type Functional Group Macro"; break;
     /// Unassigned Shared Converted Attributes Macro
@@ -116,7 +120,7 @@ OFString DcmFGTypes::FGType2OFString(const DcmFGTypes::E_FGType fgType)
 
 DcmFGTypes::E_FGType DcmFGTypes::tagKey2FGType(const DcmTagKey& key)
 {
-  // TODO: Use neat value to enum trick from Alexandrescu in order to have switch statement instead?
+  // Note: Use neat value to enum trick from Alexandrescu in order to have switch statement instead?
   if (key == DCM_PixelMeasuresSequence)
     return EFG_PIXELMEASURES;
   else if (key == DCM_FrameContentSequence)
@@ -155,12 +159,16 @@ DcmFGTypes::E_FGType DcmFGTypes::tagKey2FGType(const DcmTagKey& key)
     return EFG_RADIOPHARAMAUSAGE;
   else if (key == DCM_PatientPhysiologicalStateSequence)
     return EFG_PATIENTPHYSIOSTATE;
+  else if (key == DCM_ParametricMapFrameTypeSequence)
+    return EFG_PARAMETRICMAPFRAMETYPE;
   else if (key == DCM_PlanePositionVolumeSequence)
     return EFG_PLANEPOSITIONVOLUME;
   else if (key == DCM_PlaneOrientationVolumeSequence)
     return EFG_PLANEORIENTVOLUME;
   else if (key == DCM_TemporalPositionSequence)
     return EFG_TEMPORALPOSITION;
+  else if (key == DCM_PixelValueTransformationSequence)
+    return EFG_IDENTITYPIXELVALUETRANSFORMATION;
   else if (key == DCM_ImageDataTypeSequence)
     return EFG_IMAGEDATATYPE;
   else if (key == DCM_UnassignedSharedConvertedAttributesSequence)
diff --git a/dcmfg/libsrc/fgusimagedescription.cc b/dcmfg/libsrc/fgusimagedescription.cc
index e5ffa4e..439e339 100644
--- a/dcmfg/libsrc/fgusimagedescription.cc
+++ b/dcmfg/libsrc/fgusimagedescription.cc
@@ -64,7 +64,7 @@ void FGUSImageDescription::clearData()
 
 OFCondition FGUSImageDescription::check() const
 {
-  // TODO
+  // Checks in read() and write() are sufficient for now
   return EC_Normal;
 }
 
diff --git a/dcmimage/apps/Makefile.in b/dcmimage/apps/Makefile.in
index 36e35b1..4e9bb1d 100644
--- a/dcmimage/apps/Makefile.in
+++ b/dcmimage/apps/Makefile.in
@@ -22,7 +22,7 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include \
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(ofstddir)/libsrc -L$(oflogdir)/libsrc \
 	-L$(dcmdatadir)/libsrc -L$(dcmimgledir)/libsrc
 LOCALLIBS = -ldcmimage -ldcmimgle -ldcmdata -loflog -lofstd $(TIFFLIBS) $(PNGLIBS) \
-	$(ZLIBLIBS) $(ICONVLIBS)
+	$(ZLIBLIBS) $(CHARCONVLIBS)
 
 objs = dcm2pnm.o dcmquant.o dcmscale.o
 progs = dcm2pnm dcmquant dcmscale
diff --git a/dcmimage/apps/dcm2pnm.cc b/dcmimage/apps/dcm2pnm.cc
index 96d0a75..454497c 100644
--- a/dcmimage/apps/dcm2pnm.cc
+++ b/dcmimage/apps/dcm2pnm.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2014, OFFIS e.V.
+ *  Copyright (C) 1996-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -327,9 +327,9 @@ int main(int argc, char *argv[])
                                                        "ambient light value (cd/m^2, default: file f)");
       cmd.addOption("--illumination",       "+Di",  1, "[i]llumination: float",
                                                        "illumination value (cd/m^2, default: file f)");
-      cmd.addOption("--min-density",        "+Dn", 1,  "[m]inimum optical density: float",
+      cmd.addOption("--min-density",        "+Dn",  1, "[m]inimum optical density: float",
                                                        "Dmin value (default: off, only with +Dp)");
-      cmd.addOption("--max-density",        "+Dx", 1,  "[m]aximum optical density: float",
+      cmd.addOption("--max-density",        "+Dx",  1, "[m]aximum optical density: float",
                                                        "Dmax value (default: off, only with +Dp)");
       cmd.addOption("--gsd-function",       "+Dg",     "use GSDF for calibration (default for +Dm/+Dp)");
       cmd.addOption("--cielab-function",    "+Dc",     "use CIELAB function for calibration ");
@@ -736,14 +736,14 @@ int main(int argc, char *argv[])
         {
             do {
                 unsigned long l;
-                app.checkValue(cmd.getValueAndCheckMinMax(l, 1, 16));
+                app.checkValue(cmd.getValueAndCheckMinMax(l, 0, 16));
                 if (!opt_O_used)
                 {
                     for (i = 0; i < 16; i++) opt_Overlay[i] = 0;
                     opt_O_used = 1;
                 }
                 if (l > 0)
-                    opt_Overlay[l - 1]=1;
+                    opt_Overlay[l - 1] = 1;
                 else
                 {
                     for (i = 0; i < 16; i++)
diff --git a/dcmimage/include/dcmtk/dcmimage/dicoimg.h b/dcmimage/include/dcmtk/dcmimage/dicoimg.h
index 16638c7..c38942e 100644
--- a/dcmimage/include/dcmtk/dcmimage/dicoimg.h
+++ b/dcmimage/include/dcmtk/dcmimage/dicoimg.h
@@ -397,6 +397,8 @@ class DCMTK_DCMIMAGE_EXPORT DiColorImage
     /** check intermediate pixel representation for consistency
      *
      ** @param  mode  check number of pixels stored in the dataset if true
+     *
+     ** @return status, true if successful, false otherwise
      */
     int checkInterData(const int mode = 1);
 
diff --git a/dcmimgle/apps/Makefile.in b/dcmimgle/apps/Makefile.in
index 315fb2f..61669cb 100644
--- a/dcmimgle/apps/Makefile.in
+++ b/dcmimgle/apps/Makefile.in
@@ -18,7 +18,7 @@ dcmdatadir = $(top_srcdir)/../dcmdata
 
 LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/include
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(ofstddir)/libsrc -L$(oflogdir)/libsrc -L$(dcmdatadir)/libsrc
-LOCALLIBS = -ldcmimgle -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(ICONVLIBS)
+LOCALLIBS = -ldcmimgle -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(CHARCONVLIBS)
 
 objs = dconvlum.o dcmdspfn.o dcod2lum.o
 progs = dconvlum dcmdspfn dcod2lum
diff --git a/dcmimgle/include/dcmtk/dcmimgle/dcmimage.h b/dcmimgle/include/dcmtk/dcmimgle/dcmimage.h
index 82b6572..6f77696 100644
--- a/dcmimgle/include/dcmtk/dcmimgle/dcmimage.h
+++ b/dcmimgle/include/dcmtk/dcmimgle/dcmimage.h
@@ -505,6 +505,8 @@ class DCMTK_DCMIMGLE_EXPORT DicomImage
 
     /** check whether image has given SOP class UID.
      *
+     ** @param  uid  SOP class UID to be checked
+     *
      ** @return true if image has given SOP class UID, false otherwise
      */
     int hasSOPclassUID(const char *uid) const;
diff --git a/dcmimgle/include/dcmtk/dcmimgle/diimage.h b/dcmimgle/include/dcmtk/dcmimgle/diimage.h
index 50fb32b..72a7adb 100644
--- a/dcmimgle/include/dcmtk/dcmimgle/diimage.h
+++ b/dcmimgle/include/dcmtk/dcmimgle/diimage.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2014, OFFIS e.V.
+ *  Copyright (C) 1996-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -605,6 +605,8 @@ class DCMTK_DCMIMGLE_EXPORT DiImage
 
     /** detach pixel data.
      *  removes storage area used for the pixel data from memory
+     *
+     ** @return status, true if successful, false otherwise
      */
     int detachPixelData();
 
diff --git a/dcmimgle/include/dcmtk/dcmimgle/diinpxt.h b/dcmimgle/include/dcmtk/dcmimgle/diinpxt.h
index 919c210..6f30bc9 100644
--- a/dcmimgle/include/dcmtk/dcmimgle/diinpxt.h
+++ b/dcmimgle/include/dcmtk/dcmimgle/diinpxt.h
@@ -184,9 +184,10 @@ class DiInputPixelTemplate
             DCMIMGLE_DEBUG("determining minimum and maximum pixel values for input data");
             T2 *p = Data;
             unsigned long i;
-            const unsigned long ocnt = OFstatic_cast(unsigned long, getAbsMaxRange());
+            const double absrange = getAbsMaxRange();
+            const unsigned long ocnt = (absrange <= 10000000.0) ? OFstatic_cast(unsigned long, absrange) : 0 /* no LUT */;
             Uint8 *lut = NULL;
-            if ((sizeof(T2) <= 2) && (Count > 3 * ocnt))               // optimization criteria
+            if ((sizeof(T2) <= 2) && (ocnt > 0) && (Count > 3 * ocnt)) // optimization criteria
             {
                 lut = new Uint8[ocnt];
                 if (lut != NULL)
diff --git a/dcmimgle/include/dcmtk/dcmimgle/dimoimg.h b/dcmimgle/include/dcmtk/dcmimgle/dimoimg.h
index ef7fe32..3077f37 100644
--- a/dcmimgle/include/dcmtk/dcmimgle/dimoimg.h
+++ b/dcmimgle/include/dcmtk/dcmimgle/dimoimg.h
@@ -942,6 +942,8 @@ class DCMTK_DCMIMGLE_EXPORT DiMonoImage
     /** check intermediate pixel representation for consistency
      *
      ** @param  mode  check number of pixels stored in the dataset if true
+     *
+     ** @return status, true if successful, false otherwise
      */
     int checkInterData(const int mode = 1);
 
diff --git a/dcmimgle/include/dcmtk/dcmimgle/dimomod.h b/dcmimgle/include/dcmtk/dcmimgle/dimomod.h
index a4dbcb2..4412d78 100644
--- a/dcmimgle/include/dcmtk/dcmimgle/dimomod.h
+++ b/dcmimgle/include/dcmtk/dcmimgle/dimomod.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2011, OFFIS e.V.
+ *  Copyright (C) 1996-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -219,6 +219,8 @@ class DCMTK_DCMIMGLE_EXPORT DiMonoModality
      *
      ** @param  docu   pointer to dataset (encapsulated)
      *  @param  pixel  pointer to input pixel data
+     *
+     ** @return status, true if successful, false otherwise
      */
     int Init(const DiDocument *docu,
              DiInputPixel *pixel);
diff --git a/dcmimgle/include/dcmtk/dcmimgle/dimoopxt.h b/dcmimgle/include/dcmtk/dcmimgle/dimoopxt.h
index ba3e71e..c13295c 100644
--- a/dcmimgle/include/dcmtk/dcmimgle/dimoopxt.h
+++ b/dcmimgle/include/dcmtk/dcmimgle/dimoopxt.h
@@ -248,6 +248,19 @@ class DiMonoOutputPixelTemplate
         }
     }
 
+    /** determine number of entries for the optimization LUT
+     *
+     ** @param  count  number of entries intended to be used for the optimization LUT
+     *                 (floating point value)
+     *
+     ** @return number of entries for the optimization LUT (unsigned integer value)
+     *          or 0 if the size would exceed a certain limit (10,000,000 entries)
+     */
+    inline unsigned long determineOptimizationCount(const double count)
+    {
+        return (count <= 10000000.0) ? OFstatic_cast(unsigned long, count) : 0 /* no LUT */;
+    }
+
 
  private:
 
@@ -277,13 +290,15 @@ class DiMonoOutputPixelTemplate
     /** initialize an optimization LUT if the optimization criteria is fulfilled
      *
      ** @param  lut   reference to storage area where the optimization LUT should be stored
-     *  @param  ocnt  number of entries for the optimization LUT
+     *  @param  ocnt  number of entries for the optimization LUT (0 = never create one)
+     *
+     ** @return status, true if successful, false otherwise
      */
     inline int initOptimizationLUT(T3 *&lut,
                                    const unsigned long ocnt)
     {
         int result = 0;
-        if ((sizeof(T1) <= 2) && (Count > 3 * ocnt))                          // optimization criteria
+        if ((sizeof(T1) <= 2) && (ocnt > 0) && (Count > 3 * ocnt))            // optimization criteria
         {                                                                     // use LUT for optimization
             lut = new T3[ocnt];
             if (lut != NULL)
@@ -348,7 +363,7 @@ class DiMonoOutputPixelTemplate
                         if (dlut != NULL)                                               // perform display transformation
                         {
                             DCMIMGLE_TRACE("monochrome rendering: VOI LUT #1 - UNTESTED");
-                            if (low > high)                                             // invers
+                            if (low > high)                                             // inverse
                                 value = OFstatic_cast(T3, dlut->getValue(OFstatic_cast(Uint16, plut->getAbsMaxRange() - plut->getValue(value2) - 1)));
                             else                                                        // normal
                                 value = OFstatic_cast(T3, dlut->getValue(OFstatic_cast(Uint16, plut->getValue(value2))));
@@ -361,7 +376,7 @@ class DiMonoOutputPixelTemplate
                         if (dlut != NULL)                                               // perform display transformation
                         {
                             DCMIMGLE_TRACE("monochrome rendering: VOI LUT #3 - UNTESTED");
-                            if (low > high)                                             // invers
+                            if (low > high)                                             // inverse
                                 value = OFstatic_cast(T3, dlut->getValue(OFstatic_cast(Uint16, vlut->getAbsMaxRange() - minvalue - 1)));
                             else                                                        // normal
                                 value = OFstatic_cast(T3, dlut->getValue(OFstatic_cast(Uint16, minvalue)));
@@ -376,7 +391,7 @@ class DiMonoOutputPixelTemplate
                     const T2 absmin = OFstatic_cast(T2, inter->getAbsMinimum());
                     const T2 firstentry = vlut->getFirstEntry(value);                   // choose signed/unsigned method
                     const T2 lastentry = vlut->getLastEntry(value);
-                    const unsigned long ocnt = OFstatic_cast(unsigned long, inter->getAbsMaxRange());  // number of LUT entries
+                    const unsigned long ocnt = determineOptimizationCount(inter->getAbsMaxRange());  // number of LUT entries
                     const T1 *p = pixel + start;
                     T3 *q = Data;
                     T3 *lut = NULL;
@@ -621,8 +636,8 @@ class DiMonoOutputPixelTemplate
                 DCMIMGLE_DEBUG("applying no VOI transformation (linear scaling)");
                 const double absmin = inter->getAbsMinimum();
                 const double absmax = inter->getAbsMaximum();
-                const double outrange = OFstatic_cast(double, high) - OFstatic_cast(double, low) + 1;
-                const unsigned long ocnt = OFstatic_cast(unsigned long, inter->getAbsMaxRange());  // number of LUT entries
+                const double outrange = OFstatic_cast(double, high) - OFstatic_cast(double, low) + 1;  // output range
+                const unsigned long ocnt = determineOptimizationCount(inter->getAbsMaxRange());        // number of LUT entries
                 DCMIMGLE_TRACE("intermediate pixel data - absmin: " << absmin << ", absmax: " << absmax);
                 const T1 *p = pixel + start;
                 T3 *q = Data;
@@ -784,7 +799,7 @@ class DiMonoOutputPixelTemplate
                 const DiDisplayLUT *dlut = NULL;
                 const double absmin = inter->getAbsMinimum();
                 const double outrange = OFstatic_cast(double, high) - OFstatic_cast(double, low);  // output range
-                const unsigned long ocnt = OFstatic_cast(unsigned long, inter->getAbsMaxRange());  // number of LUT entries
+                const unsigned long ocnt = determineOptimizationCount(inter->getAbsMaxRange());    // number of LUT entries
                 const T1 *p = pixel + start;
                 T3 *q = Data;
                 unsigned long i;
@@ -946,7 +961,7 @@ class DiMonoOutputPixelTemplate
                 const double leftBorder = center - 0.5 - width_1 / 2;                 // window borders, according to supplement 33
                 const double rightBorder = center - 0.5 + width_1 / 2;
                 const double outrange = OFstatic_cast(double, high) - OFstatic_cast(double, low);  // output range
-                const unsigned long ocnt = OFstatic_cast(unsigned long, inter->getAbsMaxRange());  // number of LUT entries
+                const unsigned long ocnt = determineOptimizationCount(inter->getAbsMaxRange());    // number of LUT entries
                 const T1 *p = pixel + start;
                 T3 *q = Data;
                 unsigned long i;
diff --git a/dcmimgle/libsrc/dimoimg.cc b/dcmimgle/libsrc/dimoimg.cc
index bfb8e1f..0db68be 100644
--- a/dcmimgle/libsrc/dimoimg.cc
+++ b/dcmimgle/libsrc/dimoimg.cc
@@ -1901,7 +1901,7 @@ DiImage *DiMonoImage::createOutputImage(const unsigned long frame,
     if ((OutputData != NULL) && (OutputData->getData() != NULL))
     {
 
-        DiImage *image = new DiMono2Image(this, OutputData, frame, bits, OutputData->getItemSize() * 8);
+        DiImage *image = new DiMono2Image(this, OutputData, frame, bits, OFstatic_cast(int, OutputData->getItemSize() * 8));
         if (image != NULL)
             OutputData->removeDataReference();              // output data is now handled by new mono image
         return image;
diff --git a/dcmiod/include/dcmtk/dcmiod/cielabutil.h b/dcmiod/include/dcmtk/dcmiod/cielabutil.h
index 781477b..64cd3ff 100755
--- a/dcmiod/include/dcmtk/dcmiod/cielabutil.h
+++ b/dcmiod/include/dcmtk/dcmiod/cielabutil.h
@@ -195,7 +195,7 @@ protected:
    *  @param  b Second number
    *  @return The minimum of a, b. a if a and b are equal.
    */
-  static double min(double a, double b);
+  static double min2(double a, double b);
 
   /** Get the minimum of three numbers
    *  @param  a First number
diff --git a/dcmiod/include/dcmtk/dcmiod/iodcommn.h b/dcmiod/include/dcmtk/dcmiod/iodcommn.h
index d4cd872..0e3dc97 100644
--- a/dcmiod/include/dcmtk/dcmiod/iodcommn.h
+++ b/dcmiod/include/dcmtk/dcmiod/iodcommn.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -48,6 +48,11 @@ public:
    */
   DcmIODCommon();
 
+  /** Copy Constructor
+   *  @param  rhs The object to copy from
+   */
+  DcmIODCommon(const DcmIODCommon& rhs);
+
   /** Get rules handled by this IOD
    *  @return The rules
    */
@@ -141,6 +146,8 @@ public:
   /** Make sure that the IOD contains a SOP Instance, Series Instance and Study
    *  Instance UID. They are created if empty. Invalid UIDs are corrected if
    *  desired.
+   *  @param  correctInvalid If OFTrue, invalid instance UIDs will be replaced
+   *          by new ones
    */
   virtual void ensureInstanceUIDs(const OFBool correctInvalid = OFFalse);
 
@@ -177,6 +184,46 @@ public:
                              OFBool readFoR = OFFalse,
                              OFBool readSeries = OFFalse);
 
+  /** Import common module attributes from DICOM file but only read Patient, Study,
+   *  Series and/or Frame of Reference level portions. The current content
+   *  is not deleted before reading. If the log stream is set and valid the
+   *  reason for any error might be obtained from the error/warning output.
+   *  This function is deprecated and might be removed in later versions of
+   *  DCMTK. Use the import() call offering the same parameters and
+   *  functionality, instead.
+   *  @param  filename The filename to read from.
+   *  @param  usePatient If OFTrue, Patient level information is imported
+   *  @param  useStudy If OFTrue, Study level information is imported
+   *  @param  useSeries If OFTrue, Series level information is imported
+   *  @param  useFoR If OFTrue, Frame of Reference information is imported
+   *  @return EC_Normal if reading was successful (i.e.\ if any information could
+   *          be read), otherwise an error is returned
+   */
+  OFCondition importPatientStudyFoR(const OFString& filename,
+                                    const OFBool usePatient,
+                                    const OFBool useStudy,
+                                    const OFBool useSeries,
+                                    const OFBool useFoR = OFFalse);
+
+  /** Import common module attributes from DICOM file but only read Patient, Study,
+   *  Series and/or Frame of Reference level portions. The current content
+   *  is not deleted before reading. If the log stream is set and valid the
+   *  reason for any error might be obtained from the error/warning output.
+   *  @param  filename The filename to read from
+   *  @param  usePatient If OFTrue, Patient level information is imported
+   *  @param  useStudy If OFTrue, Study level information is imported
+   *  @param  useSeries If OFTrue, Series level information is imported
+   *  @param  useFoR If OFTrue, Frame of Reference information is imported
+   *  @return EC_Normal if reading was successful (i.e.\ if any information could
+   *          be read), otherwise an error is returned
+   */
+  virtual OFCondition import(const OFString& filename,
+                             const OFBool usePatient,
+                             const OFBool useStudy,
+                             const OFBool useSeries,
+                             const OFBool useFoR = OFFalse);
+
+
   /** Write the attributes managed by this class to DICOM dataset.
    *  @param dataset  Reference to DICOM dataset to which the current document
    *                  should be  written. The dataset is not cleared
@@ -188,6 +235,10 @@ public:
 
 private:
 
+  /** Copy assignment disabled
+   */
+  DcmIODCommon& operator=(const DcmIODCommon&);
+
   /// The data hold by this class (shared with modules below)
   OFshared_ptr<DcmItem> m_Item;
 
diff --git a/dcmiod/include/dcmtk/dcmiod/iodcontentitemmacro.h b/dcmiod/include/dcmtk/dcmiod/iodcontentitemmacro.h
new file mode 100644
index 0000000..8646e96
--- /dev/null
+++ b/dcmiod/include/dcmtk/dcmiod/iodcontentitemmacro.h
@@ -0,0 +1,478 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmpmap
+ *
+ *  Author: Jan Schlamelcher
+ *
+ *  Purpose: Class for managing the Content Item Macro
+ *
+ */
+
+#ifndef IODCONTENTITEMMACRO_H
+#define IODCONTENTITEMMACRO_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/ofmem.h"
+#include "dcmtk/dcmiod/iodrules.h"
+#include "dcmtk/dcmiod/modbase.h"
+#include "dcmtk/dcmiod/iodmacro.h"
+#include "dcmtk/dcmiod/iodtypes.h"
+
+/** Class representing the Content Item Macro:
+ *
+ *  ValueType: (CS, 1, 1)
+ *  ConceptNameCodeSequence: (SQ, 1, 1)
+ *  DateTime: (DT, 1, 1C)
+ *  Date: (DA, 1, 1C)
+ *  Time: (TM, 1, 1C)
+ *  PersonName: (PN, 1, 1C)
+ *  UID: (UI, 1, 1C)
+ *  TextValue: (UT, 1, 1C)
+ *  ConceptCodeSequence: (SQ, 1, 1C)
+ *  NumericValue: (DS, 1-n, 1C)
+ *  FloatingPointValue: (FD, 1-n, 1C)
+ *  RationalNumeratorValue: (SL, 1-n, 1C)
+ *  RationalDenominatorValue: (UL, 1-n, 1C)
+ *  MeasurementUnitsCodeSequence: (SQ, 1, 1C)
+ *  ReferencedSOPSequence: (SQ, 1, 1C)
+ */
+class DCMTK_DCMIOD_EXPORT ContentItemMacro : public IODComponent
+{
+public:
+
+  enum ValueType
+  {
+     // Value is empty and not provided
+     VT_EMPTY,
+     // Value is provided but not known to the implementation
+     VT_UNKNOWN,
+     VT_DATE,
+     VT_TIME,
+     VT_DATETIME,
+     VT_PNAME,
+     VT_UIDREF,
+     VT_TEXT,
+     VT_CODE,
+     VT_NUMERIC,
+     VT_COMPOSITE,
+     VT_IMAGE
+   };
+
+  /** Class representing an item within the Content Item Macro's Referenced
+   *  SOP Sequence
+   */
+  class DCMTK_DCMIOD_EXPORT ReferencedSOPSequenceItem : public IODComponent
+  {
+  public:
+
+    /** Constructor
+     *  @param  item The item to be used for data storage. If NULL, the
+     *          class creates an empty data container.
+     *  @param  rules The rule set for this class. If NULL, the class creates
+     *          one from scratch and adds its values.
+     *  @param  parent The parent of the IOD component (NULL if none or unknown)
+     */
+    ReferencedSOPSequenceItem(OFshared_ptr<DcmItem> item,
+                              OFshared_ptr<IODRules> rules,
+                              IODComponent* parent = NULL);
+
+    /** Constructor
+     *  @param  parent The parent of the IOD component (NULL if none or unknown)
+     */
+    ReferencedSOPSequenceItem(IODComponent* parent = NULL);
+
+    /** Copy Constructor, performs deep copy
+     *  @param  rhs The parent of the IOD component (NULL if none or unknown)
+     */
+    ReferencedSOPSequenceItem(const ReferencedSOPSequenceItem& rhs);
+
+    /** Virtual Destructor
+     */
+    virtual ~ReferencedSOPSequenceItem();
+
+    /** Read attributes from given item into this class
+     *  @param source  The source to read from
+     *  @param clearOldData If OFTrue, old data is cleared before reading. Otherwise
+     *         old data is overwritten (or amended)
+     *  @result EC_Normal if reading was successful, error otherwise
+     */
+    virtual OFCondition read(DcmItem& source,
+                            const OFBool clearOldData = OFTrue);
+
+    /** Write attributes from this class into given item
+     *  @param  destination The item to write to
+     *  @result EC_Normal if writing was successful, error otherwise
+     */
+    virtual OFCondition write(DcmItem& destination);
+
+    /** Resets rules to their original values
+     */
+    virtual void resetRules();
+
+    /** Get name of macro
+     *  @return Name of the component ("ReferencedSOPSequenceItem")
+     */
+    virtual OFString getName() const;
+
+    /** Get SOPInstanceReferenceMacro
+     *  @return a reference to the included SOPInstanceReferenceMacro
+     */
+    virtual SOPInstanceReferenceMacro& getSOPInstanceReferenceMacro();
+
+    /** Get ReferencedFrameNumber
+     *  @param  value Reference to variable in which the value should be stored
+     *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+     *  @return EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getReferencedFrameNumber(OFString &value,
+                                                 const signed long pos = 0) const;
+
+    /** Get ReferencedSegmentNumber
+     *  @param  value Reference to variable in which the value should be stored
+     *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+     *  @return EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getReferencedSegmentNumber(Uint16 &value,
+                                                   const signed long pos = 0) const;
+
+    /** Set ReferencedFrameNumber
+     *  @param  value Value to be set (single value only) or "" for no value
+     *  @param  checkValue Check 'value' for conformance with VR (IS) and VM (1-n) if enabled
+     *  @return EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setReferencedFrameNumber(const OFString &value,
+                                                 const OFBool checkValue = OFTrue);
+
+    /** Set ReferencedSegmentNumber
+     *  @param  value Value to be set (single value only) or "" for no value
+     *  @param  checkValue Check 'value' for conformance with VR (US) and VM (1-n) if enabled
+     *  @return EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setReferencedSegmentNumber(const Uint16 value,
+                                                   const OFBool checkValue = OFTrue);
+
+  protected:
+
+    /// The name of this item ("ReferencedSOPSequenceItem")
+    static const OFString m_ComponentName;
+
+    /// SOP Instance Reference Macro
+    SOPInstanceReferenceMacro m_SOPInstanceReferenceMacro;
+  };
+
+  /** Constructor
+   *  @param  item The item to be used for data storage. If NULL, the
+   *          class creates an empty data container.
+   *  @param  rules The rule set for this class. If NULL, the class creates
+   *          one from scratch and adds its values.
+   */
+  ContentItemMacro(OFshared_ptr<DcmItem> item,
+                   OFshared_ptr<IODRules> rules);
+
+  /** Constructor
+   */
+  ContentItemMacro();
+
+  /** Destructor
+   */
+  virtual ~ContentItemMacro();
+
+  ContentItemMacro(const ContentItemMacro& rhs);
+
+  /** Resets rules to their original values
+   */
+  virtual void resetRules();
+
+  /** Get name of module ("ContentItemMacro")
+   *  @return Name of the module ("ContentItemMacro")
+   */
+  virtual OFString getName() const;
+
+  /** Read attributes from given item into this class
+   *  @param source  The source to read from
+   *  @param clearOldData If OFTrue, old data is cleared before reading. Otherwise
+   *         old data is overwritten (or amended)
+   *  @result EC_Normal if reading was successful, error otherwise
+   */
+  virtual OFCondition read(DcmItem& source,
+                           const OFBool clearOldData = OFTrue);
+
+  /** Write attributes from this class into given item
+   *  @param  destination The item to write to
+   *  @result EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition write(DcmItem& destination);
+
+  /** Get ValueType
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getValueType(OFString &value,
+                                   const signed long pos = 0) const;
+
+  /** Get ValueType
+   *  @param  value Reference to variable in which the value should be stored
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getValueType(ValueType &value) const;
+
+  /** Get reference to the ConceptNameCodeSequence
+   *  @return a reference to the ConceptNameCodeSequence
+   */
+  virtual CodeSequenceMacro* getConceptNameCodeSequence();
+
+  /** Get a reference to the entire ConceptNameCodeSequence, including items
+   *  exceeding the value multiplicity restriction of "1"
+   *  @return a reference to the entire ConceptNameCodeSequence
+   */
+  virtual OFVector<CodeSequenceMacro*>& getEntireConceptNameCodeSequence();
+
+  /** Get DateTime
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getDateTime(OFString &value,
+                                  const signed long pos = 0) const;
+
+  /** Get Date
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getDate(OFString &value,
+                              const signed long pos = 0) const;
+
+  /** Get Time
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getTime(OFString &value,
+                              const signed long pos = 0) const;
+
+  /** Get PersonName
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getPersonName(OFString &value,
+                                    const signed long pos = 0) const;
+
+  /** Get UID
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getUID(OFString &value,
+                             const signed long pos = 0) const;
+
+  /** Get TextValue
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getTextValue(OFString &value,
+                                   const signed long pos = 0) const;
+
+  /** Get reference to the ConceptCodeSequence
+   *  @return a reference to the ConceptCodeSequence
+   */
+  virtual CodeSequenceMacro* getConceptCodeSequence();
+
+  /** Get a reference to the entire ConceptCodeSequence, including items
+   *  exceeding the value multiplicity restriction of "1"
+   *  @return a reference to the entire ConceptCodeSequence
+   */
+  virtual OFVector<CodeSequenceMacro*>& getEntireConceptCodeSequence();
+
+  /** Get NumericValue
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getNumericValue(OFString &value,
+                                      const signed long pos = 0) const;
+
+  /** Get FloatingPointValue
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getFloatingPointValue(Float64 &value,
+                                            const signed long pos = 0) const;
+
+  /** Get RationalNumeratorValue
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getRationalNumeratorValue(Sint32 &value,
+                                                const signed long pos = 0) const;
+
+  /** Get RationalDenominatorValue
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getRationalDenominatorValue(Uint32 &value,
+                                                  const signed long pos = 0) const;
+
+  /** Get reference to the MeasurementUnitsCodeSequence
+   *  @return a reference to the MeasurementUnitsCodeSequence
+   */
+  virtual CodeSequenceMacro* getMeasurementUnitsCodeSequence();
+
+  /** Get a reference to the entire MeasurementUnitsCodeSequence, including items
+   *  exceeding the value multiplicity restriction of "1"
+   *  @return a reference to the entire MeasurementUnitsCodeSequence
+   */
+  virtual OFVector<CodeSequenceMacro*>& getEntireMeasurementUnitsCodeSequence();
+
+  /** Get reference to the ReferencedSOPSequence
+   *  @return a reference to the ReferencedSOPSequence
+   */
+  virtual ReferencedSOPSequenceItem* getReferencedSOPSequence();
+
+  /** Get a reference to the entire ReferencedSOPSequence, including items
+   *  exceeding the value multiplicity restriction of "1"
+   *  @return a reference to the entire ReferencedSOPSequence
+   */
+  virtual OFVector<ReferencedSOPSequenceItem*>& getEntireReferencedSOPSequence();
+
+  /** Set ValueType
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setValueType(const OFString &value,
+                                   const OFBool checkValue = OFTrue);
+
+  /** Set ValueType
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value'. Does nothing, here for consistency with
+   *          other set() functions.
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setValueType(const ValueType value,
+                                   const OFBool checkValue = OFTrue);
+
+  /** Set DateTime
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (DT) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setDateTime(const OFString &value,
+                                  const OFBool checkValue = OFTrue);
+
+  /** Set Date
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (DA) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setDate(const OFString &value,
+                              const OFBool checkValue = OFTrue);
+
+  /** Set Time
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (TM) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setTime(const OFString &value,
+                              const OFBool checkValue = OFTrue);
+
+  /** Set PersonName
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (PN) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setPersonName(const OFString &value,
+                                    const OFBool checkValue = OFTrue);
+
+  /** Set UID
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (UI) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setUID(const OFString &value,
+                             const OFBool checkValue = OFTrue);
+
+  /** Set TextValue
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (UT) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setTextValue(const OFString &value,
+                                   const OFBool checkValue = OFTrue);
+
+  /** Set NumericValue
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (DS) and VM (1-n) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setNumericValue(const OFString &value,
+                                      const OFBool checkValue = OFTrue);
+
+  /** Set FloatingPointValue
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  pos Index of the value to be set (starting from 0)
+   *  @param  checkValue Check 'value' for conformance with VR (FD) and VM (1-n) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setFloatingPointValue(const Float64 value,
+                                            const unsigned long pos = 0,
+                                            const OFBool checkValue = OFTrue);
+
+  /** Set RationalNumeratorValue
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  pos Index of the value to be set (starting from 0)
+   *  @param  checkValue Check 'value' for conformance with VR (SL) and VM (1-n) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setRationalNumeratorValue(const Sint32 value,
+                                                const unsigned long pos = 0,
+                                                const OFBool checkValue = OFTrue);
+
+  /** Set RationalDenominatorValue
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  pos Index of the value to be set (starting from 0)
+   *  @param  checkValue Check 'value' for conformance with VR (UL) and VM (1-n) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setRationalDenominatorValue(const Uint32 value,
+                                                  const unsigned long pos = 0,
+                                                  const OFBool checkValue = OFTrue);
+
+  virtual OFString toString();
+
+protected:
+
+  /// The name of this module ("ContentItemMacro")
+  static const OFString m_ModuleName;
+
+  /// ConceptNameCodeSequence
+  OFVector<CodeSequenceMacro*> m_ConceptNameCodeSequence;
+
+  /// ConceptCodeSequence
+  OFVector<CodeSequenceMacro*> m_ConceptCodeSequence;
+
+  /// MeasurementUnitsCodeSequence
+  OFVector<CodeSequenceMacro*> m_MeasurementUnitsCodeSequence;
+
+  /// ReferencedSOPSequence
+  OFVector<ReferencedSOPSequenceItem*> m_ReferencedSOPSequence;
+};
+
+#endif // IODCONTENTITEMMACRO_H
diff --git a/dcmiod/include/dcmtk/dcmiod/iodimage.h b/dcmiod/include/dcmtk/dcmiod/iodimage.h
index 6b0ac4e..7760c4b 100644
--- a/dcmiod/include/dcmtk/dcmiod/iodimage.h
+++ b/dcmiod/include/dcmtk/dcmiod/iodimage.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2015-2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -23,44 +23,117 @@
 #define IODIMAGE_H
 
 #include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/ofutil.h"
+#include "dcmtk/ofstd/ofvriant.h"
 #include "dcmtk/dcmiod/iodcommn.h"
 #include "dcmtk/dcmiod/modgeneralimage.h"
-#include "dcmtk/dcmiod/modimagepixel.h"
+#include "dcmtk/dcmiod/modimagepixelvariant.h"
+
+class IODDoubleFloatingPointImagePixelModule;
+class IODFloatingPointImagePixelModule;
+template<typename>
+class IODImagePixelModule;
 
 /** Class for managing common image IOD attributes. At the moment support for
  *  the palette-related attributes and the smallest/largest image pixel value
  *  attributes is still missing. Also, pixel data must be handled separately.
+ *  However, pixel-data related attributes are provided by the Image Pixel
+ *  Module, the Floating Point Image Pixel Module or the Double Floating Point
+ *  Image Pixel Module, based on the provided template parameter.
  *  Modules supported on top of DcmIODCommon: General Image Module and
  *  Image Pixel Module.
  */
-class DCMTK_DCMIOD_EXPORT DcmIODImage :
-  public DcmIODCommon
+#ifdef DCMTK_USE_CXX11_STL
+template<typename T,typename... Types>
+struct DcmIODImageHasType
+: std::false_type {};
+
+template<typename T,typename... Types>
+struct DcmIODImageHasType<T,T,Types...>
+: std::true_type {};
+
+template<typename T,typename T0,typename... Types>
+struct DcmIODImageHasType<T,T0,Types...>
+: DcmIODImageHasType<T,Types...>::type {};
+
+template<typename... Types>
+#else
+template<OFVARIADIC_DECLARE_TEMPLATE_PARAMETER_PACK_WITH_DEFAULTS(T)>
+#endif
+class DcmIODImage : public DcmIODCommon
 {
 
 public:
 
-  /** Constructor
+  /** typedef for old compilers that do not define the type 'DcmIODImage' in
+   *  derived classes.
    */
-  DcmIODImage();
+  typedef DcmIODImage IODImage;
 
-  /** Get General Image Module
-   *  @return Reference to General Image Module
+  /** A good comment would be nice, but I have nothing in mind
    */
-  IODGeneralImageModule& getGeneralImage();
+#ifdef DCMTK_USE_CXX11_STL
+  using IODImagePixelModuleType = IODImagePixelVariant<Types...>;
+#else
+  typedef IODImagePixelVariant<OFVARIADIC_TEMPLATE_PARAMETER_PACK(T)> IODImagePixelModuleType;
+#endif
 
-  /** Get Image Pixel Module
-   * @return Reference to Image Pixel Module
+  /** Constructor, creates new DcmIODImage instance with integer-based pixel data.
    */
-  IODImagePixelModule& getImagePixel();
+  DcmIODImage()
+  : DcmIODCommon()
+  , m_GeneralImage(getData(), getRules())
+  , m_ImagePixel()
+  {
+
+  }
+
+  /** Constructor, constructs new DcmIODImage instance with integer, float or
+   *  double based Image Pixel Module (i. e. Image Pixel Module, Floating Point
+   *  Image Pixel Module or the Double Floating Point Image Pixel Module), based
+   *  on the provided Image Pixel module type.
+   */
+  template<typename ImagePixel>
+  DcmIODImage(OFin_place_type_t(ImagePixel))
+  : DcmIODCommon()
+  , m_GeneralImage(getData(), getRules())
+  , m_ImagePixel(ImagePixel(getData(), getRules()))
+  {
+
+  }
 
   /** Virtual Destructor
    */
-  virtual ~DcmIODImage();
+  virtual ~DcmIODImage()
+  {
+
+  }
+
+  /** Get General Image Module
+   *  @return Reference to General Image Module
+   */
+  IODGeneralImageModule& getGeneralImage()
+  {
+    return m_GeneralImage;
+  }
+
+  /** Get Image Pixel Module (variant)
+   *  @return Reference to Image Pixel Module
+   */
+  IODImagePixelModuleType& getImagePixel()
+  {
+    return m_ImagePixel;
+  }
 
   /** Clear (removes) all attributes handled by the modules of this IOD.
    *  IOD Rules are not reset.
    */
-  virtual void clearData();
+  virtual void clearData()
+  {
+    DcmIODCommon::clearData();
+    m_GeneralImage.clearData();
+    m_ImagePixel.clearData();
+  }
 
   /** Read common image module attributes (all those handled by this class)
    *  from given item. Reads attributes from base class DcmIODCommon before.
@@ -71,25 +144,169 @@ public:
    *          should be read
    *  @return EC_Normal if successful, an error code otherwise
    */
-  virtual OFCondition read(DcmItem &dataset);
+  virtual OFCondition read(DcmItem &dataset)
+  {
+     // re-initialize object
+     clearData();
+
+     // read from base classes
+     DcmIODCommon::read(dataset);
+     m_GeneralImage.read(dataset, OFTrue /* clear old data */);
+
+     return readFloatingPointDoubleImagePixel<IODDoubleFloatingPointImagePixelModule>(dataset);
+  }
 
   /** Write current common image module's attributes to DICOM dataset. Also
    *  writes attributes of base class DcmIODCommon afterwards.
-   *  @param  dataset Reference to DICOM dataset to which the current document
-   *          should be written.  The dataset is not cleared before writing
+   *  @param  dataset Reference to DICOM dataset to which the current data
+   *          should be written. The dataset is not cleared before writing
    *          to it!
    *  @return EC_Normal if successful, an error code otherwise
    */
-  virtual OFCondition write(DcmItem &dataset);
+  virtual OFCondition write(DcmItem &dataset)
+  {
+    OFCondition result = EC_Normal;
+
+    // Write base class attributes to dataset
+    result = DcmIODCommon::write(dataset);
+
+    // Write extra modules to dataset
+    if (result.good())
+      result = m_GeneralImage.write(dataset);
+    if (result.good())
+      result = m_ImagePixel.write(dataset);
+
+    return result;
+  }
 
 private:
 
+  template<typename T>
+#ifdef DCMTK_USE_CXX11_STL
+  typename std::enable_if<DcmIODImageHasType<T,Types...>::value,OFCondition>::type
+#else
+  OFTypename OFenable_if
+  <
+    (OFvariadic_find_type<T,OFVARIADIC_TEMPLATE_PARAMETER_PACK(T)>::value != -1),
+    OFCondition
+  >::type
+#endif
+  readFloatingPointDoubleImagePixel(DcmItem& dataset)
+  {
+    if (dataset.tagExists(DCM_DoubleFloatPixelData))
+      return OFget<T>(&(m_ImagePixel = T(getData(),getRules())))->read(dataset);
+    return readFloatingPointImagePixel<IODFloatingPointImagePixelModule>(dataset);
+  }
+
+  template<typename T>
+#ifdef DCMTK_USE_CXX11_STL
+  typename std::enable_if<!DcmIODImageHasType<T,Types...>::value,OFCondition>::type
+#else
+  OFTypename OFenable_if
+  <
+    (OFvariadic_find_type<T,OFVARIADIC_TEMPLATE_PARAMETER_PACK(T)>::value == -1),
+    OFCondition
+  >::type
+#endif
+  readFloatingPointDoubleImagePixel(DcmItem& dataset)
+  {
+    return readFloatingPointImagePixel<IODFloatingPointImagePixelModule>(dataset);
+  }
+
+  template<typename T>
+#ifdef DCMTK_USE_CXX11_STL
+  typename std::enable_if<DcmIODImageHasType<T,Types...>::value,OFCondition>::type
+#else
+  OFTypename OFenable_if
+  <
+    (OFvariadic_find_type<T,OFVARIADIC_TEMPLATE_PARAMETER_PACK(T)>::value != -1),
+    OFCondition
+  >::type
+#endif
+  readFloatingPointImagePixel(DcmItem& dataset)
+  {
+    if (dataset.tagExists(DCM_FloatPixelData))
+      return OFget<T>(&(m_ImagePixel = T(getData(),getRules())))->read(dataset);
+    return readIntegerImagePixel(dataset);
+  }
+
+  template<typename T>
+#ifdef DCMTK_USE_CXX11_STL
+  typename std::enable_if<!DcmIODImageHasType<T,Types...>::value,OFCondition>::type
+#else
+  OFTypename OFenable_if
+  <
+    (OFvariadic_find_type<T,OFVARIADIC_TEMPLATE_PARAMETER_PACK(T)>::value == -1),
+    OFCondition
+  >::type
+#endif
+  readFloatingPointImagePixel(DcmItem& dataset)
+  {
+    return readIntegerImagePixel(dataset);
+  }
+
+  OFCondition readIntegerImagePixel(DcmItem& dataset)
+  {
+    Uint16 allocated, representation;
+    if
+    (
+      dataset.tagExists(DCM_PixelData) &&
+      dataset.findAndGetUint16(DCM_BitsAllocated, allocated).good() &&
+      dataset.findAndGetUint16(DCM_PixelRepresentation, representation).good()
+    )
+    switch ((allocated > 8 ? 2 : 0) | (representation ? 1 : 0))
+    {
+    case 0:
+      return readImagePixel<Uint8>(dataset);
+    case 1:
+      return readImagePixel<Sint8>(dataset);
+    case 2:
+      return readImagePixel<Uint16>(dataset);
+    case 3:
+      return readImagePixel<Sint16>(dataset);
+    default:
+      break;
+    }
+    return IOD_EC_InvalidPixelData;
+  }
+
+  template<typename T>
+#ifdef DCMTK_USE_CXX11_STL
+  typename std::enable_if<DcmIODImageHasType<T,Types...>::value,OFCondition>::type
+#else
+  OFTypename OFenable_if
+  <
+    (OFvariadic_find_type<IODImagePixelModule<T>,OFVARIADIC_TEMPLATE_PARAMETER_PACK(T)>::value != -1),
+    OFCondition
+  >::type
+#endif
+  readImagePixel(DcmItem& dataset)
+  {
+    return OFget<IODImagePixelModule<T> >(&(m_ImagePixel = IODImagePixelModule<T>(getData(),getRules())))->read(dataset);
+  }
+
+  template<typename T>
+#ifdef DCMTK_USE_CXX11_STL
+  typename std::enable_if<!DcmIODImageHasType<T,Types...>::value,OFCondition>::type
+#else
+  OFTypename OFenable_if
+  <
+    (OFvariadic_find_type<IODImagePixelModule<T>,OFVARIADIC_TEMPLATE_PARAMETER_PACK(T)>::value == -1),
+    OFCondition
+  >::type
+#endif
+  readImagePixel(DcmItem& dataset)
+  {
+    // Avoid compiler warning about unused parameter
+    OFstatic_cast(void, dataset);
+    return IOD_EC_InvalidPixelData;
+  }
+
   /// General Image Module
   IODGeneralImageModule m_GeneralImage;
 
   /// Image Pixel Module
-  IODImagePixelModule   m_ImagePixel;
-
+  IODImagePixelModuleType m_ImagePixel;
 };
 
 #endif // IODIMAGE_H
diff --git a/dcmiod/include/dcmtk/dcmiod/iodmacro.h b/dcmiod/include/dcmtk/dcmiod/iodmacro.h
index 709c23d..4430c2c 100644
--- a/dcmiod/include/dcmtk/dcmiod/iodmacro.h
+++ b/dcmiod/include/dcmtk/dcmiod/iodmacro.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -57,7 +57,6 @@ public:
    */
   CodeSequenceMacro(const CodeSequenceMacro& rhs);
 
-
   /** Convenience constructor to set initial values
    *  @param  item The item to be used for data storage. If NULL, the
    *          class creates an empty data container.
@@ -136,6 +135,14 @@ public:
     */
   virtual OFCondition getCodeMeaning(OFString &value,
                                      const signed long pos = 0);
+
+  /** Returns whether code is empty, i.e. no component of the Code Sequence Macro
+   *  is set. This can be used in order to find out whether someone actually
+   *  wanted to fill in a valid code as opposed of leaving it unset.
+   *  @return OFTrue if no component of this class is set, OFFalse otherwise.
+   */
+  virtual OFBool empty();
+
   /** Set Code Value
    *  @param  value The value to set
    *  @param  checkValue If OFTrue, VM and VR of value are checked
@@ -183,6 +190,8 @@ public:
                           const OFString &schemeVersion = "",
                           const OFBool checkValue = OFTrue);
 
+  virtual OFString toString();
+
 };
 
 
@@ -211,13 +220,13 @@ public:
 
   /** Constructor
    *  @param  modifierType Denotes type of Modifier Code Sequence (i.e. 1, 1C,
-   *          2, 2C or 3), default is 3
+   *          2, 2C or 3)
    *  @param  modifierVM Denotes how many items are allowed in the Modifier Code
    *          Sequence
    *  @param  modifierSeq Tag of the sequence that holds the modifier codes.
    *          The default is the Modifier Code Sequence.
    */
-  CodeWithModifiers(const OFString& modifierType = "3",
+  CodeWithModifiers(const OFString& modifierType,
                     const OFString& modifierVM = "1-n",
                     const DcmTagKey& modifierSeq = DCM_ModifierCodeSequence);
 
@@ -228,6 +237,7 @@ public:
 
   /** Assignment operator, performs deep copy.
    *  @param  rhs The component to be assigned from
+   *  @return Reference to this object
    */
   CodeWithModifiers& operator=(const CodeWithModifiers& rhs);
 
@@ -302,6 +312,9 @@ public:
 
 private:
 
+  /// Private undefined default constructor
+  CodeWithModifiers();
+
   /// Items of Modifier Code Sequence
   OFVector<CodeSequenceMacro*> m_Modifiers;
 
@@ -316,6 +329,7 @@ private:
 };
 
 
+
 /** Class implementing the SOP Instance Reference Macro
  */
 class DCMTK_DCMIOD_EXPORT SOPInstanceReferenceMacro : public IODComponent
@@ -501,6 +515,7 @@ public:
   /** Read Referenced Series Sequence item data from given item
    *  @param  source The item to read from
    *  @param  clearOldData If OFTrue, old data is cleared before reading
+   *  @return EC_Normal if data could be read successfully, error otherwise
    */
   virtual OFCondition read(DcmItem& source,
                            const OFBool clearOldData = OFTrue);
@@ -555,8 +570,6 @@ private:
 
 
 /** Class representing the Image SOP Instance Reference Macro
- *  TODO: Change implementation to use IODComponent class inherited anyway
- *  from SOPInstanceReferenceMacro
  */
 class DCMTK_DCMIOD_EXPORT ImageSOPInstanceReferenceMacro : public SOPInstanceReferenceMacro
 {
@@ -690,146 +703,9 @@ private:
 };
 
 
-/** Class representing an item within the the Primary Anatomic Structure Macro
- */
-class DCMTK_DCMIOD_EXPORT PrimaryAnatomicStructureMacroItem
-{
-
-public:
-
-  /** Constructor
-   */
-  PrimaryAnatomicStructureMacroItem();
-
-  /** Copy constructor
-   *  @param  rhs The item to copy from
-   */
-  PrimaryAnatomicStructureMacroItem(const PrimaryAnatomicStructureMacroItem& rhs);
-
-  /** Virtual destructor
-   */
-  virtual ~PrimaryAnatomicStructureMacroItem();
-
-  /** Clear (removes) all attributes handled by the modules of this component.
-   */
-  virtual void clearData();
-
-  /** Check whether this component's data satisfies the underlying
-   *  rules
-   *  @param  quiet If OFTrue, not error / warning messages will be produced.
-   *          Only the returned error code will indicate error or OK. Per
-   *          default, logging output is produced.
-   *  @result EC_Normal if rules are satisfied, error otherwise
-   */
-  virtual OFCondition check(const OFBool quiet = OFFalse);
-
-  /** Return the Anatomic Structure Code
-   *  @return Reference to the anatomic structure code
-   */
-  virtual CodeSequenceMacro& getAnatomicStructure();
-
-  /** Return the Anatomic Structure Modifier Codes
-   *  @return The Anatomic Structure Modifier Codes
-   */
-  virtual OFVector<CodeSequenceMacro*>& getAnatomicStructureModifier();
-
-  /** Reads Primary Anatomic Region Sequence Item from given item
-   *  @param  source The item to read from
-   *  @param  clearOldData If OFTrue, old data is cleared first, otherwise it is
-   *          kept where not overwritten
-   *  @return EC_Normal if successful, error otherwise
-   */
-  virtual OFCondition read(DcmItem& source,
-                           const OFBool clearOldData = OFTrue);
-
-  /** Write Anatomic Region Sequence Item to given item
-   * @param  item The item to write to
-   * @return EC_Normal if successful, error otherwise
-   */
-  virtual OFCondition write(DcmItem& item);
-
-  /** Assignment operator (performs deep copy)
-   *  @param  rhs The item to copy from
-   *  @return result
-   */
-  PrimaryAnatomicStructureMacroItem& operator=(const PrimaryAnatomicStructureMacroItem &rhs);
-
-private:
-
-  /// Primary Anatomic Structure Sequence Item
-  CodeSequenceMacro m_AnatomicStructure;
-
-  /// Primary Anatomic Structure Structure Modifier Sequence (SQ, 1-n, 3)
-  OFVector<CodeSequenceMacro*> m_AnatomicStructureModifier;
-
-};
-
-
 /** Class representing the Primary Anatomic Structure Macro
  */
-class DCMTK_DCMIOD_EXPORT PrimaryAnatomicStructureMacro
-{
-
-public:
-
-  /** Constructor
-   */
-  PrimaryAnatomicStructureMacro();
-
-  /** Copy constructor
-   *  @param  rhs The macro to copy from
-   */
-  PrimaryAnatomicStructureMacro(const PrimaryAnatomicStructureMacro& rhs);
-
-  /** Virtual destructor
-   */
-  virtual ~PrimaryAnatomicStructureMacro();
-
-  /** Clear (removes) all attributes handled by the modules of this component.
-   */
-  virtual void clearData();
-
-  /** Check whether this component's data satisfies the underlying
-   *  rules
-   *  @param  quiet If OFTrue, not error / warning messages will be produced.
-   *          Only the returned error code will indicate error or OK. Per
-   *          default, logging output is produced.
-   *  @result EC_Normal if rules are satisfied, error otherwise
-   */
-  virtual OFCondition check(const OFBool quiet = OFFalse);
-
-  /** Return Primary Anatomic Structure items
-   *  @return Reference to items of this macro
-   */
-  virtual OFVector<PrimaryAnatomicStructureMacroItem*>& getPrimaryAnatomicStructure();
-
-  /** Reads Primary Anatomic Region Sequence (i.e.\ this macro) from given item
-   *  @param  source The item to read from
-   *  @param  clearOldData If OFTrue, old data is cleared first, otherwise it is
-   *          kept where not overwritten
-   *  @return EC_Normal if reading was fine, error otherwise
-   */
-  virtual OFCondition read(DcmItem& source,
-                           const OFBool clearOldData = OFTrue);
-
-  /** Write Anatomic Region Sequence (i.e.\ this macro) to given item
-   *  @param  item The item to write to
-   *  @return EC_Normal if writing was fine, error otherwise
-   */
-  virtual OFCondition write(DcmItem& item);
-
-  /** Assignment operator
-   *  @param  rhs The macro to copy from
-   *  @result Reference to "this" object
-   */
-  PrimaryAnatomicStructureMacro& operator=(const PrimaryAnatomicStructureMacro &rhs);
-
-private:
-
-  /// Primary Anatomic Structure Sequence (SQ, 0-1, 3)
-  OFVector<PrimaryAnatomicStructureMacroItem*> m_PrimaryAnatomicStructure;
-};
-
+typedef CodeWithModifiers PrimaryAnatomicStructureMacro;
 
 /** Class representing the General Anatomy Mandatory or Optional Macro
  */
@@ -847,7 +723,7 @@ public:
    */
   GeneralAnatomyMacro(const OFString& type);
 
-  /** Copy constructor
+  /** Copy constructor, creates deep copy.
    *  @param  rhs The macro to copy from
    */
   GeneralAnatomyMacro(const GeneralAnatomyMacro& rhs);
@@ -907,10 +783,24 @@ public:
    */
   GeneralAnatomyMacro& operator=(const GeneralAnatomyMacro &rhs);
 
+  /** Comparison operator that compares the normalized value of this object
+   *  with a given object of the same type, i.e.\ the elements within both
+   *  objects (this and rhs parameter) are compared by value.
+   *  @param  rhs the right hand side of the comparison
+   *  @return 0 if the object values are equal.
+   *          -1 if either the value of the first component that does not match
+   *          is lower in the rhs object, or all compared components match
+   *          but the rhs component is shorter.
+   *          1 if either the value of the first component that does not match
+   *          is greater in the rhs object, or all compared components match
+   *          but the rhs component is longer.
+   */
+  virtual int compare(const GeneralAnatomyMacro& rhs) const;
+
 private:
 
   /// Type (1,2,3) of Anatomic Region Sequence.
-  OFString m_Type; // TODO: Make enum?
+  OFString m_Type;
 
   /// Anatomic Region Sequence (SQ, 1, 1) (Code Sequence Macro within item of
   /// Anatomic Region Sequence))
@@ -1284,6 +1174,7 @@ public:
    *  @param  source The item to read from
    *  @param  clearOldData If OFTrue, old data is cleared before reading, otherwise
    *          it is kept/overwritten
+   *  @return EC_Normal if reading was successful, an error code otherwise
    */
   virtual OFCondition read(DcmItem& source,
                            const OFBool clearOldData = OFTrue);
@@ -1321,7 +1212,7 @@ private:
 
 /** Class representing the HL7 V2 Hierarchic Designator Macro
  */
-class HL7HierarchicDesignatorMacro : public IODComponent
+class DCMTK_DCMIOD_EXPORT HL7HierarchicDesignatorMacro : public IODComponent
 {
 
 public:
@@ -1405,7 +1296,7 @@ public:
 /** Class representing the Mandatory View and Slice Progression Direction Macro
  */
 
-class MandatoryViewAndSliceProgressionDirectionMacro : public IODComponent
+class DCMTK_DCMIOD_EXPORT MandatoryViewAndSliceProgressionDirectionMacro : public IODComponent
 {
 
 public:
diff --git a/dcmiod/include/dcmtk/dcmiod/iodreferences.h b/dcmiod/include/dcmtk/dcmiod/iodreferences.h
index 8d0cb98..5d037e2 100644
--- a/dcmiod/include/dcmtk/dcmiod/iodreferences.h
+++ b/dcmiod/include/dcmtk/dcmiod/iodreferences.h
@@ -197,6 +197,10 @@ class DCMTK_DCMIOD_EXPORT IODImageReference : public IODReference
      */
     virtual TYPE getType() const {return IMAGE; }
 
+    // Avoid overridden virtual function warning, i.e. tell the compiler that
+    // we want to have both functions to be polymorph and available to the user.
+    using IODReference::readFromFile;
+
     /** Initialize reference from given file
      *  @param  filename The file to read from
      *  @param  frameNumbers The frame numbers to reference. It is not checked
@@ -246,6 +250,10 @@ class DCMTK_DCMIOD_EXPORT IODSegmentationReference : public IODReference
      */
     virtual TYPE getType() const {return SEGMENT; }
 
+    // Avoid overridden virtual function warning, i.e. tell the compiler that
+    // we want to have both functions to be polymorph and available to the user.
+    using IODReference::readFromFile;
+
     /** Initialize reference from given file
      *  @param  filename The file to read from
      *  @param  segmentNumbers The segment numbers to reference. It is not
diff --git a/dcmiod/include/dcmtk/dcmiod/iodutil.h b/dcmiod/include/dcmtk/dcmiod/iodutil.h
index d4f3c39..8de4ef8 100644
--- a/dcmiod/include/dcmtk/dcmiod/iodutil.h
+++ b/dcmiod/include/dcmtk/dcmiod/iodutil.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -29,6 +29,8 @@
 #include "dcmtk/dcmdata/dcsequen.h"
 #include "dcmtk/dcmdata/dcdatset.h"
 #include "dcmtk/dcmdata/dcdatutl.h"
+#include "dcmtk/ofstd/ofdate.h"
+#include "dcmtk/ofstd/oftime.h"
 #include "dcmtk/dcmiod/ioddef.h"
 #include "dcmtk/dcmiod/iodrules.h"
 #include "dcmtk/dcmiod/iodtypes.h"
@@ -636,6 +638,7 @@ public:
               if ( result.bad() )
               {
                   destination.findAndDeleteSequenceItem(seqKey, -1 /* last */);
+                  DCMIOD_ERROR("Could not write item #" << count << " in " << DcmTag(seqKey).getTagName() << ": " << result.text());
               }
             }
             else
@@ -755,12 +758,16 @@ public:
       /* If we do not have data, insert empty for type 2 */
       else if (type == "2")
       {
-          destination.insertEmptyElement(seqKey);
+        destination.insertEmptyElement(seqKey);
       }
       else if (type == "1C")
       {
         DCMIOD_TRACE("Skipping type 1C sequence " << seqKey << ": No data or incomplete data available");
       }
+      else if (type  == "3")
+      {
+        DCMIOD_TRACE("Skipping type 3 sequence " << seqKey << ": No data or incomplete data available");
+      }
       /* Check outcome */
       checkSubSequence(result, destination, seqKey, "1", type, module);
     }
@@ -793,7 +800,10 @@ public:
         DCMIOD_ERROR("Cannot write sequence " << seqKey << " (no rule supplied)");
         result = EC_CannotCheck;
       }
-      writeSingleItem(result, seqKey, source, destination, rule->getType(), rule->getModule());
+      else
+      {
+        writeSingleItem(result, seqKey, source, destination, rule->getType(), rule->getModule());
+      }
     }
   }
 
@@ -864,6 +874,26 @@ public:
     }
   }
 
+
+  template <typename ModuleType>
+  static OFCondition setContentDateAndTimeNow(ModuleType& module)
+  {
+    OFDate date;
+    date.setCurrentDate();
+    OFString tempstr;
+    date.getISOFormattedDate(tempstr, OFFalse /* no delimiters */);
+    OFCondition result = module.setContentDate(tempstr);
+    if (result.good())
+    {
+      OFTime time;
+      time.setCurrentTime();
+      time.getISOFormattedTime(tempstr, OFTrue /* include seconds */, OFFalse, OFFalse, OFFalse);
+      result = module.setContentTime(tempstr);
+    }
+    return result;
+  }
+
+
   /** Function that takes a string representation of a tag key and
    *  converts it to a tag key instance if possible
    *  @param  keyString String of the format "(gggg,eeee)"
@@ -887,6 +917,19 @@ public:
     */
   static OFString createUID(const Uint8 level = 0);
 
+  /** Print warning if more than 65535 frames are present. This is the maximum
+   *  number since the Number of Frames attribute is only 16 bit thus not
+   *  permitting larger values.
+   *  The method returns the number of frames that can be used, i.e. either
+   *  65535 if the maximum is exceeded, otherwise the actual number of frames.
+   *  @param  numFramesPresent The number of frames actually present
+   *  @param  warning The message to be printed if Number of Frames is larger
+   *          than 65535.
+   *  @return Number of frames that can be safely used.
+   */
+  static Uint16 limitMaxFrames(const size_t numFramesPresent,
+                               const OFString& warning);
+
 private:
 
   // We only have static functions so we do not need an instance of
diff --git a/dcmiod/include/dcmtk/dcmiod/modbase.h b/dcmiod/include/dcmtk/dcmiod/modbase.h
index d372a66..2270c17 100644
--- a/dcmiod/include/dcmtk/dcmiod/modbase.h
+++ b/dcmiod/include/dcmtk/dcmiod/modbase.h
@@ -66,8 +66,8 @@ public:
   IODComponent(IODComponent* parent = NULL);
 
   /** Assignment operator, copies contained item and rule set from rhs to
-   *  "this" attribute set. Produces clone copy, i.e.\ the contained item
-   *  and the rule set is copied. The parent component is set to NULL.
+   *  "this" attribute set. Performs deep copy, i.e.\ the contained item
+   *  and the rule set are copied. The parent component is set to NULL.
    *  @param  rhs The IODComponent to be assigned
    *  @return Reference to this module
    */
@@ -192,22 +192,28 @@ public:
                            IODRules& rules,
                            DcmItem& destination,
                            const OFString& componentName);
+
 protected:
 
-    /// Shared pointer to the data handled by this class. The item may contain
-    /// more attributes than this class is actually responsible for
-    OFshared_ptr<DcmItem> m_Item;
+  /// Shared pointer to the data handled by this class. The item may contain
+  /// more attributes than this class is actually responsible for
+  OFshared_ptr<DcmItem> m_Item;
+
+  /// Rules describing the attributes governed by this class
+  OFshared_ptr<IODRules> m_Rules;
 
-    /// Rules describing the attributes governed by this class
-    OFshared_ptr<IODRules> m_Rules;
+  /// The parent component (may be NULL) of this class
+  IODComponent* m_Parent;
 
-    /// The parent component (may be NULL) of this class
-    IODComponent* m_Parent;
 };
 
 
 /** The class IODModule is an IODComponent without parent component since
  *  a module does always belong to the top level dataset.
+ *  Also, different from IODComponents, modules usually share data and
+ *  rules. This is taken into account in the assignment operator and
+ *  copy constructor which only create a shallow copy, i.e. modules
+ *  share the same data and rules afterwards.
  */
 class DCMTK_DCMIOD_EXPORT IODModule : public IODComponent
 {
@@ -229,6 +235,19 @@ public:
    */
   IODModule();
 
+  /** Copy constructor, creates shallow copy
+   *  @param  rhs The module to copy from
+   */
+  IODModule(const IODModule& rhs);
+
+  /** Assignment operator, creates shallow copy
+   *  @param  rhs The module to copy from
+   *  @return Returns reference to this object
+   */
+  IODModule& operator=(const IODModule& rhs);
+
+  /** Desctructor
+   */
   ~IODModule() {};
 };
 
diff --git a/dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h b/dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h
index 0991f45..43368a2 100644
--- a/dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h
+++ b/dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -73,13 +73,15 @@ public:
   virtual ~IODCommonInstanceReferenceModule();
 
   /** Add references
+   *  @param  references The references to be added
+   *  @param  studyInstanceUID The Study Instance UID the references belong to
+   *  @param  clearOldData Delete any old referneces if OFTrue, otherwise keep them
    *  @result EC_Normal if successful, error otherwise
    */
   virtual size_t addReferences(const IODReferences& references,
                                const OFString& studyInstanceUID,
                                const OFBool clearOldData = OFTrue);
 
-
   /** Read data of this module from given source item
    *  @param  source The item to read from
    *  @param  clearOldData If OFTrue, old data is cleared before reading, otherwise
@@ -122,6 +124,8 @@ protected:
 
 private:
 
+  void freeMemory();
+
   /// Vector with all items of the Referenced Series Sequence
   OFVector<IODSeriesAndInstanceReferenceMacro::ReferencedSeriesItem*> m_ReferenceSeriesItems;
 
diff --git a/dcmiod/include/dcmtk/dcmiod/modenhequipment.h b/dcmiod/include/dcmtk/dcmiod/modenhequipment.h
index 78b9f5e..7721d3c 100644
--- a/dcmiod/include/dcmtk/dcmiod/modenhequipment.h
+++ b/dcmiod/include/dcmtk/dcmiod/modenhequipment.h
@@ -40,9 +40,9 @@ class DCMTK_DCMIOD_EXPORT IODEnhGeneralEquipmentModule : public IODModule
 public:
 
     /** Convenient struct containing all information required for setting
-     *  equipment information for use by external code)
+     *  enhanced equipment information (for use by external code)
      */
-    struct EquipmentInfo
+    struct DCMTK_DCMIOD_EXPORT EquipmentInfo
     {
 
       /** Default Constructor
@@ -51,39 +51,52 @@ public:
         m_Manufacturer(),
         m_ManufacturerModelName(),
         m_DeviceSerialNumber(),
-        m_SoftwareVersions() {};
+        m_SoftwareVersions() {}
 
       /** Convenience Constructor setting all values
        *  @param manufacturer Manufacturer
-       *  @param modelName Model name
+       *  @param manufacturerModelName Manufacturer's model name
        *  @param deviceSerialNumber Serial number
-       * *@param softwareVersions Software versions
+       *  @param softwareVersions Software versions
        */
       EquipmentInfo(const OFString& manufacturer,
-                    const OFString& modelName,
+                    const OFString& manufacturerModelName,
                     const OFString& deviceSerialNumber,
                     const OFString& softwareVersions) :
         m_Manufacturer(manufacturer),
-        m_ManufacturerModelName(modelName),
+        m_ManufacturerModelName(manufacturerModelName),
         m_DeviceSerialNumber(deviceSerialNumber),
-        m_SoftwareVersions(softwareVersions) {};
+        m_SoftwareVersions(softwareVersions) {}
 
-      // Manufacturer (VM 1)
+      /** Perform simple check whether all equipment data is filled in. Does not
+       *  check VR or VM (will be checked in write() routine, though)
+       *  @return OFTrue if data is complete, OFFalse otherwise
+       */
+      OFBool isDataComplete() const
+      {
+        if (m_Manufacturer.empty() || m_ManufacturerModelName.empty() || m_DeviceSerialNumber.empty() || m_SoftwareVersions.empty())
+        {
+          return OFFalse;
+        }
+        return OFTrue;
+      }
+
+      /// Manufacturer (VM 1)
       OFString m_Manufacturer;
 
-      // Manufacturer's Model Name (VM 1)
+      /// Manufacturer's Model Name (VM 1)
       OFString m_ManufacturerModelName;
 
-      // Device Serial Number (VM 1)
+      /// Device Serial Number (VM 1)
       OFString m_DeviceSerialNumber;
 
-      // Software Version(s) (VM 1-n)
+      /// Software Version(s) (VM 1-n)
       OFString m_SoftwareVersions;
     };
 
     /** Constructor
-     *  @param  item The item to be used for data storage. If NULL, the
-     *          class creates an empty data container.
+     *  @param  item The item to be used for data storage. If NULL, the class
+     *          creates an empty data container.
      *  @param  rules The rule set for this class. If NULL, the class creates
      *          one from scratch and adds its values.
      */
@@ -101,9 +114,9 @@ public:
     static OFCondition create(const EquipmentInfo& info,
                               IODEnhGeneralEquipmentModule* equipment);
 
-   /** Resets rules to their original values.
-    */
-   virtual void resetRules();
+    /** Resets rules to their original values.
+     */
+    virtual void resetRules();
 
     /** Get name of module
      *  @return Name of the module ("EnhancedEquipmentModule")
@@ -174,6 +187,10 @@ public:
     virtual OFCondition setSoftwareVersions(const OFString &value,
                                             const OFBool checkValue = OFTrue);
 
+    /** Set all equipment information at once
+     *  @param  info The equipment information to be set.
+     *  @return EC_Normal if values could be set, error otherwise
+     */
     virtual OFCondition set(const EquipmentInfo& info);
 
 private:
diff --git a/dcmiod/include/dcmtk/dcmiod/modequipment.h b/dcmiod/include/dcmtk/dcmiod/modequipment.h
index 8f6c694..f974c83 100644
--- a/dcmiod/include/dcmtk/dcmiod/modequipment.h
+++ b/dcmiod/include/dcmtk/dcmiod/modequipment.h
@@ -43,30 +43,50 @@ class DCMTK_DCMIOD_EXPORT IODGeneralEquipmentModule : public IODModule
 
 public:
 
-    /** Convenient struct containing all information required for setting
-     *  equipment information for use by external code)
+    /** Convenient struct containing commonly used equipment information
+     *  (for use by external code)
      */
-    struct EquipmentInfo
+    struct DCMTK_DCMIOD_EXPORT EquipmentInfo
     {
-      // Manufacturer (VM 1)
+
+      /** Default Constructor
+       */
+      EquipmentInfo() {}
+
+      /** Convenience Constructor setting commonly used values
+       *  @param manufacturer Manufacturer
+       *  @param manufacturerModelName Manufacturer's model name
+       *  @param deviceSerialNumber Serial number
+       *  @param softwareVersions Software versions
+       */
+      EquipmentInfo(const OFString& manufacturer,
+                    const OFString& manufacturerModelName,
+                    const OFString& deviceSerialNumber,
+                    const OFString& softwareVersions) :
+        m_Manufacturer(manufacturer),
+        m_ManufacturerModelName(manufacturerModelName),
+        m_DeviceSerialNumber(deviceSerialNumber),
+        m_SoftwareVersions(softwareVersions) {}
+
+      /// Manufacturer (VM 1)
       OFString m_Manufacturer;
 
-      // Manufacturer's Model Name (VM 1)
+      /// Manufacturer's Model Name (VM 1)
       OFString m_ManufacturerModelName;
 
-      // Device Serial Number (VM 1)
+      /// Device Serial Number (VM 1)
       OFString m_DeviceSerialNumber;
 
-      // Software Version(s) (VM 1-n)
+      /// Software Version(s) (VM 1-n)
       OFString m_SoftwareVersions;
     };
 
     /** Constructor
-    *  @param  item The item to be used for data storage. If NULL, the
-    *          class creates an empty data container.
-    *  @param  rules The rule set for this class. If NULL, the class creates
-    *          one from scratch and adds its values.
-    */
+     *  @param  item The item to be used for data storage. If NULL, the class
+     *          creates an empty data container.
+     *  @param  rules The rule set for this class. If NULL, the class creates
+     *          one from scratch and adds its values.
+     */
     IODGeneralEquipmentModule(OFshared_ptr<DcmItem> item,
                               OFshared_ptr<IODRules> rules);
 
@@ -84,7 +104,6 @@ public:
 
     /** Get name of module
      *  @return Name of the module ("GeneralEquipmentModule")
-     *          depending on configuration)
      */
     virtual OFString getName() const;
 
@@ -225,7 +244,7 @@ public:
 
 private:
 
-    /// Name of the modue ("GeneralEquipmentModule")
+    /// Name of the module ("GeneralEquipmentModule")
     OFString m_ModuleName;
 };
 
diff --git a/dcmiod/include/dcmtk/dcmiod/modfloatingpointimagepixel.h b/dcmiod/include/dcmtk/dcmiod/modfloatingpointimagepixel.h
new file mode 100644
index 0000000..0507228
--- /dev/null
+++ b/dcmiod/include/dcmtk/dcmiod/modfloatingpointimagepixel.h
@@ -0,0 +1,246 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmiod
+ *
+ *  Author: Michael Onken
+ *
+ *  Purpose: Floating Point and Double Floating Point Image Pixel Module
+ *
+ */
+
+#ifndef MODFLOATINGPOINTIMAGEPIXEL_H
+#define MODFLOATINGPOINTIMAGEPIXEL_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmiod/modimagepixelbase.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
+
+/** Class representing Floating Point Image Pixel Module:
+ *
+ *  Samples Per Pixel: (US, 1, 1)
+ *  Photometric Interpretation (CS, 1, 1)
+ *  Rows: (US, 1, 1)
+ *  Columns: (US, 1, 1)
+ *  Bits Allocated: (US, 1 1)
+ *  Pixel Aspect Ratio: (IS,  2, 1C)
+ *  Float Pixel Padding Value: (FL, 1, 3)
+ *  Float Pixel Padding Range Limit: (FL, 1, 1C)
+ */
+class DCMTK_DCMIOD_EXPORT IODFloatingPointImagePixelModule : public IODImagePixelBase
+{
+
+public:
+
+  /// Data type of pixels
+  typedef Float32 value_type;
+
+  static const DcmTagKey pixel_data_tag;
+
+  /** Constructor
+   *  @param  item The item to be used for data storage. If NULL, the
+   *          class creates an empty data container.
+   *  @param  rules The rule set for this class. If NULL, the class creates
+   *          one from scratch and adds its values.
+   */
+  IODFloatingPointImagePixelModule(OFshared_ptr<DcmItem> item,
+                                   OFshared_ptr<IODRules> rules);
+
+  /** Constructor
+   */
+  IODFloatingPointImagePixelModule();
+
+  /** Destructor
+   */
+  virtual ~IODFloatingPointImagePixelModule();
+
+  /** Read attributes from given item into this class
+   *  @param source  The source to read from
+   *  @param clearOldData If OFTrue, old data is cleared before reading. Otherwise
+   *         old data is overwritten (or amended)
+   *  @result EC_Normal if reading was successful, error otherwise
+   */
+  virtual OFCondition read(DcmItem& source,
+                           const OFBool clearOldData = OFTrue);
+
+  /** Write attributes from this class into given item
+   *  @param  destination The item to write to
+   *  @result EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition write(DcmItem& destination);
+
+  /** Resets rules to their original values
+   */
+  virtual void resetRules();
+
+  /** Get name of module
+   *  @return Name of the module ("FloatingPointImagePixelModule")
+   */
+  virtual OFString getName() const;
+
+  /** Get pixel data type, always returns DataType::FLOAT for this class.
+   *  @return The data type of the pixel data
+   */
+  virtual DataType getDataType() const;
+
+  /** Get Float Pixel Padding Value
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+  */
+  virtual OFCondition getFloatPixelPaddingValue(Float32& value,
+                                                const signed long pos = 0);
+
+  /** Get Float Pixel Padding Range Limit
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+  */
+  virtual OFCondition getFloatPixelPaddingRangeLimit(Float32& value,
+                                                     const signed long pos = 0);
+
+  /** Set Float Pixel Pixel Padding Value
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  checkValue Check 'value' for conformance with VR (FL) and consistency
+   *    with other attributes if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setFloatPixelPaddingValue(const Float32 value,
+                                                const OFBool checkValue = OFTrue);
+
+  /** Set Float Pixel Padding Range Limit
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  checkValue Check 'value' for conformance with VR (FL) and consistency
+   *    with other attributes if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setFloatPixelPaddingRangeLimit(const Float32 value,
+                                                     const OFBool checkValue = OFTrue);
+
+private:
+
+  /// This module's name ("FloatingPointImagePixelModule")
+  static const OFString m_ModuleName;
+
+};
+
+
+/** Class representing Double Floating Point Image Pixel Module:
+ *
+ *  Samples Per Pixel: (US, 1, 1)
+ *  Photometric Interpretation (CS, 1, 1)
+ *  Rows: (US, 1, 1)
+ *  Columns: (US, 1, 1)
+ *  Bits Allocated: (US, 1 1)
+ *  Pixel Aspect Ratio: (IS,  2, 1C)
+ *  Double Float Pixel Padding Value: (FD, 1, 3)
+ *  Double Float Pixel Padding Range Limit: (FD, 1, 1C)
+ */
+class DCMTK_DCMIOD_EXPORT IODDoubleFloatingPointImagePixelModule: public IODImagePixelBase
+{
+
+public:
+
+  /// Data type of pixels
+  typedef Float64 value_type;
+
+  static const DcmTagKey pixel_data_tag;
+
+  /** Constructor
+   *  @param  item The item to be used for data storage. If NULL, the
+   *          class creates an empty data container.
+   *  @param  rules The rule set for this class. If NULL, the class creates
+   *          one from scratch and adds its values.
+   */
+  IODDoubleFloatingPointImagePixelModule(OFshared_ptr<DcmItem> item,
+                                         OFshared_ptr<IODRules> rules);
+
+  /** Constructor
+   */
+  IODDoubleFloatingPointImagePixelModule();
+
+  /** Destructor
+   */
+  virtual ~IODDoubleFloatingPointImagePixelModule();
+
+  /** Read attributes from given item into this class
+   *  @param source  The source to read from
+   *  @param clearOldData If OFTrue, old data is cleared before reading. Otherwise
+   *         old data is overwritten (or amended)
+   *  @result EC_Normal if reading was successful, error otherwise
+   */
+  virtual OFCondition read(DcmItem& source,
+                           const OFBool clearOldData = OFTrue);
+
+  /** Write attributes from this class into given item
+   *  @param  destination The item to write to
+   *  @result EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition write(DcmItem& destination);
+
+  /** Resets rules to their original values
+   */
+  virtual void resetRules();
+
+  /** Get name of module
+   *  @return Name of the module ("DoubleFloatingPointImagePixelModule")
+   */
+  virtual OFString getName() const;
+
+  /** Get pixel data type, always returns DataType::DOUBLE for this class.
+   *  @return The data type of the pixel data
+   */
+  virtual DataType getDataType() const;
+
+  /** Get Double Float Pixel Padding Value
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+  */
+  virtual OFCondition getDoubleFloatPixelPaddingValue(Float64& value,
+                                                       const signed long pos = 0);
+
+  /** Get Double Float Pixel Padding Range Limit
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+  */
+  virtual OFCondition getDoubleFloatPixelPaddingRangeLimit(Float64& value,
+                                                            const signed long pos = 0);
+
+  /** Set Double Float Pixel Pixel Padding Value
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  checkValue Check 'value' for conformance with VR (FD) and consistency
+   *    with other attributes if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setDoubleFloatPixelPaddingValue(const Float64 value,
+                                                      const OFBool checkValue = OFTrue);
+
+  /** Set Double Float Pixel Padding Range Limit
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  checkValue Check 'value' for conformance with VR (FD) and consistency
+   *    with other attributes if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setDoubleFloatPixelPaddingRangeLimit(const Float64 value,
+                                                           const OFBool checkValue = OFTrue);
+
+private:
+
+  /// This module's name ("DoubleFloatingPointImagePixelModule")
+  static const OFString m_ModuleName;
+
+};
+
+#endif // MODFLOATINGPOINTIMAGEPIXEL_H
diff --git a/dcmiod/include/dcmtk/dcmiod/modfor.h b/dcmiod/include/dcmtk/dcmiod/modfor.h
index 7da8fc4..76d7519 100644
--- a/dcmiod/include/dcmtk/dcmiod/modfor.h
+++ b/dcmiod/include/dcmtk/dcmiod/modfor.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2015-2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -97,6 +97,13 @@ public:
   virtual OFCondition setPositionReferenceIndicator(const OFString &value,
                                                     const OFBool checkValue = OFTrue);
 
+  /** Make sure that the module contains a Frame of Reference Instance UID, i.e.\
+   *  a new one is created if empty. An invalid UID is corrected if desired.
+   *  @param  correctInvalid Correct invalid UID if OFTrue, otherwise do nothing
+   *
+   */
+  void ensureFrameOfReferenceUID(const OFBool correctInvalid = OFFalse);
+
 
 private:
 
diff --git a/dcmiod/include/dcmtk/dcmiod/modgeneralstudy.h b/dcmiod/include/dcmtk/dcmiod/modgeneralstudy.h
index 5fa8114..70d289c 100644
--- a/dcmiod/include/dcmtk/dcmiod/modgeneralstudy.h
+++ b/dcmiod/include/dcmtk/dcmiod/modgeneralstudy.h
@@ -36,7 +36,7 @@
   * Study ID: (SH, 1, 2)
   * Accession Number: (SH, 1, 2)
   * Study Description: (LO, 1, 3)
-  * Issuer of Accession Number Sequence: (SQ, 3, 1)
+  * Issuer of Accession Number Sequence: (SQ, 1, 3)
   * Procedure Code Sequence: (SQ, 1-n, 3)
   * Reason for Performed Procedure Code Sequence: (SQ, 1-n, 3)
   */
diff --git a/dcmiod/include/dcmtk/dcmiod/modimagepixel.h b/dcmiod/include/dcmtk/dcmiod/modimagepixel.h
index d76be12..281edf5 100644
--- a/dcmiod/include/dcmtk/dcmiod/modimagepixel.h
+++ b/dcmiod/include/dcmtk/dcmiod/modimagepixel.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2015-2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -23,9 +23,10 @@
 #define MODIMAGEPIXEL_H
 
 #include "dcmtk/config/osconfig.h"
-#include "dcmtk/dcmiod/modbase.h"
+#include "dcmtk/dcmiod/modimagepixelbase.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
 
-/** Class representing the General Image Module:
+/** Class representing the Image Pixel Module:
  *
  *  Samples Per Pixel: (US, 1, 1)
  *  Photometric Interpretation (CS, 1, 1)
@@ -40,11 +41,17 @@
  *  Pixel Aspect Ratio: (IS,  2, 1C)
  *  ICC Profile: (OB, 1, 3)
  */
-class DCMTK_DCMIOD_EXPORT IODImagePixelModule : public IODModule
+template<typename T>
+class DCMTK_DCMIOD_EXPORT IODImagePixelModule : public IODImagePixelBase
 {
 
 public:
 
+  /// Data type of pixels
+  typedef T value_type;
+
+  static const DcmTagKey pixel_data_tag;
+
   /** Constructor
    *  @param  item The item to be used for data storage. If NULL, the
    *          class creates an empty data container.
@@ -62,6 +69,21 @@ public:
    */
   virtual ~IODImagePixelModule();
 
+  /** Read attributes from given item into this class
+   *  @param source  The source to read from
+   *  @param clearOldData If OFTrue, old data is cleared before reading. Otherwise
+   *         old data is overwritten (or amended)
+   *  @result EC_Normal if reading was successful, error otherwise
+   */
+  virtual OFCondition read(DcmItem& source,
+                           const OFBool clearOldData = OFTrue);
+
+  /** Write attributes from this class into given item
+   *  @param  destination The item to write to
+   *  @result EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition write(DcmItem& destination);
+
   /** Resets rules to their original values
    */
   virtual void resetRules();
@@ -71,44 +93,10 @@ public:
    */
   virtual OFString getName() const;
 
-  /** Get Samples per Pixel
-   *  @param  value Reference to variable in which the value should be stored
-   *  @param  pos Index of the value to get (0..vm-1)
-   *  @return EC_Normal if successful, an error code otherwise
+  /** Get pixel data type, always returns DataType::INTEGER for this class.
+   *  @return The data type of the pixel data
    */
-  virtual OFCondition getSamplesPerPixel(Uint16 &value,
-                                         const signed long pos = 0);
-
-  /** Get Photometric Interpretation
-   *  @param  value Reference to variable in which the value should be stored
-   *  @param  pos Index of the value to get (0..vm-1)
-   *  @return EC_Normal if successful, an error code otherwise
-  */
-  virtual OFCondition getPhotometricInterpretation(OFString&value,
-                                                  const signed long pos = 0);
-
-  /** Get Rows
-   *  @param  value Reference to variable in which the value should be stored
-   *  @param  pos Index of the value to get (0..vm-1)
-   *  @return EC_Normal if successful, an error code otherwise
-   */
-  virtual OFCondition getRows(Uint16& value,
-                              const signed long pos = 0);
-
-  /** Get Columns
-   *  @param  value Reference to variable in which the value should be stored
-   *  @param  pos Index of the value to get (0..vm-1)
-   *  @return EC_Normal if successful, an error code otherwise
-   */
-  virtual OFCondition getColumns(Uint16& value,
-                                  const signed long pos = 0);
-   /** Get Bits Allocated
-    *  @param  value Reference to variable in which the value should be stored
-    *  @param  pos Index of the value to get (0..vm-1)
-    *  @return EC_Normal if successful, an error code otherwise
-    */
-  virtual OFCondition getBitsAllocated(Uint16& value,
-                                        const signed long pos = 0);
+  virtual DataType getDataType() const;
 
    /** Get Bits Stored
     *  @param  value Reference to variable in which the value should be stored
@@ -142,21 +130,13 @@ public:
   virtual OFCondition getPlanarConfiguration(Uint16& value,
                                              const signed long pos = 0);
 
-  /** Get Pixel Aspect Ratio
-   *  @param  value Reference to variable in which the value should be stored
-   *  @param  pos Index of the value to get (0..vm-1)
-   *  @return EC_Normal if successful, an error code otherwise
-  */
-  virtual OFCondition getPixelAspectRatio(Uint16& value,
-                                          const signed long pos = 0);
-
   /** Get ICC Profile
    *  @param  values Reference to variable in which the values should be stored
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition getICCProfile(OFVector<Uint8>& values);
 
-  /** set Samples per Pixel
+  /** Set Samples per Pixel
    *  @param  value Reference to variable in which the value should be stored
    *  @param  checkValue Check 'value' for conformance with VR (US) and VM (1) if enabled
    *  @return EC_Normal if successful, an error code otherwise
@@ -172,23 +152,6 @@ public:
   virtual OFCondition setPhotometricInterpretation(const OFString& value,
                                                    const OFBool checkValue = OFTrue);
 
-  /** Set Rows
-   *  @param  value Reference to variable in which the value should be stored
-   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
-   *          with other setter functions).
-   *  @return EC_Normal if successful, an error code otherwise
-   */
-  virtual OFCondition setRows(const Uint16 value,
-                              const OFBool checkValue = OFTrue);
-
-  /** Set Columns
-   *  @param  value Reference to variable in which the value should be stored
-   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
-   *          with other setter functions).
-   *  @return EC_Normal if successful, an error code otherwise
-   */
-  virtual OFCondition setColumns(const Uint16 value,
-                                 const OFBool checkValue = OFTrue);
   /** Set Bits Allocated
    *  @param  value Reference to variable in which the value should be stored
    *  @param  checkValue Check 'value'. Not evaluated (here for consistency
@@ -234,16 +197,6 @@ public:
   virtual OFCondition setPlanarConfiguration(const Uint16 value,
                                              const OFBool checkValue = OFTrue);
 
-  /** Set Pixel Aspect Ratio
-   *  @param  verticalPixelSize The vertical pixel size (no unit)
-   *  @param  horizontalPixelSize The horizontal pixel size (no unit)
-   *  @param  checkValue Check 'value' for conformance with VR (IS)
-   *  @return EC_Normal if successful, an error code otherwise
-   */
-  virtual OFCondition setPixelAspectRatio(const OFString& verticalPixelSize,
-                                          const OFString& horizontalPixelSize,
-                                          const OFBool checkValue = OFTrue);
-
   /** Set ICC Profile
    *  @param  values Reference to variable in which the values should be stored
    *  @param  length Length of array provided in values parameter
@@ -251,6 +204,7 @@ public:
    */
   virtual OFCondition setICCProfile(const Uint8* values,
                                     const size_t length);
+
 private:
 
   /// This module's name ("ImagePixelModule")
diff --git a/dcmiod/include/dcmtk/dcmiod/modimagepixelbase.h b/dcmiod/include/dcmtk/dcmiod/modimagepixelbase.h
new file mode 100644
index 0000000..7455e02
--- /dev/null
+++ b/dcmiod/include/dcmtk/dcmiod/modimagepixelbase.h
@@ -0,0 +1,168 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmiod
+ *
+ *  Author: Michael Onken
+ *
+ *  Purpose: Base class for Image Pixel Module and related (e.g. Ploating Point)
+ *
+ */
+
+#ifndef MODIMAGEPIXELBASE_H
+#define MODIMAGEPIXELBASE_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmiod/modbase.h"
+
+/** Base class for deriving Image Pixel Module, Floating Point Image Pixel
+ *  Module and Double Floating Point Image Pixel (and maybe more later)
+ */
+class DCMTK_DCMIOD_EXPORT IODImagePixelBase : public IODModule
+{
+
+public:
+
+    enum DataType
+    {
+      DATA_TYPE_UNKNOWN,
+      DATA_TYPE_FLOAT,
+      DATA_TYPE_DOUBLE,
+      DATA_TYPE_INTEGER
+    };
+
+
+  /** Constructor
+   *  @param  item The item to be used for data storage. If NULL, the
+   *          class creates an empty data container.
+   *  @param  rules The rule set for this class. If NULL, the class creates
+   *          one from scratch and adds its values.
+   */
+  IODImagePixelBase(OFshared_ptr<DcmItem> item,
+                    OFshared_ptr<IODRules> rules);
+
+  /** Constructor
+   */
+  IODImagePixelBase();
+
+  /** Destructor
+   */
+  virtual ~IODImagePixelBase();
+
+  /** Resets rules to their original values
+   */
+  virtual void resetRules();
+
+  /** Get name of module
+   *  @return Name of the module ("ImagePixelModule")
+   */
+  virtual OFString getName() const;
+
+  /** Get pixel data type
+   *  @return The data type of the pixel data
+   */
+  virtual DataType getDataType() const = 0;
+
+  // -------------------------------------------------------------------------
+  // Getters for all attribute that appear in all Image Pixel Modules
+  // -------------------------------------------------------------------------
+
+  /** Get Samples per Pixel
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getSamplesPerPixel(Uint16 &value,
+                                         const signed long pos = 0);
+
+  /** Get Photometric Interpretation
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+  */
+  virtual OFCondition getPhotometricInterpretation(OFString&value,
+                                                  const signed long pos = 0);
+
+  /** Get Rows
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getRows(Uint16& value,
+                              const signed long pos = 0);
+
+  /** Get Columns
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getColumns(Uint16& value,
+                                  const signed long pos = 0);
+
+  /** Get Bits Allocated
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getBitsAllocated(Uint16& value,
+                                       const signed long pos = 0);
+
+  /** Get Pixel Aspect Ratio
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+  */
+  virtual OFCondition getPixelAspectRatio(Uint16& value,
+                                          const signed long pos = 0);
+
+  // -------------------------------------------------------------------------
+  // Setters for all attribute that appear in all Image Pixel Modules and which
+  // do not have fixed values in sub classes.
+  // -------------------------------------------------------------------------
+
+  /** Set Rows
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setRows(const Uint16 value,
+                              const OFBool checkValue = OFTrue);
+
+  /** Set Columns
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setColumns(const Uint16 value,
+                                 const OFBool checkValue = OFTrue);
+
+  /** Set Pixel Aspect Ratio
+   *  @param  verticalPixelSize The vertical pixel size (no unit)
+   *  @param  horizontalPixelSize The horizontal pixel size (no unit)
+   *  @param  checkValue Check 'value' for conformance with VR (IS)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setPixelAspectRatio(const OFString& verticalPixelSize,
+                                          const OFString& horizontalPixelSize,
+                                          const OFBool checkValue = OFTrue);
+
+private:
+
+  /// This module's name ("ImagePixelBase")
+  static const OFString m_ModuleName;
+
+};
+
+#endif // MODIMAGEPIXELBASE_H
diff --git a/dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h b/dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h
new file mode 100644
index 0000000..d6a5ba2
--- /dev/null
+++ b/dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h
@@ -0,0 +1,281 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmiod
+ *
+ *  Author: Michael Onken
+ *
+ *  Purpose: Base class for Image Pixel Module and related (e.g. Ploating Point)
+ *
+ */
+
+#ifndef MODIMAGEPIXELVARIANT_H
+#define MODIMAGEPIXELVARIANT_H
+
+#include "dcmtk/config/osconfig.h"
+
+#include "dcmtk/ofstd/ofvriant.h"
+#include "dcmtk/dcmiod/modimagepixelbase.h"
+
+
+/** Visitor for returning base class of given Image Pixel Module
+ */
+struct IODImagePixelVariantBaseVisitor
+{
+
+  /** Returns NULL since given argument is no pixel module at all
+   *  @return OFnullptr
+   */
+  IODImagePixelBase* operator()( OFmonostate& )
+  {
+    return OFnullptr;
+  }
+
+  /** Returns the base class pointer of all pixel modules
+   *  @param  base IODImagePixelBase pointer to given class instance
+   *  @return OFnullptr
+   */
+  IODImagePixelBase* operator()( IODImagePixelBase& base )
+  {
+    return &base;
+  }
+};
+
+/** Class representing different pixel modules from the DICOM standard:
+ *  The class Image Pixel Module, the Floating Point Image Pixel module
+ *  and the Double Floating Point Image Pixel module
+ */
+#ifdef DCMTK_USE_CXX11_STL
+template<typename... Types>
+class IODImagePixelVariant
+: public OFvariant<OFmonostate,Types...>
+#else
+template<OFVARIADIC_DECLARE_TEMPLATE_PARAMETER_PACK_WITH_DEFAULTS(T)>
+class IODImagePixelVariant
+: public OFvariant<OFmonostate,OFVARIADIC_TEMPLATE_PARAMETER_PACK(T)>
+#endif
+{
+
+public:
+
+  /** Constructor
+   */
+  IODImagePixelVariant()
+  : IODImagePixelVariant::variant()
+  {
+
+  }
+
+  /** Constructor, constructs pixel module based on given type
+   */
+  template<typename T>
+  IODImagePixelVariant(const T& t)
+  : IODImagePixelVariant::variant(t)
+  {
+
+  }
+
+  /** Destructor
+   */
+  ~IODImagePixelVariant()
+  {
+
+  }
+
+  /** Get name of module
+   *  @return Name of the actual module (e.g. "ImagePixelModule")
+   */
+  OFString getName() const
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->getName();
+    return OFString();
+  }
+
+  /** Get pixel data type
+   *  @return The data type of the pixel data
+   */
+  IODImagePixelBase::DataType getDataType() const
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->getDataType();
+    return IODImagePixelBase::DATA_TYPE_UNKNOWN;
+  }
+
+  /** Clear data (base class version)
+   */
+  void clearData()
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      pBase->clearData();
+  }
+
+  // -------------------------------------------------------------------------
+  // Getters for all attribute that appear in all Image Pixel Modules
+  // -------------------------------------------------------------------------
+
+  /** Get Samples per Pixel
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  OFCondition getSamplesPerPixel(Uint16 &value,
+                                 const signed long pos = 0)
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->getSamplesPerPixel(value, pos);
+    return IOD_EC_InvalidPixelData;
+  }
+
+  /** Get Photometric Interpretation
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+  */
+  OFCondition getPhotometricInterpretation(OFString&value,
+                                           const signed long pos = 0)
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->getPhotometricInterpretation(value, pos);
+    return IOD_EC_InvalidPixelData;
+  }
+
+  /** Get Rows
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  OFCondition getRows(Uint16& value,
+                      const signed long pos = 0)
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->getRows(value, pos);
+    return IOD_EC_InvalidPixelData;
+  }
+
+  /** Get Columns
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  OFCondition getColumns(Uint16& value,
+                         const signed long pos = 0)
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->getColumns(value, pos);
+    return IOD_EC_InvalidPixelData;
+  }
+
+  /** Get Bits Allocated
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  OFCondition getBitsAllocated(Uint16& value,
+                               const signed long pos = 0)
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->getBitsAllocated(value, pos);
+    return IOD_EC_InvalidPixelData;
+  }
+
+  /** Get Pixel Aspect Ratio
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  OFCondition getPixelAspectRatio(Uint16& value,
+                                  const signed long pos = 0)
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->getPixelAspectRatio(value, pos);
+    return IOD_EC_InvalidPixelData;
+  }
+
+  // -------------------------------------------------------------------------
+  // Setters for all attribute that appear in all Image Pixel Modules and which
+  // do not have fixed values in sub classes.
+  // -------------------------------------------------------------------------
+
+  /** Set Rows
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  OFCondition setRows(const Uint16 value,
+                      const OFBool checkValue = OFTrue)
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->setRows(value, checkValue);
+    return IOD_EC_InvalidPixelData;
+
+  }
+
+  /** Set Columns
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  OFCondition setColumns(const Uint16 value,
+                         const OFBool checkValue = OFTrue)
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->setColumns(value, checkValue);
+    return IOD_EC_InvalidPixelData;
+
+  }
+
+  /** Set Pixel Aspect Ratio
+   *  @param  verticalPixelSize The vertical pixel size (no unit)
+   *  @param  horizontalPixelSize The horizontal pixel size (no unit)
+   *  @param  checkValue Check 'value' for conformance with VR (IS)
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  OFCondition setPixelAspectRatio(const OFString& verticalPixelSize,
+                                  const OFString& horizontalPixelSize,
+                                  const OFBool checkValue = OFTrue)
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->setPixelAspectRatio(verticalPixelSize, horizontalPixelSize, checkValue);
+    return IOD_EC_InvalidPixelData;
+
+  }
+
+  /** Write pixel module base class data to given item
+   *  @param  dataset The item to write to (usually dataset level)
+   *  @return EC_Normal if successful, error otherwise
+   */
+  OFCondition write(DcmItem& dataset)
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->write(dataset);
+    return IOD_EC_InvalidPixelData;
+
+  }
+
+  /** Read pixel module base class data from given item
+   *  @param  dataset The item to read from (usually dataset level)
+   *  @return EC_Normal if successful, error otherwise
+   */
+  OFCondition read(DcmItem& dataset)
+  {
+    if (IODImagePixelBase* pBase = OFvisit<IODImagePixelBase*>(IODImagePixelVariantBaseVisitor(), *this))
+      return pBase->read(dataset);
+    return IOD_EC_InvalidPixelData;
+  }
+
+};
+
+#endif // MODIMAGEPIXELBASE_H
diff --git a/dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h b/dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h
index 1d92731..83ff45e 100644
--- a/dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h
+++ b/dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h
@@ -261,7 +261,8 @@ public:
   /** Convenience method to add Dimension Index.
    *  @param  dimensionIndexPointer The Dimension Index Pointer attribute
    *  @param  dimensionOrganizationUID The Dimension Organization UID of the dimension organization
-   *          the pointer refers to
+   *          the pointer refers to. If UID does not exist yet (in the Dimension
+   *          Organization Sequence, it is created there automatically).
    *  @param  functionalGroupPointer The functional group where the pointer attribute can be found
    *  @param  dimensionDescriptionLabel The description label of this dimension (optional)
    *  @param  dimensionIndexPrivateCreator The private creator of the Dimension Index Pointer
diff --git a/dcmiod/include/dcmtk/dcmiod/modsynchronisation.h b/dcmiod/include/dcmtk/dcmiod/modsynchronisation.h
index cc78233..7a46b00 100644
--- a/dcmiod/include/dcmtk/dcmiod/modsynchronisation.h
+++ b/dcmiod/include/dcmtk/dcmiod/modsynchronisation.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -101,6 +101,7 @@ public:
     /** Get Acquisition Time Synchronized
      *  @param  value Reference to variable in which the value should be stored
      *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+     *  @return EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition getAcquisitionTimeSynchronized(OFString& value,
                                                        const signed long pos = 0) const;
@@ -108,6 +109,7 @@ public:
     /** Get Time Source
      *  @param  value Reference to variable in which the value should be stored
      *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+     *  @return EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition getTimeSource(OFString& value,
                                       const signed long pos = 0) const;
@@ -115,6 +117,7 @@ public:
     /** Get Time Distribution Protocol
      *  @param  value Reference to variable in which the value should be stored
      *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+     *  @return EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition getTimeDistributionProtocol(OFString& value,
                                                     const signed long pos = 0) const;
@@ -122,6 +125,7 @@ public:
     /** Get NTP Source Address
      *  @param  value Reference to variable in which the value should be stored
      *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+     *  @return EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition getNTPSourceAddress(OFString& value,
                                             const signed long pos = 0) const;
@@ -198,6 +202,29 @@ public:
     virtual OFCondition setNTPSourceAddress(const OFString &value,
                                             const OFBool checkValue = OFTrue);
 
+protected:
+
+  /** Check whether given string is a valid value for attribute
+   *  Acquisition Time Synchronized
+   *  @param  value The value to check
+   *  @return OFTrue if value is valid for this attribute, OFFalse otherwise
+   */
+  virtual OFBool isValidAcquisitionTimeSynchronized(const OFString& value);
+
+  /** Check whether given string is a valid value for attribute
+   *  Time Distribution Protocol
+   *  @param  value The value to check
+   *  @return OFTrue if value is valid for this attribute, OFFalse otherwise
+   */
+  virtual OFBool isValidTimeDistributionProtocol(const OFString& value);
+
+  /** Check whether given string is a valid value for attribute
+   *  Synchronization Trigger
+   *  @param  value The value to check
+   *  @return OFTrue if value is valid for this attribute, OFFalse otherwise
+   */
+  virtual OFBool isValidSynchronizationTrigger(const OFString& value);
+
 private:
 
     /// Module name "SynchronizationModule"
diff --git a/dcmiod/libsrc/CMakeLists.txt b/dcmiod/libsrc/CMakeLists.txt
index 51d62ff..0f6cf42 100644
--- a/dcmiod/libsrc/CMakeLists.txt
+++ b/dcmiod/libsrc/CMakeLists.txt
@@ -1,9 +1,9 @@
 # create library from source files
 DCMTK_ADD_LIBRARY(dcmiod
   cielabutil
+  iodcontentitemmacro
   iodcommn
   iodmacro
-  iodimage
   iodrules
   iodreferences
   iodutil
@@ -15,12 +15,14 @@ DCMTK_ADD_LIBRARY(dcmiod
   modenhusimage
   modenhusseries
   modequipment
+  modfloatingpointimagepixel
   modfor
   modgeneralimage
   modgeneralseries
   modgeneralstudy
   modhelp
   modimagepixel
+  modimagepixelbase
   modmultiframefg
   modmultiframedimension
   modpatient
@@ -31,5 +33,4 @@ DCMTK_ADD_LIBRARY(dcmiod
   modusfor)
 
 DCMTK_TARGET_LINK_MODULES(dcmiod dcmdata ofstd oflog)
-DCMTK_TARGET_LINK_LIBRARIES(dcmiod ${ZLIB_LIBS})
 
diff --git a/dcmiod/libsrc/Makefile.dep b/dcmiod/libsrc/Makefile.dep
index 21270be..944fe00 100644
--- a/dcmiod/libsrc/Makefile.dep
+++ b/dcmiod/libsrc/Makefile.dep
@@ -136,25 +136,21 @@ iodcommn.o: iodcommn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/iodreferences.h \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
-iodimage.o: iodimage.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmiod/iodimage.h ../include/dcmtk/dcmiod/iodcommn.h \
- ../include/dcmtk/dcmiod/iodrules.h \
+iodcontentitemmacro.o: iodcontentitemmacro.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../../ofstd/include/dcmtk/ofstd/ofmap.h \
- ../../ofstd/include/dcmtk/ofstd/ofutil.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
- ../include/dcmtk/dcmiod/iodtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
@@ -179,39 +175,53 @@ iodimage.o: iodimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/cielabutil.h \
- ../include/dcmtk/dcmiod/modpatient.h \
- ../../ofstd/include/dcmtk/ofstd/ofmem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
- ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../include/dcmtk/dcmiod/iodutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/iodrules.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../include/dcmtk/dcmiod/iodtypes.h ../include/dcmtk/dcmiod/cielabutil.h \
+ ../include/dcmtk/dcmiod/iodcontentitemmacro.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../include/dcmtk/dcmiod/modbase.h ../include/dcmtk/dcmiod/iodmacro.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
@@ -219,18 +229,10 @@ iodimage.o: iodimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
- ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
@@ -254,22 +256,7 @@ iodimage.o: iodimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmiod/modbase.h \
- ../include/dcmtk/dcmiod/modpatientstudy.h \
- ../../ofstd/include/dcmtk/ofstd/ofoption.h \
- ../../ofstd/include/dcmtk/ofstd/ofalign.h \
- ../include/dcmtk/dcmiod/modgeneralstudy.h \
- ../include/dcmtk/dcmiod/iodmacro.h \
- ../include/dcmtk/dcmiod/modequipment.h \
- ../include/dcmtk/dcmiod/modgeneralseries.h \
- ../include/dcmtk/dcmiod/modfor.h ../include/dcmtk/dcmiod/modsopcommon.h \
- ../include/dcmtk/dcmiod/modcommoninstanceref.h \
- ../include/dcmtk/dcmiod/iodreferences.h \
- ../include/dcmtk/dcmiod/modgeneralimage.h \
- ../include/dcmtk/dcmiod/modimagepixel.h \
- ../include/dcmtk/dcmiod/iodutil.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 iodmacro.o: iodmacro.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/iodmacro.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -453,6 +440,8 @@ iodreferences.o: iodreferences.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
@@ -628,6 +617,8 @@ iodutil.o: iodutil.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
@@ -641,9 +632,7 @@ iodutil.o: iodutil.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h
 modacquisitioncontext.o: modacquisitioncontext.cc \
  ../../config/include/dcmtk/config/osconfig.h \
@@ -832,6 +821,8 @@ modbase.o: modbase.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h
 modcommoninstanceref.o: modcommoninstanceref.cc \
  ../../config/include/dcmtk/config/osconfig.h \
@@ -1029,7 +1020,9 @@ modenhequipment.o: modenhequipment.cc \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h
 modenhusimage.o: modenhusimage.cc \
  ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/modenhusimage.h \
@@ -1349,7 +1342,83 @@ modequipment.o: modequipment.cc \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h
+modfloatingpointimagepixel.o: modfloatingpointimagepixel.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmiod/modfloatingpointimagepixel.h \
+ ../include/dcmtk/dcmiod/modimagepixelbase.h \
+ ../include/dcmtk/dcmiod/modbase.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/iodrules.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../include/dcmtk/dcmiod/iodtypes.h ../include/dcmtk/dcmiod/cielabutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../include/dcmtk/dcmiod/iodutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h
 modfor.o: modfor.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/modfor.h ../include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
@@ -1420,7 +1489,9 @@ modfor.o: modfor.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h
 modgeneralimage.o: modgeneralimage.cc \
  ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/modgeneralimage.h \
@@ -1808,6 +1879,7 @@ modhelp.o: modhelp.cc ../../config/include/dcmtk/config/osconfig.h \
 modimagepixel.o: modimagepixel.cc \
  ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/modimagepixel.h \
+ ../include/dcmtk/dcmiod/modimagepixelbase.h \
  ../include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
@@ -1877,7 +1949,84 @@ modimagepixel.o: modimagepixel.cc \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h
+modimagepixelbase.o: modimagepixelbase.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmiod/modimagepixelbase.h \
+ ../include/dcmtk/dcmiod/modbase.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/iodrules.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../include/dcmtk/dcmiod/iodtypes.h ../include/dcmtk/dcmiod/cielabutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../include/dcmtk/dcmiod/iodutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h
 modmultiframedimension.o: modmultiframedimension.cc \
  ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/modmultiframedimension.h \
@@ -1954,7 +2103,9 @@ modmultiframedimension.o: modmultiframedimension.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h
 modmultiframefg.o: modmultiframefg.cc \
  ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/modmultiframefg.h \
@@ -2547,7 +2698,9 @@ modsynchronization.o: modsynchronization.cc \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h
 modusfor.o: modusfor.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/modusfor.h \
  ../../ofstd/include/dcmtk/ofstd/ofoption.h \
@@ -2621,4 +2774,6 @@ modusfor.o: modusfor.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h
diff --git a/dcmiod/libsrc/Makefile.in b/dcmiod/libsrc/Makefile.in
index 5cfeb14..64eb266 100644
--- a/dcmiod/libsrc/Makefile.in
+++ b/dcmiod/libsrc/Makefile.in
@@ -20,14 +20,13 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/incl
 
 LOCALDEFS =
 
-objs =  cielabutil.o iodcommn.o  iodmacro.o iodimage.o iodrules.o iodutil.o \
-	iodtypes.o modacquisitioncontext.o modbase.o modcommoninstanceref.o \
+objs =  cielabutil.o iodcommn.o  iodcontentitemmacro.o iodmacro.o iodreferences.o iodrules.o \
+	iodtypes.o iodutil.o modacquisitioncontext.o modbase.o modcommoninstanceref.o \
 	modenhequipment.o modenhusimage.o modenhusseries.o modequipment.o \
-	modfor.o modgeneralimage.o modgeneralseries.o modgeneralstudy.o \
-	modhelp.o  modimagepixel.o  modmultiframefg.o  \
-	modmultiframedimension.o  modpatient.o  modpatientstudy.o \
-	modsegmentationseries.o  modsopcommon.o  modsynchronization.o \
-	modusfor.o
+	modfloatingpointimagepixel.o modfor.o modgeneralimage.o modgeneralseries.o \
+	modgeneralstudy.o modhelp.o  modimagepixelbase.o modimagepixel.o modmultiframedimension.o \
+	modmultiframefg.o modpatient.o  modpatientstudy.o modsegmentationseries.o modsopcommon.o \
+	modsynchronization.o modusfor.o
 
 
 library = libdcmiod.$(LIBEXT)
diff --git a/dcmiod/libsrc/cielabutil.cc b/dcmiod/libsrc/cielabutil.cc
index 56189eb..8b03051 100755
--- a/dcmiod/libsrc/cielabutil.cc
+++ b/dcmiod/libsrc/cielabutil.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2005–2010, Pascal Getreuer
+ *  Copyright (C) 2005-2010, Pascal Getreuer
  *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
@@ -191,7 +191,7 @@ double IODCIELabUtil::labfInv(double n)
 }
 
 
-double IODCIELabUtil::min(double a, double b)
+double IODCIELabUtil::min2(double a, double b)
 {
   if (a <= b)
     return a;
@@ -203,7 +203,7 @@ double IODCIELabUtil::min(double a, double b)
 double IODCIELabUtil::min3(double a, double b, double c)
 {
   if (a <= b)
-    return min(a,c);
+    return min2(a,c);
   else
-    return min (b,c);
+    return min2(b,c);
 }
diff --git a/dcmiod/libsrc/iodcommn.cc b/dcmiod/libsrc/iodcommn.cc
index 467d91c..03c7f97 100644
--- a/dcmiod/libsrc/iodcommn.cc
+++ b/dcmiod/libsrc/iodcommn.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2015-2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -51,6 +51,32 @@ DcmIODCommon::DcmIODCommon()
 }
 
 
+DcmIODCommon::DcmIODCommon(const DcmIODCommon& rhs)
+: m_Item(rhs.m_Item),
+  m_Rules(rhs.m_Rules),
+  m_Patient(m_Item, m_Rules),
+  m_PatientStudy(m_Item, m_Rules),
+  m_Study(m_Item, m_Rules),
+  m_Equipment(m_Item, m_Rules),
+  m_Series(m_Item, m_Rules),
+  m_FrameOfReference(m_Item, m_Rules),
+  m_SOPCommon(m_Item, m_Rules),
+  m_CommonInstanceReferenceModule(m_Item, m_Rules),
+  m_Modules()
+{
+  // Set initial values for a new SOP instance
+  ensureInstanceUIDs(OFFalse);
+  m_Modules.push_back(&m_Patient);
+  m_Modules.push_back(&m_PatientStudy);
+  m_Modules.push_back(&m_Study);
+  m_Modules.push_back(&m_Equipment);
+  m_Modules.push_back(&m_Series);
+  m_Modules.push_back(&m_FrameOfReference);
+  m_Modules.push_back(&m_SOPCommon);
+  m_Modules.push_back(&m_CommonInstanceReferenceModule);
+}
+
+
 DcmIODCommon::~DcmIODCommon()
 {
 }
@@ -58,12 +84,13 @@ DcmIODCommon::~DcmIODCommon()
 
 void DcmIODCommon::clearData()
 {
-  OFVector<IODModule*>::iterator it = m_Modules.begin();
-  while (it != m_Modules.end())
-  {
-    (*it)->clearData();
-    it++;
-  }
+  // TODO
+//   OFVector<IODModule*>::iterator it = m_Modules.begin();
+//   while (it != m_Modules.end())
+//   {
+//     (*it)->clearData();
+//     it++;
+//   }
 }
 
 
@@ -178,6 +205,42 @@ OFCondition DcmIODCommon::import(DcmItem& dataset,
 }
 
 
+OFCondition DcmIODCommon::importPatientStudyFoR(const OFString& filename,
+                                                const OFBool usePatient,
+                                                const OFBool useStudy,
+                                                const OFBool useSeries,
+                                                const OFBool useFoR)
+{
+  DCMIOD_WARN("This function is deprecated and will be removed in later versions of DCMTK, please use import()");
+  return import(filename, usePatient, useStudy, useSeries, useFoR);
+}
+
+
+OFCondition DcmIODCommon::import(const OFString& filename,
+                                 const OFBool usePatient,
+                                 const OFBool useStudy,
+                                 const OFBool useSeries,
+                                 const OFBool useFoR)
+{
+  DcmFileFormat dcmff;
+  OFCondition result = dcmff.loadFile(filename.c_str());
+  if ( result.good() )
+  {
+    DcmDataset *dset = dcmff.getDataset();
+    if (dset != NULL)
+    {
+      result = import(*dset, usePatient, useStudy, useSeries, useFoR);
+    }
+    else
+    {
+      DCMIOD_ERROR("Unable to get dataset from file for copying patient, study, series and/or frame of reference information");
+      result = EC_IllegalCall;
+    }
+  }
+  return result;
+}
+
+
 void DcmIODCommon::ensureInstanceUIDs(const OFBool correctInvalid)
 {
   m_Study.ensureInstanceUID(correctInvalid);
diff --git a/dcmiod/libsrc/iodcontentitemmacro.cc b/dcmiod/libsrc/iodcontentitemmacro.cc
new file mode 100644
index 0000000..bc76df8
--- /dev/null
+++ b/dcmiod/libsrc/iodcontentitemmacro.cc
@@ -0,0 +1,800 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmpmap
+ *
+ *  Author: Jan Schlamelcher
+ *
+ *  Purpose: Class for managing the Content Item Macro
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/ofstream.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
+#include "dcmtk/dcmdata/dcvrcs.h"
+#include "dcmtk/dcmdata/dcvrdt.h"
+#include "dcmtk/dcmdata/dcvrda.h"
+#include "dcmtk/dcmdata/dcvrtm.h"
+
+#include "dcmtk/dcmiod/iodutil.h"
+#include "dcmtk/dcmiod/iodcontentitemmacro.h"
+
+const OFString ContentItemMacro::ReferencedSOPSequenceItem::m_ComponentName = "ReferencedSOPSequenceItem";
+
+
+ContentItemMacro::ReferencedSOPSequenceItem::ReferencedSOPSequenceItem(OFshared_ptr<DcmItem> item,
+                                                     OFshared_ptr<IODRules> rules,
+                                                     IODComponent* parent)
+: IODComponent(item, rules, parent)
+{
+  // reset element rules
+  resetRules();
+}
+
+
+ContentItemMacro::ReferencedSOPSequenceItem::ReferencedSOPSequenceItem(IODComponent* parent)
+: IODComponent(parent)
+{
+  // reset element rules
+  resetRules();
+}
+
+
+ContentItemMacro::ReferencedSOPSequenceItem::ReferencedSOPSequenceItem(const ReferencedSOPSequenceItem& rhs)
+: IODComponent(rhs)
+{
+}
+
+
+ContentItemMacro::ReferencedSOPSequenceItem::~ReferencedSOPSequenceItem()
+{
+  // nothing to do
+}
+
+
+OFString ContentItemMacro::ReferencedSOPSequenceItem::getName() const
+{
+  return m_ComponentName;
+}
+
+
+void ContentItemMacro::ReferencedSOPSequenceItem::resetRules()
+{
+  // parameters are tag, VM, type. Overwrite old rules if any.
+  m_Rules->addRule(new IODRule(DCM_ReferencedFrameNumber, "1-n","1C", getName(), DcmIODTypes::IE_UNDEFINED), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_ReferencedSegmentNumber, "1-n","1C", getName(), DcmIODTypes::IE_UNDEFINED), OFTrue);
+}
+
+
+OFCondition ContentItemMacro::ReferencedSOPSequenceItem::read(
+  DcmItem& source,
+  const OFBool clearOldData)
+{
+  if (clearOldData)
+    clearData();
+
+  IODComponent::read(source, OFFalse /* data already cleared */);
+  return EC_Normal;
+}
+
+
+OFCondition ContentItemMacro::ReferencedSOPSequenceItem::write(DcmItem& destination)
+{
+  OFCondition result = EC_Normal;
+
+  result = IODComponent::write(destination);
+
+  return result;
+}
+
+
+SOPInstanceReferenceMacro& ContentItemMacro::ReferencedSOPSequenceItem::getSOPInstanceReferenceMacro()
+{
+  return m_SOPInstanceReferenceMacro;
+}
+
+
+OFCondition ContentItemMacro::ReferencedSOPSequenceItem::getReferencedFrameNumber(
+  OFString &value,
+  const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_ReferencedFrameNumber, *m_Item, value, pos);
+}
+
+
+OFCondition ContentItemMacro::ReferencedSOPSequenceItem::getReferencedSegmentNumber(
+  Uint16 &value,
+  const signed long pos) const
+{
+  return m_Item->findAndGetUint16(DCM_ReferencedSegmentNumber, value, pos);
+}
+
+
+OFCondition ContentItemMacro::ReferencedSOPSequenceItem::setReferencedFrameNumber(
+  const OFString &value,
+  const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmIntegerString::checkStringValue(value, "1-n") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_ReferencedFrameNumber, value);
+  return result;
+}
+
+
+OFCondition ContentItemMacro::ReferencedSOPSequenceItem::setReferencedSegmentNumber(
+  const Uint16 value,
+  const OFBool checkValue)
+{
+  (void)checkValue;
+  return m_Item->putAndInsertUint16(DCM_ReferencedSegmentNumber, value);
+}
+
+
+const OFString ContentItemMacro::m_ModuleName = "ContentItemMacro";
+
+
+ContentItemMacro::ContentItemMacro()
+: IODComponent()
+{
+  resetRules();
+}
+
+
+ContentItemMacro::ContentItemMacro(OFshared_ptr<DcmItem> item,
+                                   OFshared_ptr<IODRules> rules)
+: IODComponent(item, rules)
+{
+  // reset element rules
+  resetRules();
+}
+
+
+ContentItemMacro::ContentItemMacro(const ContentItemMacro& rhs)
+: IODComponent(rhs)
+{
+  if (this == &rhs)
+    return;
+
+  OFVector<CodeSequenceMacro*>::const_iterator it = rhs.m_ConceptCodeSequence.begin();
+  while (it != rhs.m_ConceptCodeSequence.end())
+  {
+    CodeSequenceMacro* macro = new CodeSequenceMacro(**it);
+    m_ConceptCodeSequence.push_back(macro);
+    it++;
+  }
+
+  it = rhs.m_ConceptNameCodeSequence.begin();
+  while (it != rhs.m_ConceptNameCodeSequence.end())
+  {
+    CodeSequenceMacro* macro = new CodeSequenceMacro(**it);
+    m_ConceptNameCodeSequence.push_back(macro);
+    it++;
+  }
+
+  it = rhs.m_MeasurementUnitsCodeSequence.begin();
+  while (it != rhs.m_MeasurementUnitsCodeSequence.end())
+  {
+    CodeSequenceMacro* macro = new CodeSequenceMacro(**it);
+    m_MeasurementUnitsCodeSequence.push_back(macro);
+    it++;
+  }
+
+  OFVector<ReferencedSOPSequenceItem*>::const_iterator m = rhs.m_ReferencedSOPSequence.begin();
+  while (m != rhs.m_ReferencedSOPSequence.end())
+  {
+    ReferencedSOPSequenceItem* item = new ReferencedSOPSequenceItem(**m);
+    m_ReferencedSOPSequence.push_back(item);
+    m++;
+  }
+
+}
+
+
+ContentItemMacro::~ContentItemMacro()
+{
+  DcmIODUtil::freeContainer(m_ConceptNameCodeSequence);
+  DcmIODUtil::freeContainer(m_ConceptCodeSequence);
+  DcmIODUtil::freeContainer(m_MeasurementUnitsCodeSequence);
+  DcmIODUtil::freeContainer(m_ReferencedSOPSequence);
+}
+
+
+OFString ContentItemMacro::getName() const
+{
+  return m_ModuleName;
+}
+
+
+void ContentItemMacro::resetRules()
+{
+  // parameters are tag, VM, type. Overwrite old rules if any.
+  m_Rules->addRule(new IODRule(DCM_ValueType, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_ConceptNameCodeSequence, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_DateTime, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_Date, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_Time, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_PersonName, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_UID, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_TextValue, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_ConceptCodeSequence, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_NumericValue, "1-n","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_FloatingPointValue, "1-n","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_RationalNumeratorValue, "1-n","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_RationalDenominatorValue, "1-n","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_MeasurementUnitsCodeSequence, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_ReferencedSOPSequence, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+}
+
+
+OFCondition ContentItemMacro::read(DcmItem& source,
+                                   const OFBool clearOldData)
+{
+  if (clearOldData)
+    clearData();
+
+  IODComponent::read(source, OFFalse /* data already cleared */);
+  DcmIODUtil::readSubSequence(source, DCM_ConceptNameCodeSequence, m_ConceptNameCodeSequence, m_Rules->getByTag(DCM_ConceptNameCodeSequence));
+  DcmIODUtil::readSubSequence(source, DCM_ConceptCodeSequence, m_ConceptCodeSequence, m_Rules->getByTag(DCM_ConceptCodeSequence));
+  DcmIODUtil::readSubSequence(source, DCM_MeasurementUnitsCodeSequence, m_MeasurementUnitsCodeSequence, m_Rules->getByTag(DCM_MeasurementUnitsCodeSequence));
+  DcmIODUtil::readSubSequence(source, DCM_ReferencedSOPSequence, m_ReferencedSOPSequence, m_Rules->getByTag(DCM_ReferencedSOPSequence));
+
+  return EC_Normal;
+}
+
+
+OFCondition ContentItemMacro::write(DcmItem& destination)
+{
+  OFCondition result = EC_Normal;
+
+  if(CodeSequenceMacro* pConceptNameCodeSequence = getConceptNameCodeSequence())
+    DcmIODUtil::writeSingleItem(result, DCM_ConceptNameCodeSequence, *pConceptNameCodeSequence, *m_Item, m_Rules->getByTag(DCM_ConceptNameCodeSequence));
+  if(CodeSequenceMacro* pConceptCodeSequence = getConceptCodeSequence())
+    DcmIODUtil::writeSingleItem(result, DCM_ConceptCodeSequence, *pConceptCodeSequence, *m_Item, m_Rules->getByTag(DCM_ConceptCodeSequence));
+  if(CodeSequenceMacro* pMeasurementUnitsCodeSequence = getMeasurementUnitsCodeSequence())
+    DcmIODUtil::writeSingleItem(result, DCM_MeasurementUnitsCodeSequence, *pMeasurementUnitsCodeSequence, *m_Item, m_Rules->getByTag(DCM_MeasurementUnitsCodeSequence));
+  if(ReferencedSOPSequenceItem* pReferencedSOPSequence = getReferencedSOPSequence())
+    DcmIODUtil::writeSingleItem(result, DCM_ReferencedSOPSequence, *pReferencedSOPSequence, *m_Item, m_Rules->getByTag(DCM_ReferencedSOPSequence));
+
+  if (result.good())
+  {
+    result = IODComponent::write(destination);
+  }
+
+  return result;
+}
+
+
+OFCondition ContentItemMacro::getValueType(OFString &value,
+                                           const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_ValueType, *m_Item, value, pos);
+}
+
+
+OFCondition ContentItemMacro::getValueType(ValueType& value) const
+{
+  OFString str;
+  OFCondition result = DcmIODUtil::getStringValueFromItem(DCM_ValueType, *m_Item, str, 0);
+  if (result == EC_Normal)
+  {
+    if (!str.empty())
+    {
+      if (str == "DATE")
+        value = VT_DATE;
+      else if (str == "TIME")
+        value = VT_TIME;
+      else if (str == "DATETIME")
+        value = VT_DATETIME;
+      else if (str == "PNAME")
+        value = VT_PNAME;
+      else if (str == "UIDREF")
+        value = VT_UIDREF;
+      else if (str == "TEXT")
+        value = VT_TEXT;
+      else if (str == "CODE")
+        value = VT_CODE;
+      else if (str == "NUMERIC")
+        value = VT_NUMERIC;
+      else if (str == "COMPOSITE")
+        value = VT_COMPOSITE;
+      else if (str == "IMAGE")
+        value = VT_IMAGE;
+      else
+        value = VT_UNKNOWN;
+    }
+    else
+    {
+      value = VT_EMPTY;
+    }
+  }
+  else if (result == EC_TagNotFound)
+  {
+    value = VT_EMPTY;
+  }
+  else
+  {
+    DCMIOD_ERROR("Unexpected error, could not get Value Type: " << result.text());
+    value = VT_UNKNOWN;
+  }
+  return result;
+}
+
+
+CodeSequenceMacro* ContentItemMacro::getConceptNameCodeSequence()
+{
+  return m_ConceptNameCodeSequence.empty() ? OFnullptr : *m_ConceptNameCodeSequence.begin();
+}
+
+OFVector<CodeSequenceMacro*>& ContentItemMacro::getEntireConceptNameCodeSequence()
+{
+  return m_ConceptNameCodeSequence;
+}
+
+
+OFCondition ContentItemMacro::getDateTime(OFString &value,
+                                          const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_DateTime, *m_Item, value, pos);
+}
+
+
+OFCondition ContentItemMacro::getDate(OFString &value,
+                                      const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_Date, *m_Item, value, pos);
+}
+
+
+OFCondition ContentItemMacro::getTime(OFString &value,
+                                      const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_Time, *m_Item, value, pos);
+}
+
+
+OFCondition ContentItemMacro::getPersonName(OFString &value,
+                                            const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_PersonName, *m_Item, value, pos);
+}
+
+
+OFCondition ContentItemMacro::getUID(OFString &value,
+                                     const signed long pos) const
+{
+  return m_Item->findAndGetOFString(DCM_UID, value, pos);
+}
+
+
+OFCondition ContentItemMacro::getTextValue(OFString &value,
+                                           const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_TextValue, *m_Item, value, pos);
+}
+
+
+CodeSequenceMacro* ContentItemMacro::getConceptCodeSequence()
+{
+  return m_ConceptCodeSequence.empty() ? OFnullptr : *m_ConceptCodeSequence.begin();
+}
+
+OFVector<CodeSequenceMacro*>& ContentItemMacro::getEntireConceptCodeSequence()
+{
+  return m_ConceptCodeSequence;
+}
+
+
+OFCondition ContentItemMacro::getNumericValue(OFString &value,
+                                              const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_NumericValue, *m_Item, value, pos);
+}
+
+
+OFCondition ContentItemMacro::getFloatingPointValue(Float64 &value,
+                                                    const signed long pos) const
+{
+  return m_Item->findAndGetFloat64(DCM_FloatingPointValue, value, pos);
+}
+
+
+OFCondition ContentItemMacro::getRationalNumeratorValue(Sint32 &value,
+                                                        const signed long pos) const
+{
+  return m_Item->findAndGetSint32(DCM_RationalNumeratorValue, value, pos);
+}
+
+
+OFCondition ContentItemMacro::getRationalDenominatorValue(Uint32 &value,
+                                                          const signed long pos) const
+{
+  return m_Item->findAndGetUint32(DCM_RationalDenominatorValue, value, pos);
+}
+
+
+CodeSequenceMacro* ContentItemMacro::getMeasurementUnitsCodeSequence()
+{
+  return m_MeasurementUnitsCodeSequence.empty() ? OFnullptr : *m_MeasurementUnitsCodeSequence.begin();
+}
+
+OFVector<CodeSequenceMacro*>& ContentItemMacro::getEntireMeasurementUnitsCodeSequence()
+{
+  return m_MeasurementUnitsCodeSequence;
+}
+
+
+ContentItemMacro::ReferencedSOPSequenceItem* ContentItemMacro::getReferencedSOPSequence()
+{
+  return m_ReferencedSOPSequence.empty() ? OFnullptr : *m_ReferencedSOPSequence.begin();
+}
+
+OFVector<ContentItemMacro::ReferencedSOPSequenceItem*>& ContentItemMacro::getEntireReferencedSOPSequence()
+{
+  return m_ReferencedSOPSequence;
+}
+
+
+OFCondition ContentItemMacro::setValueType(const OFString &value,
+                                           const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_ValueType, value);
+  return result;
+}
+
+
+OFCondition ContentItemMacro::setValueType(const ContentItemMacro::ValueType value,
+                                           const OFBool checkValue)
+{
+  (void)checkValue;
+  OFCondition result;
+  switch (value)
+  {
+    case VT_DATE:
+    {
+      result = m_Item->putAndInsertOFStringArray(DCM_ValueType, "DATE");
+      break;
+    }
+    case VT_TIME:
+    {
+      result = m_Item->putAndInsertOFStringArray(DCM_ValueType, "TIME");
+      break;
+    }
+    case VT_DATETIME:
+    {
+      result = m_Item->putAndInsertOFStringArray(DCM_ValueType, "DATETIME");
+      break;
+    }
+    case VT_PNAME:
+    {
+      result = m_Item->putAndInsertOFStringArray(DCM_ValueType, "PNAME");
+      break;
+    }
+    case VT_UIDREF:
+    {
+      result = m_Item->putAndInsertOFStringArray(DCM_ValueType, "UIDREF");
+      break;
+    }
+    case VT_TEXT:
+    {
+      result = m_Item->putAndInsertOFStringArray(DCM_ValueType, "TEXT");
+      break;
+    }
+    case VT_CODE:
+    {
+      result = m_Item->putAndInsertOFStringArray(DCM_ValueType, "CODE");
+      break;
+    }
+    case VT_NUMERIC:
+    {
+      result = m_Item->putAndInsertOFStringArray(DCM_ValueType, "NUMERIC");
+      break;
+    }
+    case VT_COMPOSITE:
+    {
+      result = m_Item->putAndInsertOFStringArray(DCM_ValueType, "COMPOSITE");
+      break;
+    }
+    case VT_IMAGE:
+    {
+      result = m_Item->putAndInsertOFStringArray(DCM_ValueType, "IMAGE");
+      break;
+    }
+    default:
+    {
+      result = IOD_EC_InvalidElementValue;
+    }
+  }
+  return result;
+}
+
+
+
+OFCondition ContentItemMacro::setDateTime(const OFString &value,
+                                          const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_DateTime, value);
+  return result;
+}
+
+
+OFCondition ContentItemMacro::setDate(const OFString &value,
+                                      const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_Date, value);
+  return result;
+}
+
+
+OFCondition ContentItemMacro::setTime(const OFString &value,
+                                      const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_Time, value);
+  return result;
+}
+
+
+OFCondition ContentItemMacro::setPersonName(const OFString &value,
+                                            const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_PersonName, value);
+  return result;
+}
+
+
+OFCondition ContentItemMacro::setUID(const OFString &value,
+                                     const OFBool checkValue)
+{
+  (void)checkValue;
+  return m_Item->putAndInsertOFStringArray(DCM_UID, value);
+}
+
+
+OFCondition ContentItemMacro::setTextValue(const OFString &value,
+                                           const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_TextValue, value);
+  return result;
+}
+
+
+OFCondition ContentItemMacro::setNumericValue(const OFString &value,
+                                              const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1-n") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_NumericValue, value);
+  return result;
+}
+
+
+OFCondition ContentItemMacro::setFloatingPointValue(const Float64 value,
+                                                    const unsigned long pos,
+                                                    const OFBool checkValue)
+{
+  (void)checkValue;
+  return m_Item->putAndInsertFloat64(DCM_FloatingPointValue, value, pos);
+}
+
+
+OFCondition ContentItemMacro::setRationalNumeratorValue(const Sint32 value,
+                                                        const unsigned long pos,
+                                                        const OFBool checkValue)
+{
+  (void)checkValue;
+  return m_Item->putAndInsertSint32(DCM_RationalNumeratorValue, value, pos);
+}
+
+
+OFCondition ContentItemMacro::setRationalDenominatorValue(const Uint32 value,
+                                                          const unsigned long pos,
+                                                          const OFBool checkValue)
+{
+  (void)checkValue;
+  return m_Item->putAndInsertUint32(DCM_RationalDenominatorValue, value, pos);
+}
+
+
+OFString ContentItemMacro::toString()
+{
+  ValueType vt;
+  getValueType(vt);
+  OFStringStream oss;
+  if (getConceptNameCodeSequence())
+  {
+    oss << getConceptNameCodeSequence()->toString() << ": ";
+  }
+  else
+  {
+    oss << "<no name>: ";
+  }
+  switch (vt)
+  {
+    case VT_CODE:
+      oss << "CODE: " << getConceptCodeSequence()->toString();
+      break;
+    case VT_COMPOSITE:
+    {
+      OFString sopClass, sopInstance, frameNumber;
+      if (getReferencedSOPSequence())
+      {
+        getReferencedSOPSequence()->getSOPInstanceReferenceMacro().getReferencedSOPClassUID(sopClass);
+        getReferencedSOPSequence()->getSOPInstanceReferenceMacro().getReferencedSOPClassUID(sopInstance);
+        getReferencedSOPSequence()->getReferencedFrameNumber(frameNumber);
+        oss << "COMPOSITE: " << sopClass << " / " << sopInstance;
+        if (!frameNumber.empty())
+        {
+          oss << " / Frames: " << frameNumber;
+        }
+        Uint16 val,pos;
+        val = pos = 0;
+        if (getReferencedSOPSequence()->getReferencedSegmentNumber(val, pos).good())
+        {
+          oss << " / Segments: ";
+          while (getReferencedSOPSequence()->getReferencedSegmentNumber(val, pos).good())
+          {
+            oss << val << " ";
+            pos++;
+          }
+        }
+      }
+      else
+      {
+        oss << "COMPOSITE: <None>";
+      }
+      break;
+    }
+    case VT_DATE:
+    {
+      OFString date;
+      getDate(date);
+      oss << "DATE: " << date;
+      break;
+    }
+    case VT_DATETIME:
+    {
+      OFString datetime;
+      getDateTime(datetime);
+      oss << "DATETIME: " << datetime;
+      break;
+    }
+    case VT_IMAGE:
+    {
+      OFString sopClass, sopInstance, frameNumber;
+      if (getReferencedSOPSequence())
+      {
+        getReferencedSOPSequence()->getSOPInstanceReferenceMacro().getReferencedSOPClassUID(sopClass);
+        getReferencedSOPSequence()->getSOPInstanceReferenceMacro().getReferencedSOPClassUID(sopInstance);
+        getReferencedSOPSequence()->getReferencedFrameNumber(frameNumber);
+        oss << "IMAGE: " << sopClass << " / " << sopInstance;
+        if (!frameNumber.empty())
+        {
+          oss << " / Frames: " << frameNumber;
+        }
+      }
+      else
+      {
+        oss << "IMAGE: <None>";
+      }
+      break;
+    }
+    case VT_NUMERIC:
+    {
+      OFString val;
+      getNumericValue(val);
+      oss << "NUMERIC: " << val;
+      if (getMeasurementUnitsCodeSequence())
+      {
+        oss << ", Units: " << getMeasurementUnitsCodeSequence()->toString() << ")";
+      }
+      Uint16 pos =0;
+      Float64 fl64 = 0;
+      if (getFloatingPointValue(fl64, pos).good())
+      {
+        oss << ", Float value(s): " ;
+        do
+        {
+          oss << val << " ";
+          pos++;
+        } while (getFloatingPointValue(fl64, pos).good());
+      }
+      else
+      {
+        oss << ", Float value(s): <none>";
+      }
+      pos = 0;
+      Sint32 si32 = 0;
+      if (getRationalNumeratorValue(si32, pos).good())
+      {
+        oss << ", Numerator value(s): " ;
+        do
+        {
+          oss << val << " ";
+          pos++;
+        } while (getRationalNumeratorValue(si32, pos).good());
+      }
+      pos = 0;
+      Uint32 ui32 = 0;
+      if (getRationalDenominatorValue(ui32, pos).good())
+      {
+        oss << ", Denominator value(s): " ;
+        do
+        {
+          oss << val << " ";
+          pos++;
+        } while (getRationalDenominatorValue(ui32, pos).good());
+      }
+
+      break;
+    }
+    case VT_PNAME:
+    {
+      OFString val;
+      getPersonName(val);
+      oss << "PNAME: " << val;
+      break;
+    }
+    case VT_TEXT:
+    {
+      OFString val;
+      getTextValue(val);
+      oss << "TEXT: " << val;
+      break;
+    }
+    case VT_TIME:
+    {
+      OFString val;
+      getTime(val);
+      oss << "TIME: " << val;
+      break;
+    }
+    case VT_UIDREF:
+    {
+      OFString val;
+      getUID(val);
+      oss << "UIDREF: " << val;
+      break;
+    }
+    case VT_EMPTY:
+    {
+      oss << "<None>";
+      break;
+    }
+    case VT_UNKNOWN:
+    {
+      OFString val;
+      getValueType(val);
+      oss << "<Unknown: " << val << ">";
+      break;
+    }
+    default:
+    {
+      oss << "<Internal error>";
+    }
+  }
+  OFSTRINGSTREAM_GETOFSTRING(oss, val);
+  return val;
+}
+
diff --git a/dcmiod/libsrc/iodimage.cc b/dcmiod/libsrc/iodimage.cc
deleted file mode 100644
index 482f7cc..0000000
--- a/dcmiod/libsrc/iodimage.cc
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *
- *  Copyright (C) 2015, Open Connections GmbH
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  This software and supporting documentation are maintained by
- *
- *    OFFIS e.V.
- *    R&D Division Health
- *    Escherweg 2
- *    D-26121 Oldenburg, Germany
- *
- *
- *  Module: dcmiod
- *
- *  Author: Michael Onken
- *
- *  Purpose: Class repres. image IOD by exposing common image IOD attributes
- *
- */
-
-#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
-#include "dcmtk/dcmiod/iodimage.h"
-#include "dcmtk/dcmiod/iodutil.h"
-
-DcmIODImage::DcmIODImage()
-: m_GeneralImage(getData(), getRules()),
-  m_ImagePixel(getData(), getRules())
-{
-  // Nothing to do
-}
-
-
-IODGeneralImageModule& DcmIODImage::getGeneralImage()
-{
-  return m_GeneralImage;
-}
-
-
-IODImagePixelModule& DcmIODImage::getImagePixel()
-{
-  return m_ImagePixel;
-}
-
-
-DcmIODImage::~DcmIODImage()
-{
-  // IOD rules created in DcmIODImage are cleared in DcmIODCommon::~DcmIODCommon()
-}
-
-
-void DcmIODImage::clearData()
-{
-  // clear all attributes from base classes
-  DcmIODCommon::clearData();
-  m_GeneralImage.clearData();
-  m_ImagePixel.clearData();
-}
-
-
-OFCondition DcmIODImage::read(DcmItem &dataset)
-{
-  // re-initialize object
-  DcmIODImage::clearData();
-
-  // read from base classes
-  DcmIODCommon::read(dataset);
-  m_GeneralImage.read(dataset, OFTrue /* clear old data */);
-  m_ImagePixel.read(dataset, OFTrue /* clear old data */);
-
-  return EC_Normal;
-}
-
-
-OFCondition DcmIODImage::write(DcmItem &dataset)
-{
-  OFCondition result = EC_Normal;
-
-  // Write base class attributes to dataset
-  result = DcmIODCommon::write(dataset);
-
-  // Write extra modules to dataset
-  if (result.good())
-    result = m_GeneralImage.write(dataset);
-  if (result.good())
-    result = m_ImagePixel.write(dataset);
-
-  return result;
-}
diff --git a/dcmiod/libsrc/iodmacro.cc b/dcmiod/libsrc/iodmacro.cc
index c95174c..4386202 100644
--- a/dcmiod/libsrc/iodmacro.cc
+++ b/dcmiod/libsrc/iodmacro.cc
@@ -22,6 +22,7 @@
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 #include "dcmtk/dcmiod/iodmacro.h"
 #include "dcmtk/dcmiod/iodutil.h" // for static IOD helpers
+#include "dcmtk/ofstd/ofstream.h"
 
 
 // --------------------------- Code Sequence Macro ---------------------------
@@ -144,6 +145,30 @@ OFCondition CodeSequenceMacro::getCodeMeaning(OFString &value,
 }
 
 
+OFBool CodeSequenceMacro::empty()
+{
+  OFString val;
+  getCodeValue(val);
+  if (val.empty())
+  {
+    getCodingSchemeDesignator(val);
+    if (val.empty())
+    {
+      getCodingSchemeVersion(val);
+      if (val.empty())
+      {
+        getCodingSchemeDesignator(val);
+        if (val.empty())
+        {
+          return OFTrue;
+        }
+      }
+    }
+  }
+  return OFFalse;
+}
+
+
 // -- set dicom attributes --
 
 OFCondition CodeSequenceMacro::setCodeValue(const OFString &value,
@@ -204,6 +229,7 @@ OFCondition CodeSequenceMacro::set(const OFString& value,
   return result;
 }
 
+
 // ---------------------- CodeWithModifiers----------------------
 
 CodeWithModifiers::CodeWithModifiers(const OFString& modifierType,
@@ -265,7 +291,10 @@ OFCondition CodeWithModifiers::check(const OFBool quiet)
   }
   if (result.bad())
   {
-    DCMIOD_ERROR("Invalid code in Code Sequence Macro or its modifiers");
+    if (!quiet)
+    {
+      DCMIOD_ERROR("Invalid code in Code Sequence Macro or its modifiers");
+    }
   }
   return result;
 }
@@ -368,6 +397,20 @@ CodeWithModifiers::~CodeWithModifiers()
 }
 
 
+OFString CodeSequenceMacro::toString()
+{
+  OFString d,m,v;
+  getCodeValue(v);
+  getCodeMeaning(m);
+  getCodingSchemeDesignator(d);
+  OFStringStream oss;
+  oss << "(" << d << "," << v << "," << m << ")";
+  OFSTRINGSTREAM_GETOFSTRING(oss, msg);
+  return msg;
+
+}
+
+
 // ---------------------- SeriesAndInstanceReferenceMacro----------------------
 
 const OFString IODSeriesAndInstanceReferenceMacro::m_ComponentName = "SeriesAndInstanceReferenceMacro";
@@ -689,8 +732,7 @@ OFCondition ImageSOPInstanceReferenceMacro::create(const OFString& sopClassUID,
 OFCondition ImageSOPInstanceReferenceMacro::create(const OFString& sopClassUID,
                                                    const OFString& sopInstanceUID,
                                                    const OFVector< Uint16 >& refFramesOrSegments,
-                                                   ImageSOPInstanceReferenceMacro*& result
-                                                   )
+                                                   ImageSOPInstanceReferenceMacro*& result)
 {
   OFCondition cond = create(sopClassUID, sopInstanceUID, result);
   if (cond.good())
@@ -828,7 +870,7 @@ GeneralAnatomyMacro::GeneralAnatomyMacro(const OFString& type) :
   m_Type(type),
   m_AnatomicRegion(),
   m_AnatomicRegionModifier(),
-  m_PrimaryAnatomicStructure()
+  m_PrimaryAnatomicStructure("3" /* Modifier in Primary Anatomic Structure is always optional */, "1", DCM_PrimaryAnatomicStructureModifierSequence)
 {
   m_Type = type;
 }
@@ -838,12 +880,19 @@ GeneralAnatomyMacro::GeneralAnatomyMacro(const GeneralAnatomyMacro& rhs)
 :  m_Type(rhs.m_Type),
    m_AnatomicRegion(),
    m_AnatomicRegionModifier(),
-   m_PrimaryAnatomicStructure()
+   m_PrimaryAnatomicStructure("3" /* Modifier in Primary Anatomic Structure is always optional */, "1", DCM_PrimaryAnatomicStructureModifierSequence)
+{
+  *this = rhs;
+}
+
+
+GeneralAnatomyMacro& GeneralAnatomyMacro::operator=(const GeneralAnatomyMacro& rhs)
 {
   if (this != &rhs)
   {
+    clearData();
     m_Type = rhs.m_Type;
-    m_AnatomicRegion = m_AnatomicRegion;
+    m_AnatomicRegion = rhs.m_AnatomicRegion;
     m_PrimaryAnatomicStructure = rhs.m_PrimaryAnatomicStructure;
 
     OFVector<CodeSequenceMacro*>::const_iterator it = rhs.m_AnatomicRegionModifier.begin();
@@ -853,6 +902,7 @@ GeneralAnatomyMacro::GeneralAnatomyMacro(const GeneralAnatomyMacro& rhs)
       it++;
     }
   }
+  return *this;
 }
 
 
@@ -884,7 +934,12 @@ OFCondition GeneralAnatomyMacro::check(const OFBool quiet)
     if (result.bad()) return result;
     it++;
   }
-  result = m_PrimaryAnatomicStructure.check(quiet);
+  // Primary Anatomic Structure is optional (type 3), so only check if
+  // user intended to fill in something.
+  if (!m_PrimaryAnatomicStructure.empty())
+  {
+    result = m_PrimaryAnatomicStructure.check(quiet);
+  }
   return result;
 }
 
@@ -920,7 +975,10 @@ OFCondition GeneralAnatomyMacro::read(DcmItem& source,
   /* read Anatomic Region Sequence item into Code Sequence Macro */
   DcmIODUtil::readSingleItem<CodeSequenceMacro>(source, DCM_AnatomicRegionSequence, m_AnatomicRegion, m_Type, "GeneralAnatomyMacro");
 
-  /* Get the single item from Anatomic Region Sequence */
+  /* read Primary Anatomic Structure Macro (main level, i.e.\ original item) */
+  DcmIODUtil::readSingleItem(source, DCM_PrimaryAnatomicStructureSequence, m_PrimaryAnatomicStructure, "3", "GeneralAnatomyMacro");
+
+  /* Get the single item from Anatomic Region Sequence and read modifier if found */
   DcmItem* localItem = NULL;
   if ( source.findAndGetSequenceItem(DCM_AnatomicRegionSequence, localItem).bad() )
   {
@@ -936,9 +994,6 @@ OFCondition GeneralAnatomyMacro::read(DcmItem& source,
     "3",
     "GeneralAnatomyMacro" );
 
-  /* read Primary Anatomic Structure Macro (main level, i.e.\ original item) */
-  m_PrimaryAnatomicStructure.read(source);
-
   return result;
 }
 
@@ -950,295 +1005,60 @@ OFCondition GeneralAnatomyMacro::write(DcmItem& item)
 
   /* delete old data */
   item.findAndDeleteElement(DCM_AnatomicRegionSequence);
+  item.findAndDeleteElement(DCM_PrimaryAnatomicStructureSequence);
 
   /* Write sub structures */
   DcmIODUtil::writeSingleItem<CodeSequenceMacro>(result, DCM_AnatomicRegionSequence, m_AnatomicRegion, item, m_Type, "GeneralAnatomyMacro");
-  DcmIODUtil::writeSubSequence<OFVector<CodeSequenceMacro*> >
-  ( result,
-    DCM_AnatomicRegionModifierSequence,
-    m_AnatomicRegionModifier,
-    item,
-    "1-n",
-    "3",
-    "GeneralAnatomyMacro");
-  return result;
-}
-
-
-GeneralAnatomyMacro& GeneralAnatomyMacro::operator=(const GeneralAnatomyMacro& rhs)
-{
-  if (this != &rhs)
+  if (result.good())
   {
-    clearData();
-    m_Type = rhs.m_Type;
-    m_AnatomicRegion = rhs.m_AnatomicRegion;
-    m_PrimaryAnatomicStructure = rhs.m_PrimaryAnatomicStructure;
-
-    OFVector<CodeSequenceMacro*>::const_iterator it = rhs.m_AnatomicRegionModifier.begin();
-    while ( it != rhs.m_AnatomicRegionModifier.end() )
+    DcmItem* seqItem = NULL;
+    result = item.findAndGetSequenceItem(DCM_AnatomicRegionSequence, seqItem, 0);
+    if (result.good())
     {
-      m_AnatomicRegionModifier.push_back( new CodeSequenceMacro(**it) );
-      it++;
+      DcmIODUtil::writeSubSequence<OFVector<CodeSequenceMacro*> >
+      ( result,
+        DCM_AnatomicRegionModifierSequence,
+        m_AnatomicRegionModifier,
+        *seqItem,
+        "1-n",
+        "3",
+        "GeneralAnatomyMacro");
     }
   }
-  return *this;
-}
-
-
-// ---------------------- PrimaryAnatomicStructureMacroItem ------------------
-
-PrimaryAnatomicStructureMacroItem::PrimaryAnatomicStructureMacroItem() :
-  m_AnatomicStructure(),
-  m_AnatomicStructureModifier()
-{
+  DcmIODUtil::writeSingleItem(result, DCM_PrimaryAnatomicStructureSequence, m_PrimaryAnatomicStructure, item, "3", "GeneralAnatomyMacro");
+  return result;
 }
 
 
-PrimaryAnatomicStructureMacroItem::PrimaryAnatomicStructureMacroItem(const PrimaryAnatomicStructureMacroItem& rhs) :
-  m_AnatomicStructure(),
-  m_AnatomicStructureModifier()
+int GeneralAnatomyMacro::compare(const GeneralAnatomyMacro& rhs) const
 {
-  if (this != &rhs)
+  int result = m_AnatomicRegion.compare(rhs.m_AnatomicRegion);
+  if (result == 0)
   {
-    m_AnatomicStructure = rhs.m_AnatomicStructure;
-    OFVector<CodeSequenceMacro*>::const_iterator it = rhs.m_AnatomicStructureModifier.begin();
-    while ( it != rhs.m_AnatomicStructureModifier.begin() )
+    if (m_AnatomicRegionModifier.size() > rhs.m_AnatomicRegionModifier.size())
     {
-      m_AnatomicStructureModifier.push_back(new CodeSequenceMacro(**it));
-      it++;
+      return 1;
     }
-  }
-}
-
-
-PrimaryAnatomicStructureMacroItem& PrimaryAnatomicStructureMacroItem::operator=(const PrimaryAnatomicStructureMacroItem& rhs)
-{
-  if (this != &rhs)
-  {
-    clearData();
-    m_AnatomicStructure = rhs.m_AnatomicStructure;
-    OFVector<CodeSequenceMacro*>::const_iterator it = rhs.m_AnatomicStructureModifier.begin();
-    while ( it != rhs.m_AnatomicStructureModifier.begin() )
+    else if (m_AnatomicRegionModifier.size() < rhs.m_AnatomicRegionModifier.size())
     {
-      m_AnatomicStructureModifier.push_back(new CodeSequenceMacro(**it));
-      it++;
+      return -1;
     }
-  }
-  return *this;
-}
-
-
-PrimaryAnatomicStructureMacroItem::~PrimaryAnatomicStructureMacroItem()
-{
-  clearData();
-}
-
-
-void PrimaryAnatomicStructureMacroItem::clearData()
-{
-  m_AnatomicStructure.clearData();
-  m_AnatomicStructureModifier.clear();
-  DcmIODUtil::freeContainer(m_AnatomicStructureModifier);
-}
-
-
-OFCondition PrimaryAnatomicStructureMacroItem::check(const OFBool quiet)
-{
-  OFCondition result = m_AnatomicStructure.check();
-  if (result.bad()) return result;
-
-  OFVector<CodeSequenceMacro*>::iterator it = m_AnatomicStructureModifier.begin();
-  while (it != m_AnatomicStructureModifier.end())
-  {
-    result = (*it)->check(quiet);
-    if (result.bad())
-      return result;
-    it++;
-  }
-  return result;
-}
-
-
-
-CodeSequenceMacro& PrimaryAnatomicStructureMacroItem::getAnatomicStructure()
-{
-  return m_AnatomicStructure;
-}
-
-
-OFVector<CodeSequenceMacro*>& PrimaryAnatomicStructureMacroItem::getAnatomicStructureModifier()
-{
-  return m_AnatomicStructureModifier;
-}
 
-
-OFCondition PrimaryAnatomicStructureMacroItem::read(DcmItem& source,
-                                                    const OFBool clearOldData)
-{
-  OFCondition result = EC_Normal;
-
-  /* re-initialize object */
-  if (clearOldData)
-    clearData();
-
-  m_AnatomicStructure.read(source);
-
-  /* check whether cardinality of Primary Anatomic Structure Modifier Sequence and type is ok (produces warnings if not) */
-  DcmIODUtil::checkSubSequence(result, source, DCM_PrimaryAnatomicStructureModifierSequence, "1-n", "3", "PrimaryAnatomicStructureMacro");
-
-  /* read Primary Anatomic Structure Modifier Sequence */
-  DcmIODUtil::readSubSequence<OFVector<CodeSequenceMacro*> >
-  ( source, /* item of Primary Anatomic Structure Sequence */
-    DCM_PrimaryAnatomicStructureModifierSequence,
-    m_AnatomicStructureModifier,
-    "1-n",
-    "3",
-    "GeneralAnatomyMacro" );
-
-  return result;
-}
-
-
-/// Write Primary Anatomic Structure Sequence Item to given item
-OFCondition PrimaryAnatomicStructureMacroItem::write(DcmItem& source)
-{
-  OFCondition result;
-  m_AnatomicStructure.write(source);
-  DcmIODUtil::writeSubSequence<OFVector<CodeSequenceMacro*> >
-  (
-   result,
-   DCM_PrimaryAnatomicStructureModifierSequence,
-   m_AnatomicStructureModifier,
-   source,
-   "1-n",
-   "3",
-   "PrimaryAnatomicStructureMacro"
-  );
-  return result;
-}
-
-
-// ---------------------- PrimaryAnatomicStructureMacro ----------------------
-
-
-PrimaryAnatomicStructureMacro::PrimaryAnatomicStructureMacro() :
-  m_PrimaryAnatomicStructure()
-{
-
-}
-
-
-PrimaryAnatomicStructureMacro::PrimaryAnatomicStructureMacro(const PrimaryAnatomicStructureMacro& rhs)
-{
-  if (this != &rhs)
-  {
-    OFVector<PrimaryAnatomicStructureMacroItem*>::const_iterator it = rhs.m_PrimaryAnatomicStructure.begin();
-    while ( it != rhs.m_PrimaryAnatomicStructure.begin() )
+    for (size_t m = 0; m < m_AnatomicRegionModifier.size(); m++)
     {
-      m_PrimaryAnatomicStructure.push_back(new PrimaryAnatomicStructureMacroItem(**it));
-      it++;
+      rhs.m_AnatomicRegionModifier[m];
+      result = m_AnatomicRegionModifier[m]->compare(  *(rhs.m_AnatomicRegionModifier[m]) );
+      if (result != 0)
+      {
+        return result;
+      }
     }
+    result = m_PrimaryAnatomicStructure.compare(rhs.m_PrimaryAnatomicStructure);
   }
-}
-
-
-PrimaryAnatomicStructureMacro::~PrimaryAnatomicStructureMacro()
-{
-  clearData();
-}
-
-
-void PrimaryAnatomicStructureMacro::clearData()
-{
-  m_PrimaryAnatomicStructure.clear();
-}
-
-
-OFCondition PrimaryAnatomicStructureMacro::check(const OFBool quiet)
-{
-  OFCondition result;
-  OFVector<PrimaryAnatomicStructureMacroItem*>::iterator it = m_PrimaryAnatomicStructure.begin();
-  while (it != m_PrimaryAnatomicStructure.end())
-  {
-    result = (*it)->check(quiet);
-    if (result.bad()) return result;
-    it++;
-  }
-  return result;
-}
-
-
-OFVector<PrimaryAnatomicStructureMacroItem*>& PrimaryAnatomicStructureMacro::getPrimaryAnatomicStructure()
-{
-  return m_PrimaryAnatomicStructure;
-}
-
-
-/// Reads Primary Anatomic Region Sequence from given item
-OFCondition PrimaryAnatomicStructureMacro::read(DcmItem& source,
-                                                const OFBool clearOldData)
-{
-  OFCondition result;
-
-  if (clearOldData)
-    clearData();
-
-  // check for sequence and report warnings if not ok */
-  DcmIODUtil::checkSubSequence(result, source, DCM_PrimaryAnatomicStructureSequence, "1-n", "3", "PrimaryAnantomicStructureMacro");
-
-  // read sequence into member
-  DcmIODUtil::readSubSequence<OFVector<PrimaryAnatomicStructureMacroItem*> >
-  ( source,
-    DCM_PrimaryAnatomicStructureSequence,
-    m_PrimaryAnatomicStructure,
-    "1-n",
-    "3",
-    "PrimaryAnatomicStructureMacro"
-  );
-  return result;
-}
-
-
-/// Write Anatomic Region Sequence from given item
-OFCondition PrimaryAnatomicStructureMacro::write(DcmItem& item)
-{
-  OFCondition result = EC_Normal;
-
-  /* delete old data */
-  item.findAndDeleteElement(DCM_PrimaryAnatomicStructureSequence);
-  item.insertEmptyElement(DCM_PrimaryAnatomicStructureSequence);
-
-  DcmIODUtil::writeSubSequence<OFVector<PrimaryAnatomicStructureMacroItem*> >
-  (
-    result,
-    DCM_PrimaryAnatomicStructureSequence,
-    m_PrimaryAnatomicStructure,
-    item,
-    "1-n",
-    "3",
-    "PrimaryAnatomicStructureMacro"
-  );
-
   return result;
 }
 
 
-PrimaryAnatomicStructureMacro& PrimaryAnatomicStructureMacro::operator=(const PrimaryAnatomicStructureMacro& rhs)
-{
-  if (this != &rhs)
-  {
-    clearData();
-    OFVector<PrimaryAnatomicStructureMacroItem*>::const_iterator it = rhs.m_PrimaryAnatomicStructure.begin();
-    while ( it != rhs.m_PrimaryAnatomicStructure.begin() )
-    {
-      m_PrimaryAnatomicStructure.push_back(new PrimaryAnatomicStructureMacroItem(**it));
-      it++;
-    }
-  }
-  return *this;
-}
-
-
 // ---------------------- AlgorithmIdentificationMacro ----------------------
 
 
diff --git a/dcmiod/libsrc/iodutil.cc b/dcmiod/libsrc/iodutil.cc
index 78e95d1..4e6e507 100644
--- a/dcmiod/libsrc/iodutil.cc
+++ b/dcmiod/libsrc/iodutil.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -163,7 +163,7 @@ OFCondition DcmIODUtil::addElementToDataset(OFCondition &result,
       {
         if (type == "2")
         {
-          delem = newDicomElement(rule->getTagKey());
+          delem = DcmItem::newDicomElement(rule->getTagKey());
           if (delem == NULL)
           {
             result = EC_MemoryExhausted;
@@ -493,7 +493,7 @@ OFCondition DcmIODUtil::checkSOPClass(DcmItem* item,
                                       OFString& valueFound)
 {
   valueFound.clear();
-  if ( (item == NULL) && (item->card() == 0) )
+  if ( (item == NULL) || (item->card() == 0) )
   {
     DCMIOD_TRACE("Cannot check SOP Class UID: Dataset not present or empty");
     return EC_IllegalParameter;
@@ -510,7 +510,6 @@ OFCondition DcmIODUtil::checkSOPClass(DcmItem* item,
     return EC_InvalidValue;
   }
   return EC_Normal;
-
 }
 
 
@@ -575,3 +574,15 @@ OFString DcmIODUtil::createUID(const Uint8 level)
   }
   return uid;
 }
+
+
+Uint16 DcmIODUtil::limitMaxFrames(const size_t numFramesPresent,
+                                  const OFString& warning)
+{
+  if (numFramesPresent > 65535)
+  {
+    DCMIOD_WARN(warning);
+    return 65535;
+  }
+  return OFstatic_cast(Uint16, numFramesPresent);
+}
diff --git a/dcmiod/libsrc/modbase.cc b/dcmiod/libsrc/modbase.cc
index 4368674..27943f0 100644
--- a/dcmiod/libsrc/modbase.cc
+++ b/dcmiod/libsrc/modbase.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -27,6 +27,15 @@
 #include "dcmtk/dcmdata/dcdeftag.h"
 
 
+IODComponent::IODComponent(const IODComponent& rhs)
+: m_Item(OFstatic_cast(DcmItem*, rhs.m_Item->clone()))
+, m_Rules(rhs.m_Rules->clone())
+, m_Parent(OFnullptr)
+{
+
+}
+
+
 IODComponent::IODComponent(OFshared_ptr<DcmItem> item,
                            OFshared_ptr<IODRules> rules,
                            IODComponent* parent)
@@ -62,24 +71,14 @@ IODComponent& IODComponent::operator=(const IODComponent& rhs)
 {
   if (&rhs != this)
   {
-    m_Rules.reset( rhs.m_Rules->clone() );
-    m_Item.reset( OFstatic_cast(DcmItem*, rhs.m_Item->clone()) );
-    m_Parent = NULL;
+    m_Item.reset(OFstatic_cast(DcmItem*, rhs.m_Item->clone()));
+    m_Rules.reset(rhs.m_Rules->clone());
+    m_Parent = OFnullptr;
   }
   return *this;
 }
 
 
-IODComponent::IODComponent(const IODComponent& rhs)
-{
-
-  if (this == &rhs)
-    return;
-
-  *this = rhs;
-}
-
-
 void IODComponent::inventMissing()
 {
   // Try to fill in missing type 1 information
@@ -95,7 +94,7 @@ void IODComponent::inventMissing()
       DcmElement *elem = NULL;
       if ( getData().findAndGetElement( (*rule)->getTagKey(), elem ).bad() )
       {
-        elem = newDicomElement((*rule)->getTagKey());
+        elem = DcmItem::newDicomElement((*rule)->getTagKey());
         if (elem == NULL)
         {
           DCMIOD_ERROR("Could not allocate element " << (*rule)->getTagKey());
@@ -212,8 +211,8 @@ OFCondition IODComponent::read(DcmItem& source,
     if (isSequence)
     {
       DcmElement *elem = NULL;
-      source.findAndGetElement( (*rule)->getTagKey(), elem);
-      DcmIODUtil::checkElementValue(elem, (*rule)->getTagKey(), (*rule)->getVM(), (*rule)->getType(), EC_Normal, (*rule)->getModule().c_str());
+      OFCondition cond = source.findAndGetElement( (*rule)->getTagKey(), elem);
+      DcmIODUtil::checkElementValue(elem, (*rule)->getTagKey(), (*rule)->getVM(), (*rule)->getType(), cond, (*rule)->getModule().c_str());
     }
     else // Normal attributes are checked and copied over into this IOD component
     {
@@ -265,9 +264,28 @@ IODModule::IODModule(): IODComponent()
 }
 
 
+IODModule::IODModule(const IODModule& rhs)
+: IODComponent(rhs.m_Item, rhs.m_Rules, rhs.m_Parent)
+{
+
+}
+
+
 IODModule::IODModule(OFshared_ptr< DcmItem > item,
   OFshared_ptr< IODRules > rules)
 : IODComponent(item, rules, NULL /* No parent for modules */)
 {
   // nothing to do, IODComponent does the work
 }
+
+
+IODModule& IODModule::operator=(const IODModule& rhs)
+{
+  if (this != &rhs)
+  {
+    m_Item = rhs.m_Item;
+    m_Rules = rhs.m_Rules;
+    m_Parent = rhs.m_Parent;
+  }
+  return *this;
+}
diff --git a/dcmiod/libsrc/modcommoninstanceref.cc b/dcmiod/libsrc/modcommoninstanceref.cc
index 921e9fb..246b15e 100644
--- a/dcmiod/libsrc/modcommoninstanceref.cc
+++ b/dcmiod/libsrc/modcommoninstanceref.cc
@@ -45,7 +45,7 @@ IODCommonInstanceReferenceModule::IODCommonInstanceReferenceModule()
 
 IODCommonInstanceReferenceModule::~IODCommonInstanceReferenceModule()
 {
-  clearData();
+  freeMemory();
 }
 
 
@@ -69,12 +69,10 @@ OFVector<IODCommonInstanceReferenceModule::StudiesOtherInstancesItem *> & IODCom
 
 void IODCommonInstanceReferenceModule::clearData()
 {
-  DcmIODUtil::freeContainer(m_StudiesContainingOtherReferencedInstancesSequence);
-  DcmIODUtil::freeContainer(m_ReferenceSeriesItems);
+  freeMemory();
 }
 
 
-
 OFCondition IODCommonInstanceReferenceModule::read(DcmItem& source,
                                                    const OFBool clearOldData)
 {
@@ -204,7 +202,6 @@ void IODCommonInstanceReferenceModule::resetRules()
 }
 
 
-
 OFCondition IODCommonInstanceReferenceModule::addSeriesReference(
   OFVector<IODSeriesAndInstanceReferenceMacro::ReferencedSeriesItem*>& container,
   const IODReference& ref)
@@ -348,3 +345,10 @@ OFCondition IODCommonInstanceReferenceModule::StudiesOtherInstancesItem::setStud
     result = m_Item->putAndInsertOFStringArray(DCM_StudyInstanceUID, value);
   return result;
 }
+
+
+void IODCommonInstanceReferenceModule::freeMemory()
+{
+  DcmIODUtil::freeContainer(m_StudiesContainingOtherReferencedInstancesSequence);
+  DcmIODUtil::freeContainer(m_ReferenceSeriesItems);
+}
\ No newline at end of file
diff --git a/dcmiod/libsrc/modenhequipment.cc b/dcmiod/libsrc/modenhequipment.cc
index 6801c84..dcd71f4 100644
--- a/dcmiod/libsrc/modenhequipment.cc
+++ b/dcmiod/libsrc/modenhequipment.cc
@@ -58,16 +58,16 @@ OFCondition IODEnhGeneralEquipmentModule::create(const IODEnhGeneralEquipmentMod
 
 void IODEnhGeneralEquipmentModule::resetRules()
 {
-  m_Rules->addRule(new IODRule(DCM_Manufacturer, "1","1", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_ManufacturerModelName, "1","1", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_DeviceSerialNumber, "1","1", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_SoftwareVersions, "1-n","1", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_Manufacturer, "1", "1", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_ManufacturerModelName, "1", "1", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_DeviceSerialNumber, "1", "1", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_SoftwareVersions, "1-n", "1", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
 }
 
 
 IODEnhGeneralEquipmentModule::~IODEnhGeneralEquipmentModule()
 {
-  clearData();
+  // Nothing to do
 }
 
 
diff --git a/dcmiod/libsrc/modenhusimage.cc b/dcmiod/libsrc/modenhusimage.cc
index 9fdf4ac..7cb42a7 100644
--- a/dcmiod/libsrc/modenhusimage.cc
+++ b/dcmiod/libsrc/modenhusimage.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -637,7 +637,7 @@ OFCondition IODEnhUSImageModule::setDepthsOfFocus(const OFVector< Float64 >& val
                                                   const bool checkValue)
 {
   (void)checkValue;
-  DcmElement* elem = newDicomElement(DCM_DepthsOfFocus);
+  DcmElement* elem = DcmItem::newDicomElement(DCM_DepthsOfFocus);
   if (!elem)
     return EC_MemoryExhausted;
 
diff --git a/dcmiod/libsrc/modequipment.cc b/dcmiod/libsrc/modequipment.cc
index 0d2abeb..ade432d 100644
--- a/dcmiod/libsrc/modequipment.cc
+++ b/dcmiod/libsrc/modequipment.cc
@@ -48,20 +48,19 @@ void IODGeneralEquipmentModule::resetRules()
 {
 
   // parameters are tag, VM, type. Overwrite old rules if any.
-  m_Rules->addRule(new IODRule(DCM_Manufacturer, "1","3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_InstitutionName, "1","3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_InstitutionAddress, "1","3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_StationName, "1","3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_InstitutionalDepartmentName, "1","3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_ManufacturerModelName, "1","3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_DeviceSerialNumber, "1","3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_SoftwareVersions, "1-n","3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_Manufacturer, "1", "2", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_InstitutionName, "1", "3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_InstitutionAddress, "1", "3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_StationName, "1", "3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_InstitutionalDepartmentName, "1", "3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_ManufacturerModelName, "1", "3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_DeviceSerialNumber, "1", "3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_SoftwareVersions, "1-n", "3", getName(), DcmIODTypes::IE_EQUIPMENT), OFTrue);
 }
 
 
 IODGeneralEquipmentModule::~IODGeneralEquipmentModule()
 {
-  clearData();
 }
 
 
diff --git a/dcmiod/libsrc/modfloatingpointimagepixel.cc b/dcmiod/libsrc/modfloatingpointimagepixel.cc
new file mode 100644
index 0000000..d5e1494
--- /dev/null
+++ b/dcmiod/libsrc/modfloatingpointimagepixel.cc
@@ -0,0 +1,260 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmiod
+ *
+ *  Author: Michael Onken
+ *
+ *  Purpose: Floating Point and Double Floating Point Image Pixel Module
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+#include "dcmtk/dcmiod/modfloatingpointimagepixel.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
+#include "dcmtk/dcmdata/dcvrfl.h"
+#include "dcmtk/dcmdata/dcvrfd.h"
+#include "dcmtk/dcmiod/iodutil.h"
+
+const OFString IODFloatingPointImagePixelModule::m_ModuleName = "FloatingPointImagePixelModule";
+const DcmTagKey IODFloatingPointImagePixelModule::pixel_data_tag = DCM_FloatPixelData;
+const DcmTagKey IODDoubleFloatingPointImagePixelModule::pixel_data_tag = DCM_DoubleFloatPixelData;
+
+
+IODFloatingPointImagePixelModule::IODFloatingPointImagePixelModule(OFshared_ptr<DcmItem> item,
+                                                                   OFshared_ptr<IODRules> rules)
+: IODImagePixelBase(item, rules)
+{
+  // reset element rules
+  resetRules();
+  getData().putAndInsertUint16(DCM_BitsAllocated, 32);
+  getData().putAndInsertUint16(DCM_SamplesPerPixel, 1);
+  getData().putAndInsertUint16(DCM_PixelRepresentation, 1);
+  getData().putAndInsertOFStringArray(DCM_PhotometricInterpretation, "MONOCHROME2");
+}
+
+
+OFString IODFloatingPointImagePixelModule::getName() const
+{
+  return m_ModuleName;
+}
+
+
+IODFloatingPointImagePixelModule::IODFloatingPointImagePixelModule()
+: IODImagePixelBase()
+{
+  resetRules();
+}
+
+
+IODFloatingPointImagePixelModule::~IODFloatingPointImagePixelModule()
+{
+  // nothing to do
+}
+
+
+void IODFloatingPointImagePixelModule::resetRules()
+{
+  // Parameters this module is responsible for.
+  m_Rules->addRule(new IODRule(DCM_SamplesPerPixel, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_PhotometricInterpretation, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_Rows, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_Columns, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_BitsAllocated, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_PixelAspectRatio, "2", "1C", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_FloatPixelPaddingValue, "1", "3", m_ModuleName, DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_FloatPixelPaddingRangeLimit, "1", "1C", m_ModuleName, DcmIODTypes::IE_IMAGE), OFTrue);
+}
+
+
+OFCondition IODFloatingPointImagePixelModule::read(DcmItem& source,
+                                                  const OFBool clearOldData)
+{
+  // Read common attributes
+  IODImagePixelBase::read(source, clearOldData);
+  // Read extra attributes of Floating Point Image Pixel Module
+  IODModule::read(source, clearOldData);
+  return EC_Normal;
+}
+
+
+OFCondition IODFloatingPointImagePixelModule::write(DcmItem& destination)
+{
+  // Write Photometric Interpretation fixed value for Floating Point Image Pixel Module
+  OFCondition result = m_Item->putAndInsertOFStringArray(DCM_PhotometricInterpretation, "MONOCHROME2");
+  // Write common attributes
+  if (result.good())
+  {
+    result = IODImagePixelBase::write(destination);
+  }
+  // Write extra attributes of Floating Poing Image Pixel Module
+  if (result.good())
+  {
+    result = IODModule::write(destination);
+  }
+  return result;
+}
+
+
+IODImagePixelBase::DataType IODFloatingPointImagePixelModule::getDataType() const
+{
+  return IODImagePixelBase::DATA_TYPE_FLOAT;
+}
+
+
+OFCondition IODFloatingPointImagePixelModule::getFloatPixelPaddingValue(Float32& value,
+                                                                        const long pos)
+{
+  return m_Item->findAndGetFloat32(DCM_FloatPixelPaddingValue, value, pos);
+}
+
+
+OFCondition IODFloatingPointImagePixelModule::getFloatPixelPaddingRangeLimit(Float32& value,
+                                                                             const long pos)
+{
+  return m_Item->findAndGetFloat32(DCM_FloatPixelPaddingRangeLimit, value, pos);
+}
+
+
+OFCondition IODFloatingPointImagePixelModule::setFloatPixelPaddingValue(const Float32 value,
+                                                                        const OFBool checkValue)
+{
+  (void)checkValue;
+  return m_Item->putAndInsertFloat32(DCM_FloatPixelPaddingValue, value);
+}
+
+
+OFCondition IODFloatingPointImagePixelModule::setFloatPixelPaddingRangeLimit(const Float32 value,
+                                                                             const OFBool checkValue)
+{
+  (void)checkValue;
+  return m_Item->putAndInsertFloat32(DCM_FloatPixelPaddingRangeLimit, value);
+}
+
+// ---------------- Double Floating Point Image Pixel Module ------------------
+
+const OFString IODDoubleFloatingPointImagePixelModule::m_ModuleName = "DoubleFloatingPointImagePixelModule";
+
+
+IODDoubleFloatingPointImagePixelModule::IODDoubleFloatingPointImagePixelModule(OFshared_ptr<DcmItem> item,
+                                                                               OFshared_ptr<IODRules> rules)
+: IODImagePixelBase(item, rules)
+{
+  // reset element rules
+  resetRules();
+
+  getData().putAndInsertUint16(DCM_BitsAllocated, 64);
+  getData().putAndInsertUint16(DCM_SamplesPerPixel, 1);
+  getData().putAndInsertUint16(DCM_PixelRepresentation, 1);
+  getData().putAndInsertOFStringArray(DCM_PhotometricInterpretation, "MONOCHROME2");
+}
+
+
+OFString IODDoubleFloatingPointImagePixelModule::getName() const
+{
+  return m_ModuleName;
+}
+
+
+IODDoubleFloatingPointImagePixelModule::IODDoubleFloatingPointImagePixelModule()
+: IODImagePixelBase()
+{
+  resetRules();
+}
+
+
+IODDoubleFloatingPointImagePixelModule::~IODDoubleFloatingPointImagePixelModule()
+{
+  // nothing to do
+}
+
+
+void IODDoubleFloatingPointImagePixelModule::resetRules()
+{
+  // Parameters are tag, VM, type. Overwrite old rules if any.
+  // Take over responsibility for Photometric Interpretation since we want to write
+  // "MONOCHROME2" as a fixed value.
+  m_Rules->addRule(new IODRule(DCM_SamplesPerPixel, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_PhotometricInterpretation, "1", "1", getName(), DcmIODTypes::IE_IMAGE, "MONOCHROME2"), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_Rows, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_Columns, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_BitsAllocated, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_PixelAspectRatio, "2", "1C", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_DoubleFloatPixelPaddingValue, "1", "3", m_ModuleName, DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_DoubleFloatPixelPaddingRangeLimit, "1", "1C", m_ModuleName, DcmIODTypes::IE_IMAGE), OFTrue);
+}
+
+
+OFCondition IODDoubleFloatingPointImagePixelModule::read(DcmItem& source,
+                                                         const OFBool clearOldData)
+{
+  // Read common attributes
+  IODImagePixelBase::read(source, clearOldData);
+  // Read extra attributes of Floating Point Image Pixel Module
+  IODModule::read(source, clearOldData);
+  return EC_Normal;
+}
+
+
+OFCondition IODDoubleFloatingPointImagePixelModule::write(DcmItem& destination)
+{
+  // Write Photometric Interpretation fixed value for Floating Point Image Pixel Module
+  OFCondition result = m_Item->putAndInsertOFStringArray(DCM_PhotometricInterpretation, "MONOCHROME2");
+  // Write common attributes
+  if (result.good())
+  {
+    result = IODImagePixelBase::write(destination);
+  }
+  // Write extra attributes of Floating Poing Image Pixel Module
+  if (result.good())
+  {
+    result = IODModule::write(destination);
+  }
+  return result;
+}
+
+
+IODImagePixelBase::DataType IODDoubleFloatingPointImagePixelModule::getDataType() const
+{
+  return IODImagePixelBase::DATA_TYPE_DOUBLE;
+}
+
+
+OFCondition IODDoubleFloatingPointImagePixelModule::getDoubleFloatPixelPaddingValue(Float64& value,
+                                                                                    const long pos)
+{
+  return m_Item->findAndGetFloat64(DCM_FloatPixelPaddingValue, value, pos);
+}
+
+
+OFCondition IODDoubleFloatingPointImagePixelModule::getDoubleFloatPixelPaddingRangeLimit(Float64& value,
+                                                                                         const long pos)
+{
+  return m_Item->findAndGetFloat64(DCM_DoubleFloatPixelPaddingRangeLimit, value, pos);
+}
+
+
+OFCondition IODDoubleFloatingPointImagePixelModule::setDoubleFloatPixelPaddingValue(const Float64 value,
+                                                                                    const OFBool checkValue)
+{
+  (void)checkValue;
+  return m_Item->putAndInsertFloat64(DCM_DoubleFloatPixelPaddingValue, value);
+}
+
+
+OFCondition IODDoubleFloatingPointImagePixelModule::setDoubleFloatPixelPaddingRangeLimit(const Float64 value,
+                                                                                         const OFBool checkValue)
+{
+  (void)checkValue;
+  return m_Item->putAndInsertFloat64(DCM_DoubleFloatPixelPaddingRangeLimit, value);
+}
diff --git a/dcmiod/libsrc/modfor.cc b/dcmiod/libsrc/modfor.cc
index 3ca984d..3e33166 100644
--- a/dcmiod/libsrc/modfor.cc
+++ b/dcmiod/libsrc/modfor.cc
@@ -61,8 +61,7 @@ OFString IODFoRModule::getName() const
 
 IODFoRModule::~IODFoRModule()
 {
-  // clear rules from rule set
-  clearData();
+  // Nothing to do
 }
 
 
@@ -80,7 +79,6 @@ OFCondition IODFoRModule::getPositionReferenceIndicator(OFString& value,
 }
 
 
-
 OFCondition IODFoRModule::setFrameOfReferenceUID(const OFString &value,
                                                  const OFBool checkValue)
 {
@@ -100,3 +98,22 @@ OFCondition IODFoRModule::setPositionReferenceIndicator(const OFString &value,
   return result;
 }
 
+
+void IODFoRModule::ensureFrameOfReferenceUID(const OFBool correctInvalid)
+{
+  OFString uidstr;
+
+  // Create new Frame of Reference instance UID if required
+  if (getFrameOfReferenceUID(uidstr).bad() || uidstr.empty() )
+  {
+    setFrameOfReferenceUID(DcmIODUtil::createUID(1 /* Series Level */));
+  }
+  else if (!uidstr.empty() && correctInvalid)
+  {
+    if (DcmUniqueIdentifier::checkStringValue(uidstr, "1").bad())
+    {
+      setFrameOfReferenceUID(DcmIODUtil::createUID(1 /* Series Level */));
+    }
+  }
+}
+
diff --git a/dcmiod/libsrc/modimagepixel.cc b/dcmiod/libsrc/modimagepixel.cc
index c2a8c58..6343c5d 100644
--- a/dcmiod/libsrc/modimagepixel.cc
+++ b/dcmiod/libsrc/modimagepixel.cc
@@ -27,38 +27,46 @@
 #include "dcmtk/dcmdata/dcvris.h"
 #include "dcmtk/dcmiod/iodutil.h"
 
-const OFString IODImagePixelModule::m_ModuleName = "ImagePixelModule";
-
-
-IODImagePixelModule::IODImagePixelModule(OFshared_ptr<DcmItem> item,
-                                         OFshared_ptr<IODRules> rules)
-: IODModule(item, rules)
+template<typename T>
+const OFString IODImagePixelModule<T>::m_ModuleName = "ImagePixelModule";
+template<typename T>
+const DcmTagKey IODImagePixelModule<T>::pixel_data_tag = DCM_PixelData;
+
+template<typename T>
+IODImagePixelModule<T>::IODImagePixelModule(OFshared_ptr<DcmItem> item,
+                                            OFshared_ptr<IODRules> rules)
+: IODImagePixelBase(item, rules)
 {
   // reset element rules
   resetRules();
 }
 
-
-OFString IODImagePixelModule::getName() const
+template<typename T>
+OFString IODImagePixelModule<T>::getName() const
 {
   return m_ModuleName;
 }
 
-
-IODImagePixelModule::IODImagePixelModule()
-: IODModule()
+template<typename T>
+IODImagePixelModule<T>::IODImagePixelModule()
+: IODImagePixelBase()
 {
   resetRules();
 }
 
+template<typename T>
+IODImagePixelModule<T>::~IODImagePixelModule()
+{
+}
 
-void IODImagePixelModule::resetRules()
+template<typename T>
+void IODImagePixelModule<T>::resetRules()
 {
   // parameters are tag, VM, type. Overwrite old rules if any.
   m_Rules->addRule(new IODRule(DCM_SamplesPerPixel, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
   m_Rules->addRule(new IODRule(DCM_PhotometricInterpretation, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
   m_Rules->addRule(new IODRule(DCM_Rows, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
-  m_Rules->addRule(new IODRule(DCM_Columns, "1", "1n", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_Columns, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
   m_Rules->addRule(new IODRule(DCM_BitsAllocated, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
   m_Rules->addRule(new IODRule(DCM_BitsStored, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
   m_Rules->addRule(new IODRule(DCM_HighBit, "1", "1", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
@@ -68,83 +76,66 @@ void IODImagePixelModule::resetRules()
   m_Rules->addRule(new IODRule(DCM_ICCProfile, "1", "3", getName(), DcmIODTypes::IE_IMAGE), OFTrue);
 }
 
-
-IODImagePixelModule::~IODImagePixelModule()
+template<typename T>
+OFCondition IODImagePixelModule<T>::read(DcmItem& source,
+                                         const OFBool clearOldData)
 {
+  // Read common attributes
+  IODImagePixelBase::read(source, clearOldData);
+  // Read extra attributes of Image Pixel Module
+  IODModule::read(source, clearOldData);
+  return EC_Normal;
 }
 
-
-OFCondition IODImagePixelModule::getSamplesPerPixel(Uint16 &value,
-                                         const signed long pos)
+template<typename T>
+OFCondition IODImagePixelModule<T>::write(DcmItem& destination)
 {
-  return m_Item->findAndGetUint16(DCM_SamplesPerPixel, value, pos);
-}
-
-
-OFCondition IODImagePixelModule::getPhotometricInterpretation(OFString&value,
-                                                      const signed long pos)
-{
-  return DcmIODUtil::getStringValueFromItem(DCM_PhotometricInterpretation, *m_Item, value, pos);
-}
-
-
-OFCondition IODImagePixelModule::getRows(Uint16& value,
-                                 const signed long pos)
-{
-  return m_Item->findAndGetUint16(DCM_Rows, value, pos);
-}
-
-
-OFCondition IODImagePixelModule::getColumns(Uint16& value,
-                                    const signed long pos)
-{
-  return m_Item->findAndGetUint16(DCM_Columns, value, pos);
+  // Write common attributes
+  OFCondition result = IODImagePixelBase::write(destination);
+  // Write extra attributes of Image Pixel Module
+  if (result.good())
+  {
+    IODModule::write(destination);
+  }
+  return result;
 }
 
-
-OFCondition IODImagePixelModule::getBitsAllocated(Uint16& value,
-                                          const signed long pos)
+template<typename T>
+IODImagePixelBase::DataType IODImagePixelModule<T>::getDataType() const
 {
-  return m_Item->findAndGetUint16(DCM_BitsAllocated, value, pos);
+  return IODImagePixelBase::DATA_TYPE_INTEGER;
 }
 
-
-OFCondition IODImagePixelModule::getBitsStored(Uint16& value,
-                                       const signed long pos)
+template<typename T>
+OFCondition IODImagePixelModule<T>::getBitsStored(Uint16& value,
+                                                  const signed long pos)
 {
   return m_Item->findAndGetUint16(DCM_BitsStored, value, pos);
 }
 
-
-OFCondition IODImagePixelModule::getHighBit(Uint16& value,
-                                    const signed long pos)
+template<typename T>
+OFCondition IODImagePixelModule<T>::getHighBit(Uint16& value,
+                                            const signed long pos)
 {
   return m_Item->findAndGetUint16(DCM_HighBit, value, pos);
 }
 
-
-OFCondition IODImagePixelModule::getPixelRepresentation(Uint16& value,
-                                                  const signed long pos)
+template<typename T>
+OFCondition IODImagePixelModule<T>::getPixelRepresentation(Uint16& value,
+                                                        const signed long pos)
 {
   return m_Item->findAndGetUint16(DCM_PixelRepresentation, value, pos);
 }
 
-
-OFCondition IODImagePixelModule::getPlanarConfiguration(Uint16& value,
-                                                const signed long pos)
+template<typename T>
+OFCondition IODImagePixelModule<T>::getPlanarConfiguration(Uint16& value,
+                                                         const signed long pos)
 {
   return m_Item->findAndGetUint16(DCM_PlanarConfiguration, value, pos);
 }
 
-
-OFCondition IODImagePixelModule::getPixelAspectRatio(Uint16& value,
-                                            const signed long pos)
-{
-  return m_Item->findAndGetUint16(DCM_PixelAspectRatio, value, pos);
-}
-
-
-OFCondition IODImagePixelModule::getICCProfile(OFVector<Uint8>& values)
+template<typename T>
+OFCondition IODImagePixelModule<T>::getICCProfile(OFVector<Uint8>& values)
 {
   DcmElement* elem = NULL;
   OFCondition result = m_Item->findAndGetElement(DCM_ICCProfile, elem);
@@ -160,8 +151,8 @@ OFCondition IODImagePixelModule::getICCProfile(OFVector<Uint8>& values)
     return EC_TagNotFound;
 }
 
-
-OFCondition IODImagePixelModule::setSamplesPerPixel(const Uint16 value,
+template<typename T>
+OFCondition IODImagePixelModule<T>::setSamplesPerPixel(const Uint16 value,
                                                     const OFBool checkValue)
 {
   OFCondition result = EC_Normal;
@@ -183,12 +174,11 @@ OFCondition IODImagePixelModule::setSamplesPerPixel(const Uint16 value,
   if (result.good() )
     result = m_Item->putAndInsertUint16(DCM_SamplesPerPixel, value);
 
-  // TODO: Check consistency with photometric interpretation
   return result;
 }
 
-
-OFCondition IODImagePixelModule::setPhotometricInterpretation(const OFString& value,
+template<typename T>
+OFCondition IODImagePixelModule<T>::setPhotometricInterpretation(const OFString& value,
                                                               const OFBool checkValue)
 {
   OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -197,48 +187,32 @@ OFCondition IODImagePixelModule::setPhotometricInterpretation(const OFString& va
   return result;
 }
 
-
-OFCondition IODImagePixelModule::setRows(const Uint16 value,
-                                         const OFBool checkValue)
-{
-  (void)checkValue;
-  return m_Item->putAndInsertUint16(DCM_Rows, value);
-}
-
-
-OFCondition IODImagePixelModule::setColumns(const Uint16 value,
-                                            const OFBool checkValue)
-{
-  (void)checkValue;
-  return m_Item->putAndInsertUint16(DCM_Columns, value);
-}
-
-
-OFCondition IODImagePixelModule::setBitsAllocated(const Uint16 value,
+template<typename T>
+OFCondition IODImagePixelModule<T>::setBitsAllocated(const Uint16 value,
                                                   const OFBool checkValue)
 {
   (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_BitsAllocated, value);
 }
 
-
-OFCondition IODImagePixelModule::setBitsStored(const Uint16 value,
+template<typename T>
+OFCondition IODImagePixelModule<T>::setBitsStored(const Uint16 value,
                                                const OFBool checkValue)
 {
   (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_BitsStored, value);
 }
 
-
-OFCondition IODImagePixelModule::setHighBit(const Uint16 value,
+template<typename T>
+OFCondition IODImagePixelModule<T>::setHighBit(const Uint16 value,
                                             const OFBool checkValue)
 {
   (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_HighBit, value);
 }
 
-
-OFCondition IODImagePixelModule::setPixelRepresentation(const Uint16 value,
+template<typename T>
+OFCondition IODImagePixelModule<T>::setPixelRepresentation(const Uint16 value,
                                                         const OFBool checkValue)
 {
   OFCondition result = EC_Normal;
@@ -257,8 +231,8 @@ OFCondition IODImagePixelModule::setPixelRepresentation(const Uint16 value,
   return result;
 }
 
-
-OFCondition IODImagePixelModule::setPlanarConfiguration(const Uint16 value,
+template<typename T>
+OFCondition IODImagePixelModule<T>::setPlanarConfiguration(const Uint16 value,
                                                         const OFBool checkValue)
 {
   OFCondition result = EC_Normal;
@@ -277,26 +251,14 @@ OFCondition IODImagePixelModule::setPlanarConfiguration(const Uint16 value,
   return result;
 }
 
-
-OFCondition IODImagePixelModule::setPixelAspectRatio(const OFString& verticalPixelSize,
-                                                     const OFString& horizontalPixelSize,
-                                                     const OFBool checkValue)
-{
-  OFString concat = verticalPixelSize;
-  concat += "\\"; concat += horizontalPixelSize;
-  OFCondition cond;
-  if (checkValue)
-  {
-    cond = DcmIntegerString::checkStringValue(concat, "2");
-    // check for unsignedness, too?
-  }
-  if (cond.good()) m_Item->putAndInsertOFStringArray(DCM_PixelAspectRatio, concat);
-  return cond;
-}
-
-
-OFCondition IODImagePixelModule::setICCProfile(const Uint8* values,
+template<typename T>
+OFCondition IODImagePixelModule<T>::setICCProfile(const Uint8* values,
                                                const size_t length)
 {
   return m_Item->putAndInsertUint8Array(DCM_ICCProfile, values, length);
 }
+
+template class IODImagePixelModule<Uint8>;
+template class IODImagePixelModule<Sint8>;
+template class IODImagePixelModule<Uint16>;
+template class IODImagePixelModule<Sint16>;
diff --git a/dcmiod/libsrc/modimagepixelbase.cc b/dcmiod/libsrc/modimagepixelbase.cc
new file mode 100644
index 0000000..f35725e
--- /dev/null
+++ b/dcmiod/libsrc/modimagepixelbase.cc
@@ -0,0 +1,138 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmiod
+ *
+ *  Author: Michael Onken
+ *
+ *  Purpose: Base class for Image Pixel Module and related (e.g. Ploating Point)
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+#include "dcmtk/dcmiod/modimagepixelbase.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
+#include "dcmtk/dcmdata/dcvrobow.h"
+#include "dcmtk/dcmdata/dcvrcs.h"
+#include "dcmtk/dcmdata/dcvris.h"
+#include "dcmtk/dcmiod/iodutil.h"
+
+const OFString IODImagePixelBase::m_ModuleName = "ImagePixelBase";
+
+
+IODImagePixelBase::IODImagePixelBase(OFshared_ptr<DcmItem> item,
+                                     OFshared_ptr<IODRules> rules)
+: IODModule(item, rules)
+{
+  // reset element rules
+  resetRules();
+}
+
+
+OFString IODImagePixelBase::getName() const
+{
+  return m_ModuleName;
+}
+
+
+IODImagePixelBase::IODImagePixelBase()
+: IODModule()
+{
+  resetRules();
+}
+
+
+IODImagePixelBase::~IODImagePixelBase()
+{
+}
+
+
+void IODImagePixelBase::resetRules()
+{
+  // all rules in sub classes
+}
+
+
+OFCondition IODImagePixelBase::getSamplesPerPixel(Uint16 &value,
+                                         const signed long pos)
+{
+  return m_Item->findAndGetUint16(DCM_SamplesPerPixel, value, pos);
+}
+
+
+OFCondition IODImagePixelBase::getPhotometricInterpretation(OFString&value,
+                                                      const signed long pos)
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_PhotometricInterpretation, *m_Item, value, pos);
+}
+
+
+OFCondition IODImagePixelBase::getRows(Uint16& value,
+                                 const signed long pos)
+{
+  return m_Item->findAndGetUint16(DCM_Rows, value, pos);
+}
+
+
+OFCondition IODImagePixelBase::getColumns(Uint16& value,
+                                    const signed long pos)
+{
+  return m_Item->findAndGetUint16(DCM_Columns, value, pos);
+}
+
+
+OFCondition IODImagePixelBase::getBitsAllocated(Uint16& value,
+                                          const signed long pos)
+{
+  return m_Item->findAndGetUint16(DCM_BitsAllocated, value, pos);
+}
+
+
+OFCondition IODImagePixelBase::getPixelAspectRatio(Uint16& value,
+                                            const signed long pos)
+{
+  return m_Item->findAndGetUint16(DCM_PixelAspectRatio, value, pos);
+}
+
+
+OFCondition IODImagePixelBase::setRows(const Uint16 value,
+                                         const OFBool checkValue)
+{
+  (void)checkValue;
+  return m_Item->putAndInsertUint16(DCM_Rows, value);
+}
+
+
+OFCondition IODImagePixelBase::setColumns(const Uint16 value,
+                                            const OFBool checkValue)
+{
+  (void)checkValue;
+  return m_Item->putAndInsertUint16(DCM_Columns, value);
+}
+
+
+OFCondition IODImagePixelBase::setPixelAspectRatio(const OFString& verticalPixelSize,
+                                                     const OFString& horizontalPixelSize,
+                                                     const OFBool checkValue)
+{
+  OFString concat = verticalPixelSize;
+  concat += "\\"; concat += horizontalPixelSize;
+  OFCondition cond;
+  if (checkValue)
+  {
+    cond = DcmIntegerString::checkStringValue(concat, "2");
+    // check for unsignedness, too?
+  }
+  if (cond.good()) m_Item->putAndInsertOFStringArray(DCM_PixelAspectRatio, concat);
+  return cond;
+}
diff --git a/dcmiod/libsrc/modmultiframedimension.cc b/dcmiod/libsrc/modmultiframedimension.cc
index 199dfa4..ad8e1be 100644
--- a/dcmiod/libsrc/modmultiframedimension.cc
+++ b/dcmiod/libsrc/modmultiframedimension.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -70,23 +70,48 @@ OFCondition IODMultiframeDimensionModule::addDimensionIndex(const DcmTagKey& dim
     return IOD_EC_MissingAttribute;
   }
 
+  // Add Dimension Organization by its UID if such organization does not exist yet
+  OFVector<DimensionOrganizationItem*>::iterator it = m_DimensionOrganizationSequence.begin();
+  while (it != m_DimensionOrganizationSequence.end())
+  {
+    OFString val;
+    (*it)->getDimensionOrganizationUID(val);
+    if (val == dimensionOrganizationUID)
+    {
+      break;
+    }
+    it++;
+  }
+  OFCondition result;
+  if (it == m_DimensionOrganizationSequence.end())
+  {
+    DimensionOrganizationItem* item = new DimensionOrganizationItem;
+    if (item == NULL)
+    {
+      return EC_MemoryExhausted;
+    }
+    result = item->setDimensionOrganizationUID(dimensionOrganizationUID);
+    if (result.bad())
+      return result;
+    m_DimensionOrganizationSequence.push_back(item);
+  }
+
+  // Create dimension and add it to this object
   DimensionIndexItem* dim = new DimensionIndexItem();
   if (!dim)
     return EC_MemoryExhausted;
 
-  OFCondition result = dim->setDimensionOrganizationUID(dimensionOrganizationUID);
+  result = dim->setDimensionOrganizationUID(dimensionOrganizationUID);
   if (result.good()) result = dim->setFunctionalGroupPointer(functionalGroupPointer);
   if (result.good()) result = dim->setDimensionIndexPointer(dimensionIndexPointer);
   if (result.good() && !dimensionIndexPrivateCreator.empty()) dim->setDimensionIndexPrivateCreator(dimensionIndexPrivateCreator);
   if (result.good() && !functionalGroupPrivateCreator.empty()) dim->setFunctionalGroupPrivateCreator(functionalGroupPrivateCreator);
   if (result.good() && !dimensionDescriptionLabel.empty()) dim->setDimensionDescriptionLabel(dimensionDescriptionLabel);
-
   if (result.bad())
   {
     DCMIOD_ERROR("Could not add Dimension Index: Invalid data values");
     delete dim;
   }
-
   m_DimensionIndexSequence.push_back(dim);
 
   return result;
@@ -501,7 +526,7 @@ OFCondition IODMultiframeDimensionModule::DimensionIndexItem::setFunctionalGroup
   if (value == DCM_UndefinedTagKey)
     return EC_IllegalParameter;
 
-  DcmAttributeTag *elem = OFstatic_cast(DcmAttributeTag*, newDicomElement(DCM_FunctionalGroupPointer));
+  DcmAttributeTag *elem = OFstatic_cast(DcmAttributeTag*, DcmItem::newDicomElement(DCM_FunctionalGroupPointer));
   if (elem == NULL)
     return EC_InternalError;
 
@@ -533,7 +558,7 @@ OFCondition IODMultiframeDimensionModule::DimensionIndexItem::setDimensionIndexP
   if (value == DCM_UndefinedTagKey)
     return EC_IllegalParameter;
 
-  DcmAttributeTag *elem = OFstatic_cast(DcmAttributeTag*, newDicomElement(DCM_DimensionIndexPointer));
+  DcmAttributeTag *elem = OFstatic_cast(DcmAttributeTag*, DcmItem::newDicomElement(DCM_DimensionIndexPointer));
   if (elem == NULL)
     return EC_InternalError;
 
diff --git a/dcmiod/libsrc/modmultiframefg.cc b/dcmiod/libsrc/modmultiframefg.cc
index 6f324e9..4b256ba 100644
--- a/dcmiod/libsrc/modmultiframefg.cc
+++ b/dcmiod/libsrc/modmultiframefg.cc
@@ -115,7 +115,6 @@ OFCondition IODMultiFrameFGModule::getRepresentativeFrameNumber(Uint16& value,
 
 OFCondition IODMultiFrameFGModule::setConcatenationInfo(const IODMultiFrameFGModule::ConcatenationInfo& concatenationInfo)
 {
-  // TODO: Checks?
   m_ConcatenationInfo = concatenationInfo;
   return EC_Normal;
 }
@@ -131,7 +130,6 @@ OFCondition IODMultiFrameFGModule::setInstanceNumber(const OFString& value,
 }
 
 
-
 OFCondition IODMultiFrameFGModule::setContentDate(const OFString& value,
                                                   const OFBool checkValue)
 {
diff --git a/dcmiod/libsrc/modsynchronization.cc b/dcmiod/libsrc/modsynchronization.cc
index 3aceba7..4d496e3 100644
--- a/dcmiod/libsrc/modsynchronization.cc
+++ b/dcmiod/libsrc/modsynchronization.cc
@@ -72,8 +72,6 @@ OFString IODSynchronizationModule::getName() const
 
 IODSynchronizationModule::~IODSynchronizationModule()
 {
-  // clear rules from rule set
-  clearData();
 }
 
 
@@ -152,11 +150,12 @@ OFCondition IODSynchronizationModule::setSynchronizationFrameofReferenceUID(cons
 OFCondition IODSynchronizationModule::setSynchronizationTrigger(const OFString &value,
                                                                 const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_Item->putAndInsertOFStringArray(DCM_SynchronizationTrigger, value);
-  // TODO: Further checks since this field has enumerated values
-  return result;
+  if (checkValue && !isValidSynchronizationTrigger(value))
+  {
+    DCMIOD_ERROR("Synchronization Trigger does not allow value " << value << " (enumerated values)");
+    return IOD_EC_InvalidElementValue;
+  }
+  return m_Item->putAndInsertOFStringArray(DCM_SynchronizationTrigger, value);
 }
 
 
@@ -186,11 +185,12 @@ OFCondition IODSynchronizationModule::setSynchronizationChannel(const OFPair<Uin
 OFCondition IODSynchronizationModule::setAcquisitionTimeSynchronized(const OFString &value,
                                                                      const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_Item->putAndInsertOFStringArray(DCM_AcquisitionTimeSynchronized, value);
-  // TODO: Further checks since this field has enumerated values
-  return result;
+  if (checkValue && !isValidAcquisitionTimeSynchronized(value))
+  {
+    DCMIOD_ERROR("Acquisition Time Synchronized must only allows values 'Y' and 'N' (enumerated values)");
+    return IOD_EC_InvalidElementValue;
+  }
+  return m_Item->putAndInsertOFStringArray(DCM_AcquisitionTimeSynchronized, value);
 }
 
 
@@ -207,14 +207,16 @@ OFCondition IODSynchronizationModule::setTimeSource(const OFString &value,
 OFCondition IODSynchronizationModule::setTimeDistributionProtocol(const OFString &value,
                                                                   const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_Item->putAndInsertOFStringArray(DCM_TimeDistributionProtocol, value);
-  // TODO: Further checks since this field has enumerated values
-  return result;
+  if (checkValue && !isValidTimeDistributionProtocol(value))
+  {
+    DCMIOD_ERROR("Time Distribution Protocol does not allow value " << value << " (enumerated values)");
+    return IOD_EC_InvalidElementValue;
+  }
+  return m_Item->putAndInsertOFStringArray(DCM_TimeDistributionProtocol, value);
 }
 
 
+
 OFCondition IODSynchronizationModule::setNTPSourceAddress(const OFString &value,
                                                           const OFBool checkValue)
 {
@@ -223,3 +225,24 @@ OFCondition IODSynchronizationModule::setNTPSourceAddress(const OFString &value,
     result = m_Item->putAndInsertOFStringArray(DCM_NTPSourceAddress, value);
   return result;
 }
+
+
+
+OFBool IODSynchronizationModule::isValidAcquisitionTimeSynchronized(const OFString& value)
+{
+  return ( (value == "Y") || (value == "N") );
+
+}
+
+
+OFBool IODSynchronizationModule::isValidTimeDistributionProtocol(const OFString& value)
+{
+  return ( (value == "NTP") || (value == "IRIG") || (value == "GPS") || (value == "SNTP") || (value == "PTP") );
+}
+
+
+OFBool IODSynchronizationModule::isValidSynchronizationTrigger(const OFString& value)
+{
+  return ( (value == "SOURCE") || (value == "EXTERNAL") || (value == "PASSTHRU") || (value == "NO TRIGGER") );
+}
+
diff --git a/dcmiod/libsrc/modusfor.cc b/dcmiod/libsrc/modusfor.cc
index 231cb61..c124ca3 100644
--- a/dcmiod/libsrc/modusfor.cc
+++ b/dcmiod/libsrc/modusfor.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -70,8 +70,7 @@ OFString IODUSFoRModule::getName() const
 
 IODUSFoRModule::~IODUSFoRModule()
 {
-  // clear rules from rule set
-  clearData();
+  // Nothing to do
 }
 
 
@@ -175,7 +174,7 @@ OFCondition IODUSFoRModule::setApexPosition(const Float64& xValue,
                                             const OFBool)
 {
 
-  DcmElement *elem = newDicomElement(DCM_ApexPosition);
+  DcmElement *elem = DcmItem::newDicomElement(DCM_ApexPosition);
 
 
   OFCondition result = elem->putFloat64(xValue, 0);
@@ -209,7 +208,7 @@ OFCondition IODUSFoRModule::setVolumetoTransducerMappingMatrix(const OFVector< F
   OFCondition result;
 
   DcmElement* elem = NULL;
-  result = newDicomElement(elem, DCM_VolumeToTransducerMappingMatrix);
+  result = DcmItem::newDicomElement(elem, DCM_VolumeToTransducerMappingMatrix);
   if (result.good())
   {
     for (size_t n = 0; result.good() && n < vm; n++)
@@ -258,7 +257,7 @@ OFCondition IODUSFoRModule::setVolumeToTableMappingMatrix(const OFVector< Float6
   OFCondition result;
 
   DcmElement* elem = NULL;
-  result = newDicomElement(elem, DCM_VolumeToTableMappingMatrix);
+  result = DcmItem::newDicomElement(elem, DCM_VolumeToTableMappingMatrix);
   if (result.good())
   {
     for (size_t n = 0; result.good() && (n < vm); n++)
diff --git a/dcmiod/tests/CMakeLists.txt b/dcmiod/tests/CMakeLists.txt
index 3a04022..1ebae73 100644
--- a/dcmiod/tests/CMakeLists.txt
+++ b/dcmiod/tests/CMakeLists.txt
@@ -1,5 +1,5 @@
 # declare executables
-DCMTK_ADD_EXECUTABLE(dcmiod_tests tests tcielabutil)
+DCMTK_ADD_EXECUTABLE(dcmiod_tests tests tcielabutil timagepixel)
 
 # make sure executables are linked to the corresponding libraries
 DCMTK_TARGET_LINK_MODULES(dcmiod_tests dcmiod dcmdata oflog ofstd)
diff --git a/dcmiod/tests/Makefile.dep b/dcmiod/tests/Makefile.dep
index 7ef8406..facbdd6 100644
--- a/dcmiod/tests/Makefile.dep
+++ b/dcmiod/tests/Makefile.dep
@@ -88,3 +88,148 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/logmacro.h \
  ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h
+timagepixel.o: timagepixel.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/oftest.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../include/dcmtk/dcmiod/iodimage.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvriant.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/variant.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/helpers.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/cnvrsn.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/vsprfw.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../include/dcmtk/dcmiod/iodcommn.h ../include/dcmtk/dcmiod/iodrules.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../include/dcmtk/dcmiod/iodtypes.h ../include/dcmtk/dcmiod/ioddef.h \
+ ../include/dcmtk/dcmiod/cielabutil.h \
+ ../include/dcmtk/dcmiod/modpatient.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmiod/modbase.h \
+ ../include/dcmtk/dcmiod/modpatientstudy.h \
+ ../../ofstd/include/dcmtk/ofstd/ofoption.h \
+ ../include/dcmtk/dcmiod/modgeneralstudy.h \
+ ../include/dcmtk/dcmiod/iodmacro.h \
+ ../include/dcmtk/dcmiod/modequipment.h \
+ ../include/dcmtk/dcmiod/modgeneralseries.h \
+ ../include/dcmtk/dcmiod/modfor.h ../include/dcmtk/dcmiod/modsopcommon.h \
+ ../include/dcmtk/dcmiod/modcommoninstanceref.h \
+ ../include/dcmtk/dcmiod/iodreferences.h \
+ ../include/dcmtk/dcmiod/modgeneralimage.h \
+ ../include/dcmtk/dcmiod/modimagepixelvariant.h \
+ ../include/dcmtk/dcmiod/modimagepixelbase.h \
+ ../include/dcmtk/dcmiod/modimagepixel.h \
+ ../include/dcmtk/dcmiod/modfloatingpointimagepixel.h
diff --git a/dcmiod/tests/Makefile.in b/dcmiod/tests/Makefile.in
index 9aab2c8..ced9417 100644
--- a/dcmiod/tests/Makefile.in
+++ b/dcmiod/tests/Makefile.in
@@ -21,9 +21,9 @@ LOCALINCLUDES = -I$(dcmioddir)/include -I$(dcmdatadir)/include -I$(oflogdir)/inc
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(dcmioddir)/libsrc -L$(dcmdatadir)/libsrc \
 	-L$(oflogdir)/libsrc -L$(ofstddir)/libsrc
 LOCALLIBS = -ldcmiod -ldcmdata -loflog -lofstd \
-	$(TIFFLIBS) $(PNGLIBS) $(ZLIBLIBS) $(ICONVLIBS)
+	$(TIFFLIBS) $(PNGLIBS) $(ZLIBLIBS) $(CHARCONVLIBS)
 
-test_objs = tests.o tcielabutil.o
+test_objs = tests.o tcielabutil.o timagepixel.o
 objs = tests.o $(test_objs)
 progs = tests
 
@@ -34,7 +34,7 @@ tclabutil: tclabutil.o
 	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $@.o $(LOCALLIBS) $(MATHLIBS) $(LIBS)
 
 tests: $(test_objs)
-	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $(test_objs) $(LOCALLIBS) $(ICONVLIBS) $(LIBS)
+	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $(test_objs) $(LOCALLIBS) $(LIBS)
 
 install: all
 
diff --git a/dcmiod/tests/tcielabutil.cc b/dcmiod/tests/tcielabutil.cc
index a4502f5..9fd78fd 100644
--- a/dcmiod/tests/tcielabutil.cc
+++ b/dcmiod/tests/tcielabutil.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2016, OFFIS e.V.
+ *  Copyright (C) 2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -82,7 +82,7 @@ OFTEST(dcmiod_tcielabutil)
   srand (OFstatic_cast(unsigned int, time (NULL)));
 
   // We do 1000 runs
-  for (size_t run = 0; run < 1000; run++)
+  for (size_t numRun = 0; numRun< 1000; numRun++)
   {
     // i1, i2, i3: Input for conversion
     // r1, r2, r3: Results of conversion
diff --git a/dcmiod/tests/tests.cc b/dcmiod/tests/tests.cc
index 3f583bf..c1528a9 100644
--- a/dcmiod/tests/tests.cc
+++ b/dcmiod/tests/tests.cc
@@ -23,4 +23,5 @@
 #include "dcmtk/ofstd/oftest.h"
 
 OFTEST_REGISTER(dcmiod_tcielabutil);
+OFTEST_REGISTER(dcmiod_imagepixel);
 OFTEST_MAIN("dcmiod")
diff --git a/dcmiod/tests/timagepixel.cc b/dcmiod/tests/timagepixel.cc
new file mode 100644
index 0000000..2c4ed75
--- /dev/null
+++ b/dcmiod/tests/timagepixel.cc
@@ -0,0 +1,34 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmiod
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: Tests for dcmiod's color conversion functionalities
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/dcmiod/iodimage.h"
+#include "dcmtk/dcmiod/modimagepixel.h"
+#include "dcmtk/dcmiod/modfloatingpointimagepixel.h"
+
+OFTEST(dcmiod_imagepixel)
+{
+  DcmIODImage<IODImagePixelModule<Uint8>,IODFloatingPointImagePixelModule> image1;
+  DcmIODImage<IODImagePixelModule<Uint8>,IODImagePixelModule<Uint8>,IODDoubleFloatingPointImagePixelModule> image2( OFin_place<IODImagePixelModule<Uint8> > );
+}
diff --git a/dcmjpeg/apps/Makefile.in b/dcmjpeg/apps/Makefile.in
index 9b509d5..36e985e 100644
--- a/dcmjpeg/apps/Makefile.in
+++ b/dcmjpeg/apps/Makefile.in
@@ -49,7 +49,7 @@ LOCALINCLUDES = $(dcmjpeginc) $(ofstdinc) $(ofloginc) $(dcmdatainc) $(dcmimagein
 LIBDIRS = -L$(top_srcdir)/libsrc $(dcmjpeglibdir) $(dcmimagelibdir) $(dcmimglelibdir) \
 	$(dcmdatalibdir) $(ofloglibdir) $(ofstdlibdir)
 LOCALLIBS = $(dcmjpeglib) $(dcmimagelib) $(dcmimglelib) $(dcmdatalib) $(ofloglib) \
-	$(ofstdlib) $(TIFFLIBS) $(PNGLIBS) $(ZLIBLIBS) $(ICONVLIBS)
+	$(ofstdlib) $(TIFFLIBS) $(PNGLIBS) $(ZLIBLIBS) $(CHARCONVLIBS)
 
 objs = dcmdjpeg.o dcmcjpeg.o dcmj2pnm.o dcmmkdir.o
 progs = dcmdjpeg dcmcjpeg dcmj2pnm dcmmkdir
diff --git a/dcmjpeg/apps/dcmdjpeg.cc b/dcmjpeg/apps/dcmdjpeg.cc
index e7489cb..da878d3 100644
--- a/dcmjpeg/apps/dcmdjpeg.cc
+++ b/dcmjpeg/apps/dcmdjpeg.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2001-2014, OFFIS e.V.
+ *  Copyright (C) 2001-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -80,6 +80,7 @@ int main(int argc, char *argv[])
   E_UIDCreation opt_uidcreation = EUC_default;
   E_PlanarConfiguration opt_planarconfig = EPC_default;
   OFBool opt_predictor6WorkaroundEnable = OFFalse;
+  OFBool opt_forceSingleFragmentPerFrame = OFFalse;
 
   OFConsoleApplication app(OFFIS_CONSOLE_APPLICATION, "Decode JPEG-compressed DICOM file", rcsid);
   OFCommandLine cmd;
@@ -120,6 +121,7 @@ int main(int argc, char *argv[])
 
     cmd.addSubGroup("workaround options for incorrect JPEG encodings:");
       cmd.addOption("--workaround-pred6",    "+w6",    "enable workaround for JPEG lossless images\nwith overflow in predictor 6");
+      cmd.addOption("--workaround-incpl",    "+wi",    "enable workaround for incomplete JPEG data");
 
   cmd.addGroup("output options:");
     cmd.addSubGroup("output file format:");
@@ -194,6 +196,7 @@ int main(int argc, char *argv[])
       cmd.endOptionBlock();
 
       if (cmd.findOption("--workaround-pred6")) opt_predictor6WorkaroundEnable = OFTrue;
+      if (cmd.findOption("--workaround-incpl")) opt_forceSingleFragmentPerFrame = OFTrue;
 
       cmd.beginOptionBlock();
       if (cmd.findOption("--read-file"))
@@ -272,7 +275,8 @@ int main(int argc, char *argv[])
       opt_decompCSconversion,
       opt_uidcreation,
       opt_planarconfig,
-      opt_predictor6WorkaroundEnable);
+      opt_predictor6WorkaroundEnable,
+      opt_forceSingleFragmentPerFrame);
 
     /* make sure data dictionary is loaded */
     if (!dcmDataDict.isDictionaryLoaded())
diff --git a/dcmjpeg/docs/dcmdjpeg.man b/dcmjpeg/docs/dcmdjpeg.man
index d87dfa3..1634207 100644
--- a/dcmjpeg/docs/dcmdjpeg.man
+++ b/dcmjpeg/docs/dcmdjpeg.man
@@ -167,6 +167,15 @@ workaround options for incorrect JPEG encodings:
   # This flag enables a correct decompression of such faulty images, but
   # at the same time will cause an incorrect decompression of correctly
   # compressed images. Use with care.
+
+  +wi   --workaround-incpl
+          enable workaround for incomplete JPEG data
+
+  # This option causes dcmjpeg to ignore incomplete JPEG data
+  # at the end of a compressed fragment and to start decompressing
+  # the next frame from the next fragment (if any). This permits
+  # images with incomplete JPEG data to be decoded.
+
 \endverbatim
 
 \subsection output_options output options
@@ -323,6 +332,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2001-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2001-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmjpeg/include/dcmtk/dcmjpeg/djcparam.h b/dcmjpeg/include/dcmtk/dcmjpeg/djcparam.h
index d3f3bcc..f9a5e2a 100644
--- a/dcmjpeg/include/dcmtk/dcmjpeg/djcparam.h
+++ b/dcmjpeg/include/dcmtk/dcmjpeg/djcparam.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2014, OFFIS e.V.
+ *  Copyright (C) 1997-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -40,6 +40,8 @@ public:
    *    decompressed color images should be handled
    *  @param predictor6WorkaroundEnable enable workaround for buggy lossless compressed images with
    *    overflow in predictor 6 for images with 16 bits/pixel
+   *  @param pForceSingleFragmentPerFrame while decompressing a multiframe image,
+   *    assume one fragment per frame even if the JPEG data for some frame is incomplete
    *  @param pOptimizeHuffman perform huffman table optimization for 8 bits/pixel compression?
    *  @param pSmoothingFactor smoothing factor for image compression, 0..100
    *  @param pForcedBitDepth forced bit depth for image compression, 0 (auto) or 8/12/16
@@ -71,6 +73,7 @@ public:
     E_UIDCreation pCreateSOPInstanceUID,
     E_PlanarConfiguration pPlanarConfiguration,
     OFBool predictor6WorkaroundEnable = OFFalse,
+    OFBool pForceSingleFragmentPerFrame = OFFalse,
     OFBool pOptimizeHuffman = OFFalse,
     int pSmoothingFactor = 0,
     int pForcedBitDepth = 0,
@@ -301,6 +304,14 @@ public:
     return predictor6WorkaroundEnabled_;
   }
 
+  /** returns flag indicating whether one fragment per frame should be enforced while decoding
+   *  @return flag indicating whether one fragment per frame should be enforced while decoding
+   */
+  OFBool getForceSingleFragmentPerFrame() const
+  {
+    return forceSingleFragmentPerFrame;
+  }
+
 private:
 
   /// private undefined copy assignment operator
@@ -397,6 +408,11 @@ private:
   /// flag indicating that the workaround for buggy JPEG lossless images with incorrect predictor 6 is enabled
   OFBool predictor6WorkaroundEnabled_;
 
+  /** flag indicating that while decompressing a multiframe image one fragment per frame
+   *  should be assumed even if the JPEG data for some frame is incomplete
+   */
+  OFBool forceSingleFragmentPerFrame;
+
 };
 
 
diff --git a/dcmjpeg/include/dcmtk/dcmjpeg/djdecode.h b/dcmjpeg/include/dcmtk/dcmjpeg/djdecode.h
index d626b9d..11abc6d 100644
--- a/dcmjpeg/include/dcmtk/dcmjpeg/djdecode.h
+++ b/dcmjpeg/include/dcmtk/dcmjpeg/djdecode.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2011, OFFIS e.V.
+ *  Copyright (C) 1997-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -48,12 +48,15 @@ public:
    *    of color images should be encoded upon decompression.
    *  @param predictor6WorkaroundEnable enable workaround for buggy lossless compressed images with
    *           overflow in predictor 6 for images with 16 bits/pixel
+   *  @param pForceSingleFragmentPerFrame while decompressing a multiframe image,
+   *    assume one fragment per frame even if the JPEG data for some frame is incomplete
    */
   static void registerCodecs(
     E_DecompressionColorSpaceConversion pDecompressionCSConversion = EDC_photometricInterpretation,
     E_UIDCreation pCreateSOPInstanceUID = EUC_default,
     E_PlanarConfiguration pPlanarConfiguration = EPC_default,
-    OFBool predictor6WorkaroundEnable = OFFalse);
+    OFBool predictor6WorkaroundEnable = OFFalse,
+    OFBool pForceSingleFragmentPerFrame = OFFalse);
 
   /** deregisters decoders.
    *  Attention: Must not be called while other threads might still use
diff --git a/dcmjpeg/libijg12/jdmarker.c b/dcmjpeg/libijg12/jdmarker.c
index b5d29c7..3045f5f 100644
--- a/dcmjpeg/libijg12/jdmarker.c
+++ b/dcmjpeg/libijg12/jdmarker.c
@@ -376,29 +376,29 @@ get_dac (j_decompress_ptr cinfo)
 /* Process a DAC marker */
 {
   IJG_INT32 length;
-  int index, val;
+  int idx, val;
   INPUT_VARS(cinfo);
 
   INPUT_2BYTES(cinfo, length, return FALSE);
   length -= 2;
   
   while (length > 0) {
-    INPUT_BYTE(cinfo, index, return FALSE);
+    INPUT_BYTE(cinfo, idx, return FALSE);
     INPUT_BYTE(cinfo, val, return FALSE);
 
     length -= 2;
 
-    TRACEMS2(cinfo, 1, JTRC_DAC, index, val);
+    TRACEMS2(cinfo, 1, JTRC_DAC, idx, val);
 
-    if (index < 0 || index >= (2*NUM_ARITH_TBLS))
-      ERREXIT1(cinfo, JERR_DAC_INDEX, index);
+    if (idx < 0 || idx >= (2*NUM_ARITH_TBLS))
+      ERREXIT1(cinfo, JERR_DAC_INDEX, idx);
 
-    if (index >= NUM_ARITH_TBLS) { /* define AC table */
-      cinfo->arith_ac_K[index-NUM_ARITH_TBLS] = (UINT8) val;
+    if (idx >= NUM_ARITH_TBLS) { /* define AC table */
+      cinfo->arith_ac_K[idx-NUM_ARITH_TBLS] = (UINT8) val;
     } else {            /* define DC table */
-      cinfo->arith_dc_L[index] = (UINT8) (val & 0x0F);
-      cinfo->arith_dc_U[index] = (UINT8) (val >> 4);
-      if (cinfo->arith_dc_L[index] > cinfo->arith_dc_U[index])
+      cinfo->arith_dc_L[idx] = (UINT8) (val & 0x0F);
+      cinfo->arith_dc_U[idx] = (UINT8) (val >> 4);
+      if (cinfo->arith_dc_L[idx] > cinfo->arith_dc_U[idx])
     ERREXIT1(cinfo, JERR_DAC_VALUE, val);
     }
   }
diff --git a/dcmjpeg/libijg12/jpeglib12.h b/dcmjpeg/libijg12/jpeglib12.h
index 0a0baa7..040cef4 100644
--- a/dcmjpeg/libijg12/jpeglib12.h
+++ b/dcmjpeg/libijg12/jpeglib12.h
@@ -422,6 +422,11 @@ struct jpeg_compress_struct {
   struct jpeg_downsampler * downsample;
   jpeg_scan_info * script_space; /* workspace for jpeg_simple_progression */
   int script_space_size;
+
+  /* force the use of an extended sequential SOF1 marker even when a
+   * SOF0 marker could be used, to comply with DICOM CP 1447.
+   * This is only needed for 8 bits/sample. */
+  boolean force_extended_sequential_marker;
 };
 
 
@@ -646,6 +651,9 @@ struct jpeg_decompress_struct {
   struct jpeg_upsampler * upsample;
   struct jpeg_color_deconverter * cconvert;
   struct jpeg_color_quantizer * cquantize;
+
+  /* Options that enable or disable various workarounds */
+  unsigned int workaround_options;
 };
 
 
diff --git a/dcmjpeg/libijg16/jpeglib16.h b/dcmjpeg/libijg16/jpeglib16.h
index 7c6c719..3ebb55a 100644
--- a/dcmjpeg/libijg16/jpeglib16.h
+++ b/dcmjpeg/libijg16/jpeglib16.h
@@ -422,6 +422,11 @@ struct jpeg_compress_struct {
   struct jpeg_downsampler * downsample;
   jpeg_scan_info * script_space; /* workspace for jpeg_simple_progression */
   int script_space_size;
+
+  /* force the use of an extended sequential SOF1 marker even when a
+   * SOF0 marker could be used, to comply with DICOM CP 1447.
+   * This is only needed for 8 bits/sample. */
+  boolean force_extended_sequential_marker;
 };
 
 
diff --git a/dcmjpeg/libijg8/jcapimin.c b/dcmjpeg/libijg8/jcapimin.c
index 96c9353..6076289 100644
--- a/dcmjpeg/libijg8/jcapimin.c
+++ b/dcmjpeg/libijg8/jcapimin.c
@@ -75,6 +75,8 @@ jpeg_CreateCompress (j_compress_ptr cinfo, int version, size_t structsize)
 
   cinfo->input_gamma = 1.0;	/* in case application forgets */
 
+  cinfo->force_extended_sequential_marker = FALSE;
+
   /* OK, I'm ready */
   cinfo->global_state = CSTATE_START;
 }
diff --git a/dcmjpeg/libijg8/jcmarker.c b/dcmjpeg/libijg8/jcmarker.c
index 857f22b..05ee5f0 100644
--- a/dcmjpeg/libijg8/jcmarker.c
+++ b/dcmjpeg/libijg8/jcmarker.c
@@ -546,7 +546,7 @@ write_frame_header (j_compress_ptr cinfo)
       emit_sof(cinfo, M_SOF2);	/* SOF code for progressive Huffman */
     else if (cinfo->process == JPROC_LOSSLESS)
       emit_sof(cinfo, M_SOF3);	/* SOF code for lossless Huffman */
-    else if (is_baseline)
+    else if (is_baseline && (!cinfo->force_extended_sequential_marker))
       emit_sof(cinfo, M_SOF0);	/* SOF code for baseline implementation */
     else
       emit_sof(cinfo, M_SOF1);	/* SOF code for non-baseline Huffman file */
diff --git a/dcmjpeg/libijg8/jpeglib8.h b/dcmjpeg/libijg8/jpeglib8.h
index ec8595c..3cb2bf1 100644
--- a/dcmjpeg/libijg8/jpeglib8.h
+++ b/dcmjpeg/libijg8/jpeglib8.h
@@ -422,6 +422,11 @@ struct jpeg_compress_struct {
   struct jpeg_downsampler * downsample;
   jpeg_scan_info * script_space; /* workspace for jpeg_simple_progression */
   int script_space_size;
+
+  /* force the use of an extended sequential SOF1 marker even when a
+   * SOF0 marker could be used, to comply with DICOM CP 1447.
+   * This is only needed for 8 bits/sample. */
+  boolean force_extended_sequential_marker;
 };
 
 
@@ -646,6 +651,9 @@ struct jpeg_decompress_struct {
   struct jpeg_upsampler * upsample;
   struct jpeg_color_deconverter * cconvert;
   struct jpeg_color_quantizer * cquantize;
+
+  /* Options that enable or disable various workarounds */
+  unsigned int workaround_options;
 };
 
 
diff --git a/dcmjpeg/libsrc/ddpiimpl.cc b/dcmjpeg/libsrc/ddpiimpl.cc
index 8935e3f..7bd35ef 100644
--- a/dcmjpeg/libsrc/ddpiimpl.cc
+++ b/dcmjpeg/libsrc/ddpiimpl.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -79,7 +79,7 @@ OFBool DicomDirImageImplementation::scaleImage(DcmItem *dataset,
     /* check parameters (at least the pointers) */
     if ((dataset != NULL) && (pixel != NULL) && (frame > 0))
     {
-        size_t flags = CIF_UsePartialAccessToPixelData | CIF_NeverAccessEmbeddedOverlays;
+        unsigned long flags = CIF_UsePartialAccessToPixelData | CIF_NeverAccessEmbeddedOverlays;
         if (decompressAll)
             flags |= CIF_DecompressCompletePixelData;
         /* open referenced image */
diff --git a/dcmjpeg/libsrc/djcodecd.cc b/dcmjpeg/libsrc/djcodecd.cc
index b5aad2e..125b96b 100644
--- a/dcmjpeg/libsrc/djcodecd.cc
+++ b/dcmjpeg/libsrc/djcodecd.cc
@@ -163,6 +163,7 @@ OFCondition DJCodecDecoder::decode(
                 if (result.good())
                 {
                   Uint8 *imageData8 = OFreinterpret_cast(Uint8*, imageData16);
+                  OFBool forceSingleFragmentPerFrame = djcp->getForceSingleFragmentPerFrame();
 
                   while ((currentFrame < imageFrames)&&(result.good()))
                   {
@@ -180,6 +181,15 @@ OFCondition DJCodecDecoder::decode(
                           if (result.good())
                           {
                             result = jpeg->decode(jpegData, fragmentLength, imageData8, OFstatic_cast(Uint32, frameSize), isSigned);
+
+                            // check if we should enforce "one fragment per frame" while
+                            // decompressing a multi-frame image even if stream suspension occurs
+                            if ((EJ_Suspension == result) && forceSingleFragmentPerFrame)
+                            {
+                              // frame is incomplete. Nevertheless skip to next frame.
+                              // This permits decompression of faulty multi-frame images.
+                              result = EC_Normal;
+                            }
                           }
                         }
                       }
diff --git a/dcmjpeg/libsrc/djcodece.cc b/dcmjpeg/libsrc/djcodece.cc
index 43461aa..d3d2d0c 100644
--- a/dcmjpeg/libsrc/djcodece.cc
+++ b/dcmjpeg/libsrc/djcodece.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2001-2015, OFFIS e.V.
+ *  Copyright (C) 2001-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -515,7 +515,7 @@ OFCondition DJCodecEncoder::encodeTrueLossless(
     }
 
     /* Set and check photometric interpretation (up to now: EPI_RGB)
-     * Only photometric interpretations, that are explicetly "supported" by the
+     * Only photometric interpretations, that are explicitly "supported" by the
      * IJG lib are set. For all others "unknown" is set. Some are even rejected here.
      */
     if (photometricInterpretation == "MONOCHROME1")
@@ -929,7 +929,7 @@ OFCondition DJCodecEncoder::encodeMonochromeImage(
   if (result.good()) result = adjustOverlays(dataset, dimage);
 
   // VOI transformations should only be applied on the dataset level, not
-  // in nested items such as the Icon Image Sequence where we don't exect
+  // in nested items such as the Icon Image Sequence where we don't expect
   // a VOI window or LUT to be present
   size_t windowType = 0;
   if (dataset->ident() == EVR_dataset)
@@ -958,7 +958,7 @@ OFCondition DJCodecEncoder::encodeMonochromeImage(
           if (classUID && ! cp->getConvertToSC())
           {
             // these three SOP classes use the X-Ray Image Module in which the meaning
-            // of the Modality LUT transformation is "inversersed" and, therefore,
+            // of the Modality LUT transformation is "inversed" and, therefore,
             // needs special handling.  This is not an issue if we're converting to
             // secondary capture anyway.
             if ((0 == strcmp(classUID, UID_XRayAngiographicImageStorage)) ||
@@ -1415,7 +1415,7 @@ OFCondition DJCodecEncoder::togglePlanarConfiguration8(
   const Uint16 samplesPerPixel,
   const Uint16 oldPlanarConfig)
 {
-  if ( (pixelData == NULL) )
+  if (pixelData == NULL)
     return EC_IllegalParameter;
   // allocate target buffer
   Uint8* px8 = new Uint8[numValues];
@@ -1451,7 +1451,7 @@ OFCondition DJCodecEncoder::togglePlanarConfiguration16(
   const Uint16 samplesPerPixel,
   const Uint16 oldPlanarConfig)
 {
-  if ( (pixelData == NULL) )
+  if (pixelData == NULL)
     return EC_IllegalParameter;
   // allocate target buffer
   Uint16* px16 = new Uint16[numValues];
diff --git a/dcmjpeg/libsrc/djcparam.cc b/dcmjpeg/libsrc/djcparam.cc
index 37bc442..9b04db4 100644
--- a/dcmjpeg/libsrc/djcparam.cc
+++ b/dcmjpeg/libsrc/djcparam.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2014, OFFIS e.V.
+ *  Copyright (C) 1997-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,6 +28,7 @@ DJCodecParameter::DJCodecParameter(
     E_UIDCreation pCreateSOPInstanceUID,
     E_PlanarConfiguration pPlanarConfiguration,
     OFBool predictor6WorkaroundEnable,
+    OFBool pForceSingleFragmentPerFrame,
     OFBool pOptimizeHuffman,
     int pSmoothingFactor,
     int pForcedBitDepth,
@@ -76,6 +77,7 @@ DJCodecParameter::DJCodecParameter(
 , acrNemaCompatibility(pAcrNemaCompatibility)
 , trueLosslessMode(pTrueLosslessMode)
 , predictor6WorkaroundEnabled_(predictor6WorkaroundEnable)
+, forceSingleFragmentPerFrame(pForceSingleFragmentPerFrame)
 {
 }
 
@@ -108,6 +110,7 @@ DJCodecParameter::DJCodecParameter(const DJCodecParameter& arg)
 , acrNemaCompatibility(arg.acrNemaCompatibility)
 , trueLosslessMode(arg.trueLosslessMode)
 , predictor6WorkaroundEnabled_(arg.predictor6WorkaroundEnabled_)
+, forceSingleFragmentPerFrame(arg.forceSingleFragmentPerFrame)
 {
 }
 
diff --git a/dcmjpeg/libsrc/djdecode.cc b/dcmjpeg/libsrc/djdecode.cc
index 80ae793..f4276ad 100644
--- a/dcmjpeg/libsrc/djdecode.cc
+++ b/dcmjpeg/libsrc/djdecode.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2010, OFFIS e.V.
+ *  Copyright (C) 1997-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -23,7 +23,7 @@
 #include "dcmtk/dcmjpeg/djdecode.h"
 
 #include "dcmtk/dcmdata/dccodec.h"  /* for DcmCodecStruct */
-#include "dcmtk/dcmjpeg/djdecbas.h" 
+#include "dcmtk/dcmjpeg/djdecbas.h"
 #include "dcmtk/dcmjpeg/djdecext.h"
 #include "dcmtk/dcmjpeg/djdecsps.h"
 #include "dcmtk/dcmjpeg/djdecpro.h"
@@ -45,16 +45,19 @@ void DJDecoderRegistration::registerCodecs(
     E_DecompressionColorSpaceConversion pDecompressionCSConversion,
     E_UIDCreation pCreateSOPInstanceUID,
     E_PlanarConfiguration pPlanarConfiguration,
-    OFBool predictor6WorkaroundEnable)
+    OFBool predictor6WorkaroundEnable,
+    OFBool pForceSingleFragmentPerFrame)
 {
   if (! registered)
   {
     cp = new DJCodecParameter(
       ECC_lossyYCbCr, // ignored, compression only
-      pDecompressionCSConversion, 
-      pCreateSOPInstanceUID, 
+      pDecompressionCSConversion,
+      pCreateSOPInstanceUID,
       pPlanarConfiguration,
-      predictor6WorkaroundEnable);
+      predictor6WorkaroundEnable,
+      pForceSingleFragmentPerFrame);
+
     if (cp)
     {
       // baseline JPEG
diff --git a/dcmjpeg/libsrc/djeijg8.cc b/dcmjpeg/libsrc/djeijg8.cc
index 01d228a..d61458c 100644
--- a/dcmjpeg/libsrc/djeijg8.cc
+++ b/dcmjpeg/libsrc/djeijg8.cc
@@ -395,6 +395,7 @@ OFCondition DJCompressIJG8Bit::encode(
       break;
     case EJM_sequential:
       jpeg_set_quality(&cinfo, quality, 0);
+      cinfo.force_extended_sequential_marker = TRUE;
       break;
     case EJM_spectralSelection:
       jpeg_set_quality(&cinfo, quality, 0);
diff --git a/dcmjpeg/libsrc/djencode.cc b/dcmjpeg/libsrc/djencode.cc
index ff55eb4..9dc18e4 100644
--- a/dcmjpeg/libsrc/djencode.cc
+++ b/dcmjpeg/libsrc/djencode.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2010, OFFIS e.V.
+ *  Copyright (C) 1997-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -74,6 +74,7 @@ void DJEncoderRegistration::registerCodecs(
       pCreateSOPInstanceUID,
       EPC_default, // not relevant, used for decompression only
       OFFalse, // not relevant, used for decompression only
+      OFFalse, // not relevant, used for decompression only
       pOptimizeHuffman,
       pSmoothingFactor,
       pForcedBitDepth,
diff --git a/dcmjpls/apps/Makefile.in b/dcmjpls/apps/Makefile.in
index e348ff2..5d86402 100644
--- a/dcmjpls/apps/Makefile.in
+++ b/dcmjpls/apps/Makefile.in
@@ -50,7 +50,7 @@ LOCALINCLUDES = $(dcmjplsinc) $(ofstdinc) $(ofloginc) $(dcmdatainc) $(dcmimagein
 LIBDIRS = -L$(top_srcdir)/libsrc $(dcmjplslibdir) $(libcharlslibdir) $(dcmimagelibdir) \
 	$(dcmimglelibdir) $(dcmdatalibdir) $(ofloglibdir) $(ofstdlibdir)
 LOCALLIBS = $(dcmjplslib) $(dcmimagelib) $(dcmimglelib) $(dcmdatalib) $(ofloglib) $(ofstdlib) \
-	$(libcharlslib) $(TIFFLIBS) $(PNGLIBS) $(ZLIBLIBS) $(ICONVLIBS)
+	$(libcharlslib) $(TIFFLIBS) $(PNGLIBS) $(ZLIBLIBS) $(CHARCONVLIBS)
 
 objs = dcmdjpls.o dcmcjpls.o dcml2pnm.o
 progs = dcmdjpls dcmcjpls dcml2pnm
diff --git a/dcmjpls/docs/License.txt b/dcmjpls/docs/License.txt
index 14950b7..ef5e5d7 100644
--- a/dcmjpls/docs/License.txt
+++ b/dcmjpls/docs/License.txt
@@ -2,6 +2,7 @@ The libcharls library containing the JPEG-LS encoder and decoder in this
 DCMTK module is based on the CharLS library (see http://charls.codeplex.com/).
 
 The CharLS library is available under the following license:
+
 -------------------------------------------------------------------------------
 Copyright (c) 2007-2010, Jan de Vaan
 All rights reserved.
@@ -31,3 +32,13 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -------------------------------------------------------------------------------
+
+LEGAL REMARK:
+
+Please note that Hewlett Packard claims to own patents that apply to 
+JPEG-LS. Hewlett Packard grants free licenses for conformant 
+implementations of JPEG-LS. OFFIS as the author of the DCMTK toolkit 
+has obtained such a license, but depending on your national 
+legislations companies that use DCMTK's JPEG-LS codec may need to 
+also acquire a license. Read more at http://www.hpl.hp.com/loco/ if 
+you intend to use this module for commercial purposes.
diff --git a/dcmjpls/docs/dcmjpls.dox b/dcmjpls/docs/dcmjpls.dox
index d390d0b..9db860a 100644
--- a/dcmjpls/docs/dcmjpls.dox
+++ b/dcmjpls/docs/dcmjpls.dox
@@ -27,7 +27,7 @@ This module contains the following command line tools:
 The following example shows how to compress a DICOM image file with lossless JPEG-LS:
 
 \code
-DJLSEncoderRegistration::registerCodecs(); // register JPEG codecs
+DJLSEncoderRegistration::registerCodecs(); // register JPEG-LS codecs
 DcmFileFormat fileformat;
 if (fileformat.loadFile("test.dcm").good())
 {
@@ -46,7 +46,7 @@ if (fileformat.loadFile("test.dcm").good())
     delete metaInfo->remove(DCM_MediaStorageSOPClassUID);
     delete metaInfo->remove(DCM_MediaStorageSOPInstanceUID);
 
-    // store in lossless JPEG format
+    // store in lossless JPEG-LS format
     fileformat.saveFile("test_jpls.dcm", EXS_JPEGLSLossless);
   }
 }
@@ -74,4 +74,14 @@ if (fileformat.loadFile("test_jpls.dcm").good())
 DJLSDecoderRegistration::cleanup(); // deregister JPEG-LS codecs
 \endcode
 
+\section Legal Legal Remark
+
+Please note that Hewlett Packard claims to own patents that apply to 
+JPEG-LS. Hewlett Packard grants free licenses for conformant 
+implementations of JPEG-LS. OFFIS as the author of the DCMTK toolkit 
+has obtained such a license, but depending on your national 
+legislations companies that use DCMTK's JPEG-LS codec may need to 
+also acquire a license. Read more at http://www.hpl.hp.com/loco/ if 
+you intend to use this module for commercial purposes.
+
 */
diff --git a/dcmjpls/libcharls/decodstr.h b/dcmjpls/libcharls/decodstr.h
index 772af6f..d892c5e 100644
--- a/dcmjpls/libcharls/decodstr.h
+++ b/dcmjpls/libcharls/decodstr.h
@@ -19,10 +19,13 @@ class DecoderStrategy
 public:
 	DecoderStrategy(const JlsParameters& info) :
 		  _info(info),
-	      _processLine(0),
+		  _processLine(0),
 		  _readCache(0),
 		  _validBits(0),
-		  _position(0)
+		  _position(0),
+		  _size(0),
+		  _current_offset(0),
+		  _nextFFPosition(0)
 	  {
 	  }
 
@@ -31,14 +34,15 @@ public:
 	  }
 
 	  virtual void SetPresets(const JlsCustomParameters& presets) = 0;
-	  virtual size_t DecodeScan(void* outputData, const JlsRect& size, const void* compressedData, size_t byteCount, bool bCheck) = 0;
+	  virtual size_t DecodeScan(void* outputData, const JlsRect& size, BYTE **buf, size_t *buf_size, size_t offset, bool bCheck) = 0;
 
-	  void Init(BYTE* compressedBytes, size_t byteCount)
+	  void Init(BYTE **ptr, size_t *size, size_t offset)
 	  {
 		  _validBits = 0;
 		  _readCache = 0;
-		  _position = compressedBytes;
-		  _endPosition = compressedBytes + byteCount;
+		  _position = ptr;
+		  _size = size;
+		  _current_offset = offset;
 		  _nextFFPosition = FindNextFF();
 		  MakeValid();
 	  }
@@ -61,11 +65,11 @@ public:
 
 	  void EndScan()
 	  {
-		  if ((*_position) != 0xFF)
+		  if (current_value() != 0xFF)
 		  {
 			  ReadBit();
 
-			  if ((*_position) != 0xFF)
+			  if (current_value() != 0xFF)
 				throw JlsException(TooMuchCompressedData);
 		  }
 
@@ -77,11 +81,11 @@ public:
 	  inlinehint bool OptimizedRead()
 	  {
 		  // Easy & fast: if there is no 0xFF byte in sight, we can read without bitstuffing
-		  if (_position < _nextFFPosition - (sizeof(bufType)-1))
+		  if (_current_offset < _nextFFPosition - (sizeof(bufType)-1))
 		  {
-			  _readCache		 |= FromBigEndian<sizeof(bufType)>::Read(_position) >> _validBits;
+			  _readCache		 |= FromBigEndian<sizeof(bufType)>::Read(*_position + _current_offset) >> _validBits;
 			  int bytesToRead = (bufferbits - _validBits) >> 3;
-			  _position += bytesToRead;
+			  _current_offset += bytesToRead;
 			  _validBits += bytesToRead * 8;
 			  ASSERT(_validBits >= bufferbits - 8);
 			  return true;
@@ -104,7 +108,7 @@ public:
 
 		  do
 		  {
-			  if (_position >= _endPosition)
+			  if (_current_offset >= *_size)
 			  {
 				  if (_validBits <= 0)
 					  throw JlsException(InvalidCompressedData);
@@ -112,12 +116,12 @@ public:
 				  return;
 			  }
 
-			  bufType valnew	  = _position[0];
+			  bufType valnew	  = current_value();
 			  
 			  if (valnew == 0xFF)		
 			  {
 				  // JPEG bitstream rule: no FF may be followed by 0x80 or higher	    			 
-				 if (_position == _endPosition - 1 || (_position[1] & 0x80) != 0)
+				 if (_current_offset == *_size - 1 || ((*_position)[_current_offset + 1] & 0x80) != 0)
 				 {
 					 if (_validBits <= 0)
 					 	throw JlsException(InvalidCompressedData);
@@ -127,7 +131,7 @@ public:
 			  }
 
 			  _readCache		 |= valnew << (bufferbits - 8  - _validBits);
-			  _position   += 1;				
+			  _current_offset   += 1;
 			  _validBits		 += 8; 
 
 			  if (valnew == 0xFF)		
@@ -143,39 +147,39 @@ public:
 	  }
 
 
-	  BYTE* FindNextFF()
+	  size_t FindNextFF()
 	  {
-		  BYTE* pbyteNextFF = _position;
+		  size_t off = _current_offset;
 
-		  while (pbyteNextFF < _endPosition)
+		  while (off < *_size)
 	      {
-			  if (*pbyteNextFF == 0xFF) 
+			  if ((*_position)[off] == 0xFF)
 			  {				  
 				  break;
 			  }
-    		  pbyteNextFF++;
+		  off++;
 		  }
 		  
 
-		  return pbyteNextFF;
+		  return off;
 	  }
 
 
-	  BYTE* GetCurBytePos() const
+	  BYTE *GetCurBytePos() const
 	  {
 		  LONG  validBits = _validBits;
-		  BYTE* compressedBytes = _position;
+		  size_t off = _current_offset;
 
 		  for (;;)
 		  {
-			  LONG cbitLast = compressedBytes[-1] == 0xFF ? 7 : 8;
+			  LONG cbitLast = (*_position)[off - 1] == 0xFF ? 7 : 8;
 
 			  if (validBits < cbitLast )
-				  return compressedBytes;
+				  return (*_position) + off;
 
 			  validBits -= cbitLast; 
-			  compressedBytes--;
-		  }	
+			  off--;
+		  }
 	  }
 
 
@@ -273,12 +277,18 @@ protected:
 	OFauto_ptr<ProcessLine> _processLine;
 
 private:
+	BYTE current_value() const
+	{
+		return (*_position)[_current_offset];
+	}
+
 	// decoding
 	bufType _readCache;
 	LONG _validBits;
-	BYTE* _position;
-	BYTE* _nextFFPosition;
-	BYTE* _endPosition;
+	BYTE **_position;
+	size_t *_size;
+	size_t _current_offset;
+	size_t _nextFFPosition;
 };
 
 
diff --git a/dcmjpls/libcharls/encodstr.h b/dcmjpls/libcharls/encodstr.h
index ecc823c..786754e 100644
--- a/dcmjpls/libcharls/encodstr.h
+++ b/dcmjpls/libcharls/encodstr.h
@@ -5,7 +5,11 @@
 #ifndef CHARLS_ENCODERSTRATEGY
 #define CHARLS_ENCODERSTRATEGY
 
+#define INCLUDE_NEW
+#include "dcmtk/ofstd/ofstdinc.h"
+
 #include "dcmtk/ofstd/ofaptr.h"
+#include "dcmtk/ofstd/ofbmanip.h"
 #include "procline.h"
 #include "decodstr.h"
 
@@ -42,16 +46,17 @@ public:
 
     virtual void SetPresets(const JlsCustomParameters& presets) = 0;
     
-  virtual size_t EncodeScan(const void* pvoid, void* pvoidOut, size_t byteCount, void* pvoidCompare) = 0;
+  virtual size_t EncodeScan(const void* rawData, BYTE **ptr, size_t *size, size_t offset, bool compare) = 0;
 
 protected:
 
-  void Init(BYTE* compressedBytes, size_t byteCount)
+  void Init(BYTE **ptr, size_t *size, size_t offset)
   {
     bitpos = 32;
     valcurrent = 0;
-    _position = compressedBytes;
-      _compressedLength = byteCount;
+    _position = ptr;
+    _size = size;
+    _current_offset = offset;
   }
 
 
@@ -114,22 +119,18 @@ protected:
       if (_isFFWritten)
       {
         // JPEG-LS requirement (T.87, A.1) to detect markers: after a xFF value a single 0 bit needs to be inserted.
-        *_position = BYTE(valcurrent >> 25);
-        valcurrent = valcurrent << 7;     
-        bitpos += 7;  
+        write(BYTE(valcurrent >> 25));
+        valcurrent = valcurrent << 7;
+        bitpos += 7;
         _isFFWritten = false;
       }
       else
       {
-        *_position = BYTE(valcurrent >> 24);
+        write(BYTE(valcurrent >> 24));
+        _isFFWritten = (*_position)[_current_offset - 1] == 0xFF;
         valcurrent = valcurrent << 8;     
-        bitpos += 8;      
-        _isFFWritten = *_position == 0xFF;      
+        bitpos += 8;
       }
-      
-      _position++;
-      _compressedLength--;
-      _bytesWritten++;
 
     }
     
@@ -153,13 +154,45 @@ protected:
   JlsParameters _info;
   OFauto_ptr<ProcessLine> _processLine;
 private:
+  static BYTE *re_alloc(BYTE *old_ptr, size_t *old_size)
+  {
+    size_t new_size = *old_size * 2;
+#ifdef HAVE_STD__NOTHROW
+    BYTE *new_ptr = new(std::nothrow) BYTE[new_size];
+#else
+    BYTE *new_ptr = new BYTE[new_size];
+#endif
+    if (new_ptr == NULL) {
+      throw alloc_fail();
+    }
+
+    OFBitmanipTemplate<BYTE>::copyMem(old_ptr, new_ptr, *old_size);
+
+    delete[] old_ptr;
+
+    *old_size = new_size;
+
+    return new_ptr;
+  }
+
+  void write(BYTE value)
+  {
+    if (_current_offset == *_size) {
+      *_position = re_alloc(*_position, _size);
+    }
+
+    (*_position)[_current_offset] = value;
+    ++_current_offset;
+    ++_bytesWritten;
+  }
 
   unsigned int valcurrent;
   LONG bitpos;
-  size_t _compressedLength;
   
   // encoding
-  BYTE* _position;
+  BYTE **_position;
+  size_t *_size;
+  size_t _current_offset;
   bool _isFFWritten;
   size_t _bytesWritten;
 
diff --git a/dcmjpls/libcharls/header.cc b/dcmjpls/libcharls/header.cc
index 11c3879..f7c3dd1 100644
--- a/dcmjpls/libcharls/header.cc
+++ b/dcmjpls/libcharls/header.cc
@@ -145,9 +145,7 @@ JpegSegment* CreateMarkerStartOfFrame(Size size, LONG bitsPerSample, LONG ccomp)
 //
 JLSOutputStream::JLSOutputStream() :
 	_bCompare(false),
-	_pdata(NULL),
-	_cbyteOffset(0),
-	_cbyteLength(0),
+	_cbytesWritten(0),
 	_icompLast(0)
 {
 }
@@ -194,12 +192,14 @@ void JLSOutputStream::AddColorTransform(int i)
 //
 // Write()
 //
-size_t JLSOutputStream::Write(BYTE* pdata, size_t cbyteLength)
+size_t JLSOutputStream::Write(BYTE **ptr, size_t *size, size_t offset)
 {
-	_pdata = pdata;
-	_cbyteLength = cbyteLength;
+	_position = ptr;
+	_size = size;
+	_current_offset = offset;
 
 	WriteByte(0xFF);
+
 	WriteByte(JPEG_SOI);
 	
 	for (size_t i = 0; i < _segments.size(); ++i)
@@ -212,7 +212,7 @@ size_t JLSOutputStream::Write(BYTE* pdata, size_t cbyteLength)
 	WriteByte(0xFF);
 	WriteByte(JPEG_EOI);
 
-	return _cbyteOffset;
+	return _cbytesWritten;
 }
 
 
@@ -531,7 +531,9 @@ void JLSInputStream::ReadScan(void* pvout)
 {
 	OFauto_ptr<DecoderStrategy> qcodec = JlsCodecFactory<DecoderStrategy>().GetCodec(_info, _info.custom);
 	
-	_cbyteOffset += qcodec->DecodeScan(pvout, _rect, _pdata + _cbyteOffset, _cbyteLength - _cbyteOffset, _bCompare); 
+	BYTE **ptr = (BYTE **)&_pdata;
+	size_t *size = &_cbyteLength;
+	_cbyteOffset += qcodec->DecodeScan(pvout, _rect, ptr, size, _cbyteOffset, _bCompare);
 }
 
 
@@ -551,8 +553,8 @@ public:
 		JlsParameters info = _info;
 		info.components = _ccompScan;	
 		OFauto_ptr<EncoderStrategy> qcodec =JlsCodecFactory<EncoderStrategy>().GetCodec(info, _info.custom);
-		size_t cbyteWritten = qcodec->EncodeScan((BYTE*)_pvoidRaw, pstream->GetPos(), pstream->GetLength(), pstream->_bCompare ? pstream->GetPos() : NULL); 
-		pstream->Seek(cbyteWritten);
+		size_t cbyteWritten = qcodec->EncodeScan((BYTE*)_pvoidRaw, pstream->get_pos(), pstream->get_size(), pstream->get_offset(), pstream->_bCompare);
+		pstream->seek(cbyteWritten);
 	}
 
 
diff --git a/dcmjpls/libcharls/intrface.cc b/dcmjpls/libcharls/intrface.cc
index 91f75f1..be79740 100644
--- a/dcmjpls/libcharls/intrface.cc
+++ b/dcmjpls/libcharls/intrface.cc
@@ -37,13 +37,37 @@ JLS_ERROR CheckInput(const void* compressedData, size_t compressedLength, const
 	return CheckParameterCoherent(pparams);
 }
 
+JLS_ERROR CheckInput(const void* uncompressedData, size_t uncompressedLength, const JlsParameters* pparams)
+{
+	if (pparams == NULL)
+		return InvalidJlsParameters;
+
+	if (uncompressedData == NULL)
+		return InvalidJlsParameters;
+
+	if (pparams->width < 1 || pparams->width > 65535)
+		return ParameterValueNotSupported;
+
+	if (pparams->height < 1 || pparams->height > 65535)
+		return ParameterValueNotSupported;
+
+	int bytesperline = pparams->bytesperline < 0 ? -pparams->bytesperline : pparams->bytesperline;
+
+	if (uncompressedLength < size_t(bytesperline * pparams->height))
+		return InvalidJlsParameters;
+
+	return CheckParameterCoherent(pparams);
+}
+
 
 
 extern "C"
 {
 
-CHARLS_IMEXPORT(JLS_ERROR) JpegLsEncode(void* compressedData, size_t compressedLength, size_t* pcbyteWritten, const void* uncompressedData, size_t uncompressedLength, struct JlsParameters* pparams)
+CHARLS_IMEXPORT(JLS_ERROR) JpegLsEncode(BYTE **buf, size_t *buf_size, size_t* pcbyteWritten, const void* uncompressedData, size_t uncompressedLength, struct JlsParameters* pparams)
 {
+	*pcbyteWritten = 0;
+
 	JlsParameters info = *pparams;
 	if(info.bytesperline == 0)
 	{
@@ -54,7 +78,7 @@ CHARLS_IMEXPORT(JLS_ERROR) JpegLsEncode(void* compressedData, size_t compressedL
 		}
 	}
 	
-	JLS_ERROR parameterError = CheckInput(compressedData, compressedLength, uncompressedData, uncompressedLength, &info);
+	JLS_ERROR parameterError = CheckInput(uncompressedData, uncompressedLength, &info);
 
 	if (parameterError != OK)
 		return parameterError;
@@ -86,9 +110,15 @@ CHARLS_IMEXPORT(JLS_ERROR) JpegLsEncode(void* compressedData, size_t compressedL
 		stream.AddScan(uncompressedData, &info);
 	}
 
-	
-	stream.Write((BYTE*)compressedData, compressedLength);
-	
+	try
+	{
+		stream.Write(buf, buf_size, 0);
+	}
+	catch (const alloc_fail&)
+	{
+		return MemoryAllocationFailure;
+	}
+
 	*pcbyteWritten = stream.GetBytesWritten();	
 	return OK;
 }
@@ -169,14 +199,23 @@ CHARLS_IMEXPORT(JLS_ERROR) JpegLsVerifyEncode(const void* uncompressedData, size
 	{
 		stream.AddScan(uncompressedData, &info);
 	}
-
-	OFVector<BYTE> rgbyteCompressed(compressedLength + 16);
-	
-	memcpy(&rgbyteCompressed[0], compressedData, compressedLength);
 	
+	size_t buf_size = compressedLength + 16;
+	BYTE *buf = new BYTE[buf_size];
+
+	memcpy(buf, compressedData, compressedLength);
+
 	stream.EnableCompare(true);
-	stream.Write(&rgbyteCompressed[0], compressedLength);
-	
+
+	try
+	{
+		stream.Write(&buf, &buf_size, 0);
+	}
+	catch (const alloc_fail&)
+	{
+		return MemoryAllocationFailure;
+	}
+
 	return OK;
 }
 
diff --git a/dcmjpls/libcharls/intrface.h b/dcmjpls/libcharls/intrface.h
index 5272aff..c8fdaa9 100644
--- a/dcmjpls/libcharls/intrface.h
+++ b/dcmjpls/libcharls/intrface.h
@@ -25,8 +25,8 @@
 extern "C" 
 {
 #endif
-  CHARLS_IMEXPORT(enum JLS_ERROR) JpegLsEncode(void* compressedData, size_t compressedLength, size_t* pcbyteWritten, 
-	    const void* uncompressedData, size_t uncompressedLength, struct JlsParameters* pparams);
+  CHARLS_IMEXPORT(enum JLS_ERROR) JpegLsEncode(BYTE **ptr, size_t *size, size_t* pcbyteWritten,
+		const void* uncompressedData, size_t uncompressedLength, struct JlsParameters* pparams);
 
   CHARLS_IMEXPORT(enum JLS_ERROR) JpegLsDecode(void* uncompressedData, size_t uncompressedLength, 
 		const void* compressedData, size_t compressedLength, 
diff --git a/dcmjpls/libcharls/pubtypes.h b/dcmjpls/libcharls/pubtypes.h
index 612738c..9e2fd48 100644
--- a/dcmjpls/libcharls/pubtypes.h
+++ b/dcmjpls/libcharls/pubtypes.h
@@ -17,7 +17,8 @@ enum JLS_ERROR
 	TooMuchCompressedData,
 	ImageTypeNotSupported,
 	UnsupportedBitDepthForTransform,
-	UnsupportedColorTransform
+	UnsupportedColorTransform,
+	MemoryAllocationFailure
 };
 
 
diff --git a/dcmjpls/libcharls/scan.h b/dcmjpls/libcharls/scan.h
index 589e299..5cd2515 100644
--- a/dcmjpls/libcharls/scan.h
+++ b/dcmjpls/libcharls/scan.h
@@ -262,15 +262,15 @@ public:
 
 	  void DoLine(SAMPLE* pdummy);
 	  void DoLine(Triplet<SAMPLE>* pdummy);
-	  void DoScan(BYTE* compressedBytes, size_t compressedLength);         
+	  void DoScan(BYTE **ptr, size_t *size, size_t offset);
 
 public:
 	ProcessLine* CreateProcess(void* pvoidOut);
 	void InitDefault();
 	void InitParams(LONG t1, LONG t2, LONG t3, LONG nReset);
 
-	size_t  EncodeScan(const void* rawData, void* pvoidOut, size_t compressedLength, void* pvoidCompare);
-	size_t  DecodeScan(void* rawData, const JlsRect& size, const void* compressedData, size_t compressedLength, bool bCompare);
+	size_t  EncodeScan(const void* rawData, BYTE **ptr, size_t *size, size_t offset, bool compare);
+	size_t  DecodeScan(void* rawData, const JlsRect& size, BYTE **buf, size_t *buf_size, size_t offset, bool bCompare);
 
 protected:
 	// codec parameters 
@@ -698,11 +698,11 @@ void JlsCodec<TRAITS,STRATEGY>::DoLine(Triplet<SAMPLE>*)
 // In ILV_NONE mode, DoScan is called for each component 
 
 template<class TRAITS, class STRATEGY>
-void JlsCodec<TRAITS,STRATEGY>::DoScan(BYTE* compressedBytes, size_t compressedLength)
+void JlsCodec<TRAITS,STRATEGY>::DoScan(BYTE **ptr, size_t *size, size_t offset)
 {		
 	_width = Info().width;
 
-	STRATEGY::Init(compressedBytes, compressedLength);
+	STRATEGY::Init(ptr, size, offset);
 
 	LONG pixelstride = _width + 4;
 	int components = Info().ilv == ILV_LINE ? Info().components : 1;
@@ -788,19 +788,17 @@ ProcessLine* JlsCodec<TRAITS,STRATEGY>::CreateProcess(void* pvoidOut)
 // Setup codec for encoding and calls DoScan
 
 template<class TRAITS, class STRATEGY>
-size_t JlsCodec<TRAITS,STRATEGY>::EncodeScan(const void* rawData, void* compressedData, size_t compressedLength, void* pvoidCompare)
+size_t JlsCodec<TRAITS,STRATEGY>::EncodeScan(const void* rawData, BYTE **ptr, size_t *size, size_t offset, bool compare)
 {
 	STRATEGY::_processLine = OFauto_ptr<ProcessLine>(CreateProcess(const_cast<void*>(rawData)));
-	
-	BYTE* compressedBytes = static_cast<BYTE*>(compressedData);
 
-	if (pvoidCompare != NULL)
+	if (compare)
 	{
-		STRATEGY::_qdecoder = OFauto_ptr<DecoderStrategy>(new JlsCodec<TRAITS,DecoderStrategy>(traits, Info()));		
-		STRATEGY::_qdecoder->Init((BYTE*)pvoidCompare, compressedLength); 
+		STRATEGY::_qdecoder = OFauto_ptr<DecoderStrategy>(new JlsCodec<TRAITS,DecoderStrategy>(traits, Info()));
+		STRATEGY::_qdecoder->Init(ptr, size, offset);
 	}
 
-	DoScan(compressedBytes, compressedLength);
+	DoScan(ptr, size, offset);
 	
 	return	STRATEGY::GetLength();
 
@@ -809,17 +807,16 @@ size_t JlsCodec<TRAITS,STRATEGY>::EncodeScan(const void* rawData, void* compress
 // Setup codec for decoding and calls DoScan
 
 template<class TRAITS, class STRATEGY>
-size_t JlsCodec<TRAITS,STRATEGY>::DecodeScan(void* rawData, const JlsRect& rect, const void* compressedData, size_t compressedLength, bool bCompare)
+size_t JlsCodec<TRAITS,STRATEGY>::DecodeScan(void* rawData, const JlsRect& rect, BYTE **ptr, size_t *size, size_t offset, bool bCompare)
 {
 	STRATEGY::_processLine = OFauto_ptr<ProcessLine>(CreateProcess(rawData));
 
-	BYTE* compressedBytes	= const_cast<BYTE*>(static_cast<const BYTE*>(compressedData));
 	_bCompare = bCompare;
 
 	BYTE rgbyte[20];
 
 	size_t readBytes = 0;
-	::memcpy(rgbyte, compressedBytes, 4);
+	::memcpy(rgbyte, *ptr + offset + readBytes, 4);
 	readBytes += 4;
 
 	size_t cbyteScanheader = rgbyte[3] - 2;
@@ -827,14 +824,14 @@ size_t JlsCodec<TRAITS,STRATEGY>::DecodeScan(void* rawData, const JlsRect& rect,
 	if (cbyteScanheader > sizeof(rgbyte))
 		throw JlsException(InvalidCompressedData);
 
-	::memcpy(rgbyte, compressedBytes, cbyteScanheader);
+	::memcpy(rgbyte, *ptr + offset + readBytes, cbyteScanheader);
 	readBytes += cbyteScanheader;
 
 	_rect = rect;
 
-	DoScan(compressedBytes + readBytes, compressedLength - readBytes);
+	DoScan(ptr, size, offset + readBytes);
 	
-	return STRATEGY::GetCurBytePos() - compressedBytes;
+	return STRATEGY::GetCurBytePos() - (*ptr + offset);
 }
 
 // Initialize the codec data structures. Depends on JPEG-LS parameters like T1-T3.
diff --git a/dcmjpls/libcharls/streams.h b/dcmjpls/libcharls/streams.h
index ea8e8ce..a2ef422 100644
--- a/dcmjpls/libcharls/streams.h
+++ b/dcmjpls/libcharls/streams.h
@@ -4,6 +4,9 @@
 #ifndef CHARLS_STREAMS
 #define CHARLS_STREAMS
 
+#define INCLUDE_NEW
+#include "dcmtk/ofstd/ofstdinc.h"
+
 #include "dcmtk/ofstd/ofvector.h"
 #include "dcmtk/ofstd/ofbmanip.h"
 #include "util.h"
@@ -48,24 +51,30 @@ public:
 	void AddLSE(const JlsCustomParameters* pcustom);
 	void AddColorTransform(int i);
 	size_t GetBytesWritten()
-		{ return _cbyteOffset; }
+		{ return _cbytesWritten; }
 
-	size_t GetLength()
-		{ return _cbyteLength - _cbyteOffset; }
+	size_t Write(BYTE **ptr, size_t *size, size_t offset);
+
+	BYTE **get_pos() { return _position; }
+
+	size_t *get_size() { return _size; }
+
+	size_t get_offset() { return _current_offset; }
 
-	size_t Write(BYTE* pdata, size_t cbyteLength);
-	
 	void EnableCompare(bool bCompare) 
 	{ _bCompare = bCompare; }
 private:
-	BYTE* GetPos() const
-		{ return _pdata + _cbyteOffset; }
-
 	void WriteByte(BYTE val)
 	{ 
-		ASSERT(!_bCompare || _pdata[_cbyteOffset] == val);
+		ASSERT(!_bCompare || (*_position)[_current_offset] == val);
 		
-		_pdata[_cbyteOffset++] = val; 
+		if (_current_offset == *_size) {
+			*_position = re_alloc(*_position, _size);
+		}
+
+		(*_position)[_current_offset++] = val;
+
+		_cbytesWritten++;
 	}
 
 	void WriteBytes(const OFVector<BYTE>& rgbyte)
@@ -82,16 +91,40 @@ private:
 		WriteByte(BYTE(val % 0x100));
 	}
 
-
-    void Seek(size_t byteCount)
-		{ _cbyteOffset += byteCount; }
+	void seek(size_t n)
+	{
+		_cbytesWritten += n;
+		_current_offset += n;
+	}
 
 	bool _bCompare;
 
 private:
-	BYTE* _pdata;
-	size_t _cbyteOffset;
-	size_t _cbyteLength;
+	static BYTE *re_alloc(BYTE *old_ptr, size_t *old_size)
+	{
+		size_t new_size = *old_size * 2;
+#ifdef HAVE_STD__NOTHROW
+		BYTE *new_ptr = new BYTE[new_size];
+#else
+		BYTE *new_ptr = new BYTE[new_size];
+#endif
+		if (new_ptr == NULL) {
+			throw alloc_fail();
+		}
+
+		OFBitmanipTemplate<BYTE>::copyMem(old_ptr, new_ptr, *old_size);
+
+		delete[] old_ptr;
+
+		*old_size = new_size;
+
+		return new_ptr;
+	}
+
+	BYTE **_position;
+	size_t *_size;
+	size_t _current_offset;
+	size_t _cbytesWritten;
 	LONG _icompLast;
 	OFVector<JpegSegment*> _segments;
 };
diff --git a/dcmjpls/libcharls/util.h b/dcmjpls/libcharls/util.h
index b2a02a4..4b39704 100644
--- a/dcmjpls/libcharls/util.h
+++ b/dcmjpls/libcharls/util.h
@@ -22,6 +22,7 @@
 #define ABS(a)              (((a) > 0) ? (a) : -(a))
 #endif
 
+class alloc_fail { };
 
 inline LONG log_2(LONG n)
 {
diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc
index 261fec8..64686ff 100644
--- a/dcmjpls/libsrc/djcodece.cc
+++ b/dcmjpls/libsrc/djcodece.cc
@@ -657,24 +657,20 @@ OFCondition DJLSEncoderBase::compressRawFrame(
 
   if (result.good())
   {
-    // We have no idea how big the compressed pixel data will be and we have no
-    // way to find out, so we just allocate a buffer large enough for the raw data
-    // plus a little more for JPEG metadata.
-    // Yes, this is way too much for just a little JPEG metadata, but some
-    // test-images showed that the buffer previously was too small. Plus, at some
-    // places charls fails to do proper bounds checking and writes behind the end
-    // of the buffer (sometimes way behind its end...).
+    // The buffer is going to be dynamically reallocated if it's too small, so it doesn't matter that
+    // much what initial size we use.
     size_t size = frameSize + 1024;
-    Uint8 *buffer = new Uint8[size];
+    BYTE *buffer = new BYTE[size];
 
-    JLS_ERROR err = JpegLsEncode(buffer, size, &size, framePointer, frameSize, &jls_params);
+    size_t bytesWritten = 0;
+
+    JLS_ERROR err = JpegLsEncode(&buffer, &size, &bytesWritten, framePointer, frameSize, &jls_params);
     result = DJLSError::convert(err);
 
     if (result.good())
     {
-      // 'size' now contains the size of the compressed data in buffer
-      compressedSize = size;
-      result = pixelSequence->storeCompressedFrame(offsetList, buffer, size, fragmentSize);
+      compressedSize = bytesWritten;
+      result = pixelSequence->storeCompressedFrame(offsetList, buffer, compressedSize, fragmentSize);
     }
 
     delete[] buffer;
@@ -1053,25 +1049,19 @@ OFCondition DJLSEncoderBase::compressCookedFrame(
     result = convertToUninterleaved(frameBuffer, buffer, samplesPerPixel, width, height, jls_params.bitspersample);
   }
 
-  // We have no idea how big the compressed pixel data will be and we have no
-  // way to find out, so we just allocate a buffer large enough for the raw data
-  // plus a little more for JPEG metadata.
-  // Yes, this is way too much for just a little JPEG metadata, but some
-  // test-images showed that the buffer previously was too small. Plus, at some
-  // places charls fails to do proper bounds checking and writes behind the end
-  // of the buffer (sometimes way behind its end...).
   size_t compressed_buffer_size = buffer_size + 1024;
-  Uint8 *compressed_buffer = new Uint8[compressed_buffer_size];
+  BYTE *compressed_buffer = new BYTE[compressed_buffer_size];
+
+  size_t bytesWritten = 0;
 
-  JLS_ERROR err = JpegLsEncode(compressed_buffer, compressed_buffer_size,
-      &compressed_buffer_size, framePointer, buffer_size, &jls_params);
+  JLS_ERROR err = JpegLsEncode(&compressed_buffer, &compressed_buffer_size, &bytesWritten, framePointer, buffer_size, &jls_params);
   result = DJLSError::convert(err);
 
   if (result.good())
   {
     // 'compressed_buffer_size' now contains the size of the compressed data in buffer
-    compressedSize = compressed_buffer_size;
-    result = pixelSequence->storeCompressedFrame(offsetList, compressed_buffer, compressed_buffer_size, fragmentSize);
+    compressedSize = bytesWritten;
+    result = pixelSequence->storeCompressedFrame(offsetList, compressed_buffer, compressedSize, fragmentSize);
   }
 
   delete[] buffer;
diff --git a/dcmnet/apps/Makefile.dep b/dcmnet/apps/Makefile.dep
index d18e931..bb92c41 100644
--- a/dcmnet/apps/Makefile.dep
+++ b/dcmnet/apps/Makefile.dep
@@ -675,7 +675,8 @@ storescp.o: storescp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
  ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
- ../include/dcmtk/dcmnet/diutil.h ../include/dcmtk/dcmnet/dcasccfg.h \
+ ../include/dcmtk/dcmnet/diutil.h ../include/dcmtk/dcmnet/dcmtrans.h \
+ ../include/dcmtk/dcmnet/dcmlayer.h ../include/dcmtk/dcmnet/dcasccfg.h \
  ../include/dcmtk/dcmnet/dccftsmp.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
@@ -694,7 +695,6 @@ storescp.o: storescp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrmz.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmtls/include/dcmtk/dcmtls/tlstrans.h \
- ../include/dcmtk/dcmnet/dcmtrans.h ../include/dcmtk/dcmnet/dcmlayer.h \
  ../../dcmtls/include/dcmtk/dcmtls/tlsdefin.h \
  ../../dcmtls/include/dcmtk/dcmtls/tlslayer.h
 storescu.o: storescu.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -759,7 +759,8 @@ storescu.o: storescu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
  ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
- ../include/dcmtk/dcmnet/diutil.h ../include/dcmtk/dcmnet/dcasccfg.h \
+ ../include/dcmtk/dcmnet/diutil.h ../include/dcmtk/dcmnet/dcmtrans.h \
+ ../include/dcmtk/dcmnet/dcmlayer.h ../include/dcmtk/dcmnet/dcasccfg.h \
  ../include/dcmtk/dcmnet/dccftsmp.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
@@ -778,7 +779,6 @@ storescu.o: storescu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrmz.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmtls/include/dcmtk/dcmtls/tlstrans.h \
- ../include/dcmtk/dcmnet/dcmtrans.h ../include/dcmtk/dcmnet/dcmlayer.h \
  ../../dcmtls/include/dcmtk/dcmtls/tlsdefin.h \
  ../../dcmtls/include/dcmtk/dcmtls/tlslayer.h
 termscu.o: termscu.cc ../../config/include/dcmtk/config/osconfig.h \
diff --git a/dcmnet/apps/Makefile.in b/dcmnet/apps/Makefile.in
index 592d308..9a80242 100644
--- a/dcmnet/apps/Makefile.in
+++ b/dcmnet/apps/Makefile.in
@@ -30,7 +30,7 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include \
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(ofstddir)/libsrc -L$(oflogdir)/libsrc \
 	-L$(dcmdatadir)/libsrc -L$(dcmtlsdir)/libsrc $(compr_libdirs)
 LOCALLIBS = -ldcmnet -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(TCPWRAPPERLIBS) \
-	$(ICONVLIBS)
+	$(CHARCONVLIBS)
 DCMTLSLIBS = -ldcmtls
 COMPR_LIBS = -ldcmjpls -lcharls -ldcmjpeg -lijg8 -lijg12 -lijg16 -ldcmimage -ldcmimgle
 
diff --git a/dcmnet/apps/echoscu.cc b/dcmnet/apps/echoscu.cc
index cd63fb7..c486db1 100644
--- a/dcmnet/apps/echoscu.cc
+++ b/dcmnet/apps/echoscu.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -89,20 +89,22 @@ static const char* transferSyntaxes[] = {
       UID_JPEGProcess29TransferSyntax,
       UID_JPEGProcess14SV1TransferSyntax,
       UID_RLELosslessTransferSyntax,
+      UID_DeflatedExplicitVRLittleEndianTransferSyntax,
       UID_JPEGLSLosslessTransferSyntax,
       UID_JPEGLSLossyTransferSyntax,
-      UID_DeflatedExplicitVRLittleEndianTransferSyntax,
       UID_JPEG2000LosslessOnlyTransferSyntax,
       UID_JPEG2000TransferSyntax,
-      UID_MPEG2MainProfileAtMainLevelTransferSyntax,
-      UID_MPEG2MainProfileAtHighLevelTransferSyntax,
       UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax,
       UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax,
+      UID_MPEG2MainProfileAtMainLevelTransferSyntax,
+      UID_MPEG2MainProfileAtHighLevelTransferSyntax,
       UID_MPEG4HighProfileLevel4_1TransferSyntax,
       UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax,
       UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax,
       UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax,
-      UID_MPEG4StereoHighProfileLevel4_2TransferSyntax
+      UID_MPEG4StereoHighProfileLevel4_2TransferSyntax,
+      UID_HEVCMainProfileLevel5_1TransferSyntax,
+      UID_HEVCMain10ProfileLevel5_1TransferSyntax
 };
 
 // ********************************************
diff --git a/dcmnet/apps/getscu.cc b/dcmnet/apps/getscu.cc
index ac0b217..1e7f85e 100644
--- a/dcmnet/apps/getscu.cc
+++ b/dcmnet/apps/getscu.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2013, OFFIS e.V.
+ *  Copyright (C) 2011-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -145,6 +145,9 @@ main(int argc, char *argv[])
       cmd.addOption("--prefer-mpeg2-high",   "+xh",     "prefer MPEG2 Main Profile @ High Level TS");
       cmd.addOption("--prefer-mpeg4",        "+xn",     "prefer MPEG4 AVC/H.264 HP / Level 4.1 TS");
       cmd.addOption("--prefer-mpeg4-bd",     "+xl",     "prefer MPEG4 AVC/H.264 BD-compatible TS");
+      cmd.addOption("--prefer-mpeg4-2-2d",   "+x2",     "prefer MPEG4 AVC/H.264 HP / Level 4.2 TS (2D)");
+      cmd.addOption("--prefer-mpeg4-2-3d",   "+x3",     "prefer MPEG4 AVC/H.264 HP / Level 4.2 TS (3D)");
+      cmd.addOption("--prefer-mpeg4-2-st",   "+xo",     "prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS");
       cmd.addOption("--prefer-rle",          "+xr",     "prefer RLE lossless TS");
 #ifdef WITH_ZLIB
       cmd.addOption("--prefer-deflated",     "+xd",     "prefer deflated explicit VR little endian TS");
@@ -248,6 +251,9 @@ main(int argc, char *argv[])
     if (cmd.findOption("--prefer-mpeg2-high")) opt_store_networkTransferSyntax = EXS_MPEG2MainProfileAtHighLevel;
     if (cmd.findOption("--prefer-mpeg4")) opt_store_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_1;
     if (cmd.findOption("--prefer-mpeg4-bd")) opt_store_networkTransferSyntax = EXS_MPEG4BDcompatibleHighProfileLevel4_1;
+    if (cmd.findOption("--prefer-mpeg4-2-2d")) opt_store_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_2_For2DVideo;
+    if (cmd.findOption("--prefer-mpeg4-2-3d")) opt_store_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_2_For3DVideo;
+    if (cmd.findOption("--prefer-mpeg4-2-st")) opt_store_networkTransferSyntax = EXS_MPEG4StereoHighProfileLevel4_2;
     if (cmd.findOption("--prefer-rle")) opt_store_networkTransferSyntax = EXS_RLELossless;
 #ifdef WITH_ZLIB
     if (cmd.findOption("--prefer-deflated")) opt_store_networkTransferSyntax = EXS_DeflatedLittleEndianExplicit;
@@ -420,7 +426,7 @@ main(int argc, char *argv[])
   /* do the real work, i.e. send C-GET requests and receive objects */
   for (Uint16 repeat = 0; repeat < opt_repeatCount; repeat++)
   {
-    Uint16 numRuns = 1;
+    size_t numRuns = 1;
     DcmFileFormat dcmff;
     DcmDataset *dset = dcmff.getDataset();
     OFListConstIterator(OFString) it;
diff --git a/dcmnet/apps/movescu.cc b/dcmnet/apps/movescu.cc
index 6c514be..17271f9 100644
--- a/dcmnet/apps/movescu.cc
+++ b/dcmnet/apps/movescu.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -62,6 +62,26 @@ static char rcsid[] = "$dcmtk: " OFFIS_CONSOLE_APPLICATION " v"
 #define APPLICATIONTITLE        "MOVESCU"
 #define PEERAPPLICATIONTITLE    "ANY-SCP"
 
+// general
+#define EXITCODE_NO_ERROR                        0
+#define EXITCODE_COMMANDLINE_SYNTAX_ERROR        1      // this code is the default for printError()
+#define EXITCODE_INSUFFICIENT_PRIVILEGES         2
+#define EXITCODE_SETUID_FAILED                   3
+
+// output file errors
+#define EXITCODE_CANNOT_WRITE_OUTPUT_FILE       40
+#define EXITCODE_INVALID_OUTPUT_DIRECTORY       45
+
+// network errors
+#define EXITCODE_CANNOT_INITIALIZE_NETWORK      60
+#define EXITCODE_CANNOT_NEGOTIATE_ASSOCIATION   61
+#define EXITCODE_CANNOT_CREATE_ASSOC_PARAMETERS 65
+#define EXITCODE_NO_PRESENTATION_CONTEXT        66
+#define EXITCODE_CANNOT_CLOSE_ASSOCIATION       67
+#define EXITCODE_CMOVE_WARNING                  68
+#define EXITCODE_CMOVE_ERROR                    69
+
+
 typedef enum {
      QMPatientRoot = 0,
      QMStudyRoot = 1,
@@ -107,6 +127,7 @@ int               opt_dimse_timeout = 0;
 int               opt_acse_timeout = 30;
 OFBool            opt_ignorePendingDatasets = OFTrue;
 OFString          opt_outputDirectory = ".";
+int               cmove_status_code = EXITCODE_NO_ERROR;
 
 #ifdef WITH_ZLIB
 OFCmdUnsignedInt  opt_compressionLevel = 0;
@@ -176,7 +197,7 @@ addOverrideKey(OFConsoleApplication& app, const char *s)
         sprintf(msg2, "unknown tag: (%04x,%04x)", g, e);
         app.printError(msg2);
     }
-    DcmElement *elem = newDicomElement(tag);
+    DcmElement *elem = DcmItem::newDicomElement(tag);
     if (elem == NULL) {
         sprintf(msg2, "cannot create element for tag: (%04x,%04x)", g, e);
         app.printError(msg2);
@@ -287,6 +308,9 @@ main(int argc, char *argv[])
       cmd.addOption("--prefer-mpeg2-high",   "+xh",     "prefer MPEG2 Main Profile @ High Level TS");
       cmd.addOption("--prefer-mpeg4",        "+xn",     "prefer MPEG4 AVC/H.264 HP / Level 4.1 TS");
       cmd.addOption("--prefer-mpeg4-bd",     "+xl",     "prefer MPEG4 AVC/H.264 BD-compatible TS");
+      cmd.addOption("--prefer-mpeg4-2-2d",   "+x2",     "prefer MPEG4 AVC/H.264 HP / Level 4.2 TS (2D)");
+      cmd.addOption("--prefer-mpeg4-2-3d",   "+x3",     "prefer MPEG4 AVC/H.264 HP / Level 4.2 TS (3D)");
+      cmd.addOption("--prefer-mpeg4-2-st",   "+xo",     "prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS");
       cmd.addOption("--prefer-rle",          "+xr",     "prefer RLE lossless TS");
 #ifdef WITH_ZLIB
       cmd.addOption("--prefer-deflated",     "+xd",     "prefer deflated explicit VR little endian TS");
@@ -397,7 +421,7 @@ main(int argc, char *argv[])
 #ifdef WITH_TCPWRAPPER
           COUT << "- LIBWRAP" << OFendl;
 #endif
-          return 0;
+          return EXITCODE_NO_ERROR;
         }
       }
 
@@ -445,6 +469,9 @@ main(int argc, char *argv[])
       if (cmd.findOption("--prefer-mpeg2-high")) opt_in_networkTransferSyntax = EXS_MPEG2MainProfileAtHighLevel;
       if (cmd.findOption("--prefer-mpeg4")) opt_in_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_1;
       if (cmd.findOption("--prefer-mpeg4-bd")) opt_in_networkTransferSyntax = EXS_MPEG4BDcompatibleHighProfileLevel4_1;
+      if (cmd.findOption("--prefer-mpeg4-2-2d")) opt_in_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_2_For2DVideo;
+      if (cmd.findOption("--prefer-mpeg4-2-3d")) opt_in_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_2_For3DVideo;
+      if (cmd.findOption("--prefer-mpeg4-2-st")) opt_in_networkTransferSyntax = EXS_MPEG4StereoHighProfileLevel4_2;
       if (cmd.findOption("--prefer-rle")) opt_in_networkTransferSyntax = EXS_RLELossless;
 #ifdef WITH_ZLIB
       if (cmd.findOption("--prefer-deflated")) opt_in_networkTransferSyntax = EXS_DeflatedLittleEndianExplicit;
@@ -544,6 +571,9 @@ main(int argc, char *argv[])
         app.checkConflict("--write-xfer-little", "--prefer-mpeg2-high", opt_in_networkTransferSyntax == EXS_MPEG2MainProfileAtHighLevel);
         app.checkConflict("--write-xfer-little", "--prefer-mpeg4", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_1);
         app.checkConflict("--write-xfer-little", "--prefer-mpeg4-bd", opt_in_networkTransferSyntax == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+        app.checkConflict("--write-xfer-little", "--prefer-mpeg4-2-2d", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+        app.checkConflict("--write-xfer-little", "--prefer-mpeg4-2-3d", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+        app.checkConflict("--write-xfer-little", "--prefer-mpeg4-2-st", opt_in_networkTransferSyntax == EXS_MPEG4StereoHighProfileLevel4_2);
         app.checkConflict("--write-xfer-little", "--prefer-rle", opt_in_networkTransferSyntax == EXS_RLELossless);
         // we don't have to check a conflict for --prefer-deflated because we can always convert that to uncompressed.
         opt_writeTransferSyntax = EXS_LittleEndianExplicit;
@@ -563,6 +593,9 @@ main(int argc, char *argv[])
         app.checkConflict("--write-xfer-big", "--prefer-mpeg2-high", opt_in_networkTransferSyntax == EXS_MPEG2MainProfileAtHighLevel);
         app.checkConflict("--write-xfer-big", "--prefer-mpeg4", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_1);
         app.checkConflict("--write-xfer-big", "--prefer-mpeg4-bd", opt_in_networkTransferSyntax == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+        app.checkConflict("--write-xfer-big", "--prefer-mpeg4-2-2d", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+        app.checkConflict("--write-xfer-big", "--prefer-mpeg4-2-3d", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+        app.checkConflict("--write-xfer-big", "--prefer-mpeg4-2-st", opt_in_networkTransferSyntax == EXS_MPEG4StereoHighProfileLevel4_2);
         app.checkConflict("--write-xfer-big", "--prefer-rle", opt_in_networkTransferSyntax == EXS_RLELossless);
         // we don't have to check a conflict for --prefer-deflated because we can always convert that to uncompressed.
         opt_writeTransferSyntax = EXS_BigEndianExplicit;
@@ -582,6 +615,9 @@ main(int argc, char *argv[])
         app.checkConflict("--write-xfer-implicit", "--prefer-mpeg2-high", opt_in_networkTransferSyntax == EXS_MPEG2MainProfileAtHighLevel);
         app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_1);
         app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-bd", opt_in_networkTransferSyntax == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+        app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-2-2d", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+        app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-2-3d", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+        app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-2-st", opt_in_networkTransferSyntax == EXS_MPEG4StereoHighProfileLevel4_2);
         app.checkConflict("--write-xfer-implicit", "--prefer-rle", opt_in_networkTransferSyntax == EXS_RLELossless);
         // we don't have to check a conflict for --prefer-deflated because we can always convert that to uncompressed.
         opt_writeTransferSyntax = EXS_LittleEndianImplicit;
@@ -602,6 +638,9 @@ main(int argc, char *argv[])
         app.checkConflict("--write-xfer-deflated", "--prefer-mpeg2-high", opt_in_networkTransferSyntax == EXS_MPEG2MainProfileAtHighLevel);
         app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_1);
         app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-bd", opt_in_networkTransferSyntax == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+        app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-2-2d", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+        app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-2-3d", opt_in_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+        app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-2-st", opt_in_networkTransferSyntax == EXS_MPEG4StereoHighProfileLevel4_2);
         app.checkConflict("--write-xfer-deflated", "--prefer-rle", opt_in_networkTransferSyntax == EXS_RLELossless);
         opt_writeTransferSyntax = EXS_DeflatedLittleEndianExplicit;
       }
@@ -715,12 +754,12 @@ main(int argc, char *argv[])
         if (!OFStandard::dirExists(opt_outputDirectory))
         {
           OFLOG_FATAL(movescuLogger, "specified output directory does not exist");
-          return 1;
+          return EXITCODE_INVALID_OUTPUT_DIRECTORY;
         }
         else if (!OFStandard::isWriteable(opt_outputDirectory))
         {
           OFLOG_FATAL(movescuLogger, "specified output directory is not writeable");
-          return 1;
+          return EXITCODE_CANNOT_WRITE_OUTPUT_FILE;
         }
     }
 
@@ -731,7 +770,7 @@ main(int argc, char *argv[])
         if (geteuid() != 0)
         {
           OFLOG_FATAL(movescuLogger, "cannot listen on port " << opt_retrievePort << ", insufficient privileges");
-          return 1;
+          return EXITCODE_INSUFFICIENT_PRIVILEGES;
         }
     }
 #endif
@@ -743,21 +782,21 @@ main(int argc, char *argv[])
     if (cond.bad())
     {
         OFLOG_FATAL(movescuLogger, "cannot create network: " << DimseCondition::dump(temp_str, cond));
-        return 1;
+        return EXITCODE_CANNOT_INITIALIZE_NETWORK;
     }
 
     /* drop root privileges now and revert to the calling user id (if we are running as setuid root) */
     if (OFStandard::dropPrivileges().bad())
     {
         OFLOG_FATAL(movescuLogger, "setuid() failed, maximum number of processes/threads for uid already running.");
-        return 1;
+        return EXITCODE_SETUID_FAILED;
     }
 
     /* set up main association */
     cond = ASC_createAssociationParameters(&params, opt_maxPDU);
     if (cond.bad()) {
         OFLOG_FATAL(movescuLogger, DimseCondition::dump(temp_str, cond));
-        exit(1);
+        exit(EXITCODE_CANNOT_CREATE_ASSOC_PARAMETERS);
     }
     ASC_setAPTitles(params, opt_ourTitle, opt_peerTitle, NULL);
 
@@ -776,7 +815,7 @@ main(int argc, char *argv[])
         querySyntax[opt_queryModel].moveSyntax);
     if (cond.bad()) {
         OFLOG_FATAL(movescuLogger, DimseCondition::dump(temp_str, cond));
-        exit(1);
+        exit(EXITCODE_CANNOT_CREATE_ASSOC_PARAMETERS);
     }
 
     OFLOG_DEBUG(movescuLogger, "Request Parameters:" << OFendl << ASC_dumpParameters(temp_str, params, ASC_ASSOC_RQ));
@@ -791,11 +830,11 @@ main(int argc, char *argv[])
             ASC_getRejectParameters(params, &rej);
             OFLOG_FATAL(movescuLogger, "Association Rejected:");
             OFLOG_FATAL(movescuLogger, ASC_printRejectParameters(temp_str, &rej));
-            exit(1);
+            exit(EXITCODE_CANNOT_NEGOTIATE_ASSOCIATION);
         } else {
             OFLOG_FATAL(movescuLogger, "Association Request Failed:");
             OFLOG_FATAL(movescuLogger, DimseCondition::dump(temp_str, cond));
-            exit(1);
+            exit(EXITCODE_CANNOT_NEGOTIATE_ASSOCIATION);
         }
     }
     /* what has been accepted/refused ? */
@@ -803,7 +842,7 @@ main(int argc, char *argv[])
 
     if (ASC_countAcceptedPresentationContexts(params) == 0) {
         OFLOG_FATAL(movescuLogger, "No Acceptable Presentation Contexts");
-        exit(1);
+        exit(EXITCODE_NO_PRESENTATION_CONTEXT);
     }
 
     OFLOG_INFO(movescuLogger, "Association Accepted (Max Send PDV: " << assoc->sendPDVLength << ")");
@@ -832,7 +871,7 @@ main(int argc, char *argv[])
             cond = ASC_abortAssociation(assoc);
             if (cond.bad()) {
                 OFLOG_FATAL(movescuLogger, "Association Abort Failed: " << DimseCondition::dump(temp_str, cond));
-                exit(1);
+                exit(EXITCODE_CANNOT_CLOSE_ASSOCIATION);
             }
         } else {
             /* release association */
@@ -842,7 +881,7 @@ main(int argc, char *argv[])
             {
                 OFLOG_FATAL(movescuLogger, "Association Release Failed:");
                 OFLOG_FATAL(movescuLogger, DimseCondition::dump(temp_str, cond));
-                exit(1);
+                exit(EXITCODE_CANNOT_CLOSE_ASSOCIATION);
             }
         }
     }
@@ -853,7 +892,7 @@ main(int argc, char *argv[])
         cond = ASC_abortAssociation(assoc);
         if (cond.bad()) {
             OFLOG_FATAL(movescuLogger, "Association Abort Failed: " << DimseCondition::dump(temp_str, cond));
-            exit(1);
+            exit(EXITCODE_CANNOT_CLOSE_ASSOCIATION);
         }
     }
     else if (cond == DUL_PEERABORTEDASSOCIATION)
@@ -867,26 +906,26 @@ main(int argc, char *argv[])
         cond = ASC_abortAssociation(assoc);
         if (cond.bad()) {
             OFLOG_FATAL(movescuLogger, "Association Abort Failed: " << DimseCondition::dump(temp_str, cond));
-            exit(1);
+            exit(EXITCODE_CANNOT_CLOSE_ASSOCIATION);
         }
     }
 
     cond = ASC_destroyAssociation(&assoc);
     if (cond.bad()) {
         OFLOG_FATAL(movescuLogger, DimseCondition::dump(temp_str, cond));
-        exit(1);
+        exit(EXITCODE_CANNOT_CLOSE_ASSOCIATION);
     }
     cond = ASC_dropNetwork(&net);
     if (cond.bad()) {
         OFLOG_FATAL(movescuLogger, DimseCondition::dump(temp_str, cond));
-        exit(1);
+        exit(EXITCODE_CANNOT_CLOSE_ASSOCIATION);
     }
 
 #ifdef HAVE_WINSOCK_H
     WSACleanup();
 #endif
 
-    return 0;
+    return cmove_status_code;
 }
 
 
@@ -971,7 +1010,9 @@ acceptSubAssoc(T_ASC_Network *aNet, T_ASC_Association **assoc)
     const char *knownAbstractSyntaxes[] = {
         UID_VerificationSOPClass
     };
-    const char *transferSyntaxes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
+    const char* transferSyntaxes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,  // 10
+                                       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,  // 20
+                                       NULL };                                                      // +1
     int numTransferSyntaxes;
     OFString temp_str;
 
@@ -1090,6 +1131,30 @@ acceptSubAssoc(T_ASC_Network *aNet, T_ASC_Association **assoc)
           transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
           numTransferSyntaxes = 4;
           break;
+        case EXS_MPEG4HighProfileLevel4_2_For2DVideo:
+          /* we prefer MPEG4 HP/L4.2 for 2D Videos */
+          transferSyntaxes[0] = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax;
+          transferSyntaxes[1] = UID_LittleEndianExplicitTransferSyntax;
+          transferSyntaxes[2] = UID_BigEndianExplicitTransferSyntax;
+          transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
+          numTransferSyntaxes = 4;
+          break;
+        case EXS_MPEG4HighProfileLevel4_2_For3DVideo:
+          /* we prefer MPEG4 HP/L4.2 for 3D Vidoes */
+          transferSyntaxes[0] = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax;
+          transferSyntaxes[1] = UID_LittleEndianExplicitTransferSyntax;
+          transferSyntaxes[2] = UID_BigEndianExplicitTransferSyntax;
+          transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
+          numTransferSyntaxes = 4;
+          break;
+        case EXS_MPEG4StereoHighProfileLevel4_2:
+          /* we prefer MPEG4 Stereo HP/L4.2 */
+          transferSyntaxes[0] = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax;
+          transferSyntaxes[1] = UID_LittleEndianExplicitTransferSyntax;
+          transferSyntaxes[2] = UID_BigEndianExplicitTransferSyntax;
+          transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
+          numTransferSyntaxes = 4;
+          break;
         case EXS_RLELossless:
           /* we prefer RLE Lossless */
           transferSyntaxes[0] = UID_RLELosslessTransferSyntax;
@@ -1126,17 +1191,22 @@ acceptSubAssoc(T_ASC_Network *aNet, T_ASC_Association **assoc)
             transferSyntaxes[9] = UID_MPEG2MainProfileAtHighLevelTransferSyntax;
             transferSyntaxes[10] = UID_MPEG4HighProfileLevel4_1TransferSyntax;
             transferSyntaxes[11] = UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax;
-            transferSyntaxes[12] = UID_DeflatedExplicitVRLittleEndianTransferSyntax;
+            transferSyntaxes[12] = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax;
+            transferSyntaxes[13] = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax;
+            transferSyntaxes[14] = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax;
+            transferSyntaxes[15] = UID_HEVCMainProfileLevel5_1TransferSyntax;
+            transferSyntaxes[16] = UID_HEVCMain10ProfileLevel5_1TransferSyntax;
+            transferSyntaxes[17] = UID_DeflatedExplicitVRLittleEndianTransferSyntax;
             if (gLocalByteOrder == EBO_LittleEndian)
             {
-              transferSyntaxes[13] = UID_LittleEndianExplicitTransferSyntax;
-              transferSyntaxes[14] = UID_BigEndianExplicitTransferSyntax;
+              transferSyntaxes[18] = UID_LittleEndianExplicitTransferSyntax;
+              transferSyntaxes[19] = UID_BigEndianExplicitTransferSyntax;
             } else {
-              transferSyntaxes[13] = UID_BigEndianExplicitTransferSyntax;
-              transferSyntaxes[14] = UID_LittleEndianExplicitTransferSyntax;
+              transferSyntaxes[18] = UID_BigEndianExplicitTransferSyntax;
+              transferSyntaxes[19] = UID_LittleEndianExplicitTransferSyntax;
             }
-            transferSyntaxes[15] = UID_LittleEndianImplicitTransferSyntax;
-            numTransferSyntaxes = 16;
+            transferSyntaxes[20] = UID_LittleEndianImplicitTransferSyntax;
+            numTransferSyntaxes = 21;
           } else {
             /* We prefer explicit transfer syntaxes.
              * If we are running on a Little Endian machine we prefer
@@ -1168,7 +1238,7 @@ acceptSubAssoc(T_ASC_Network *aNet, T_ASC_Association **assoc)
             /* the array of Storage SOP Class UIDs comes from dcuid.h */
             cond = ASC_acceptContextsWithPreferredTransferSyntaxes(
                 (*assoc)->params,
-                dcmAllStorageSOPClassUIDs, numberOfAllDcmStorageSOPClassUIDs,
+                dcmAllStorageSOPClassUIDs, numberOfDcmAllStorageSOPClassUIDs,
                 transferSyntaxes, numTransferSyntaxes);
         }
     }
@@ -1596,6 +1666,26 @@ moveSCU(T_ASC_Association *assoc, const char *fname)
         NULL, &rsp, &statusDetail, &rspIds, opt_ignorePendingDatasets);
 
     if (cond == EC_Normal) {
+
+        // check if the C-MOVE-RSP message indicated an error
+        if ((rsp.DimseStatus == STATUS_Success) ||
+            (rsp.DimseStatus == STATUS_MOVE_Cancel_SubOperationsTerminatedDueToCancelIndication))
+        {
+          // status is "success" or "cancel", nothing to do.
+        }
+        else if (rsp.DimseStatus == STATUS_MOVE_Warning_SubOperationsCompleteOneOrMoreFailures)
+        {
+          // status is "warn". Make sure the application ends with a non-zero return code.
+          if (EXITCODE_NO_ERROR == cmove_status_code) cmove_status_code = EXITCODE_CMOVE_WARNING;
+          OFLOG_WARN(movescuLogger, "Move response with warning status ("  << DU_cmoveStatusString(rsp.DimseStatus) << ")");
+        }
+        else
+        {
+          // status is "failed" or "refused"
+          cmove_status_code = EXITCODE_CMOVE_ERROR;
+          OFLOG_WARN(movescuLogger, "Move response with error status ("  << DU_cmoveStatusString(rsp.DimseStatus) << ")");
+        }
+
         if (movescuLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL)) {
             OFLOG_INFO(movescuLogger, "Received Final Move Response");
             OFLOG_DEBUG(movescuLogger, DIMSE_dumpMessage(temp_str, rsp, DIMSE_INCOMING));
diff --git a/dcmnet/apps/storescp.cc b/dcmnet/apps/storescp.cc
index 368ffd3..0a6678a 100644
--- a/dcmnet/apps/storescp.cc
+++ b/dcmnet/apps/storescp.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -55,6 +55,7 @@ END_EXTERN_C
 #include "dcmtk/dcmnet/dicom.h"         /* for DICOM_APPLICATION_ACCEPTOR */
 #include "dcmtk/dcmnet/dimse.h"
 #include "dcmtk/dcmnet/diutil.h"
+#include "dcmtk/dcmnet/dcmtrans.h"      /* for dcmSocketSend/ReceiveTimeout */
 #include "dcmtk/dcmnet/dcasccfg.h"      /* for class DcmAssociationConfiguration */
 #include "dcmtk/dcmnet/dcasccff.h"      /* for class DcmAssociationConfigurationFile */
 #include "dcmtk/dcmdata/dcfilefo.h"
@@ -179,6 +180,7 @@ static const char *opt_profileName = NULL;
 T_DIMSE_BlockingMode opt_blockMode = DIMSE_BLOCKING;
 int                opt_dimse_timeout = 0;
 int                opt_acse_timeout = 30;
+OFCmdSignedInt     opt_socket_timeout = 60;
 
 #if defined(HAVE_FORK) || defined(_WIN32)
 OFBool             opt_forkMode = OFFalse;
@@ -221,6 +223,13 @@ extern "C" void sigChildHandler(int)
 #endif
 
 
+/* helper macro for converting stream output to a string */
+#define CONVERT_TO_STRING(output, string) \
+    optStream.str(""); \
+    optStream.clear(); \
+    optStream << output << OFStringStream_ends; \
+    OFSTRINGSTREAM_GETOFSTRING(optStream, string)
+
 #define SHORTCOL 4
 #define LONGCOL 21
 
@@ -242,8 +251,9 @@ int main(int argc, char *argv[])
   WSAStartup(winSockVersionNeeded, &winSockData);
 #endif
 
-  char tempstr[20];
   OFString temp_str;
+  OFOStringStream optStream;
+
   OFConsoleApplication app(OFFIS_CONSOLE_APPLICATION, "DICOM storage (C-STORE) SCP", rcsid);
   OFCommandLine cmd;
 
@@ -285,6 +295,9 @@ int main(int argc, char *argv[])
       cmd.addOption("--prefer-mpeg2-high",      "+xh",     "prefer MPEG2 Main Profile @ High Level TS");
       cmd.addOption("--prefer-mpeg4",           "+xn",     "prefer MPEG4 AVC/H.264 HP / Level 4.1 TS");
       cmd.addOption("--prefer-mpeg4-bd",        "+xl",     "prefer MPEG4 AVC/H.264 BD-compatible TS");
+      cmd.addOption("--prefer-mpeg4-2-2d",      "+x2",     "prefer MPEG4 AVC/H.264 HP / Level 4.2 TS (2D)");
+      cmd.addOption("--prefer-mpeg4-2-3d",      "+x3",     "prefer MPEG4 AVC/H.264 HP / Level 4.2 TS (3D)");
+      cmd.addOption("--prefer-mpeg4-2-st",      "+xo",     "prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS");
       cmd.addOption("--prefer-rle",             "+xr",     "prefer RLE lossless TS");
 #ifdef WITH_ZLIB
       cmd.addOption("--prefer-deflated",        "+xd",     "prefer deflated expl. VR little endian TS");
@@ -303,26 +316,16 @@ int main(int argc, char *argv[])
       // this option is only offered on Posix platforms
       cmd.addOption("--inetd",                  "-id",     "run from inetd super server (not with --fork)");
 #endif
-
-      cmd.addOption("--acse-timeout",           "-ta",  1, "[s]econds: integer (default: 30)", "timeout for ACSE messages");
+      CONVERT_TO_STRING("[s]econds: integer (default: " << opt_socket_timeout << ")", optString1);
+      cmd.addOption("--socket-timeout",         "-ts",  1, optString1.c_str(), "timeout for network socket (0 for none)");
+      CONVERT_TO_STRING("[s]econds: integer (default: " << opt_acse_timeout << ")", optString2);
+      cmd.addOption("--acse-timeout",           "-ta",  1, optString2.c_str(), "timeout for ACSE messages");
       cmd.addOption("--dimse-timeout",          "-td",  1, "[s]econds: integer (default: unlimited)", "timeout for DIMSE messages");
+      cmd.addOption("--aetitle",                "-aet", 1, "[a]etitle: string", "set my AE title (default: " APPLICATIONTITLE ")");
+      CONVERT_TO_STRING("[n]umber of bytes: integer (" << ASC_MINIMUMPDUSIZE << ".." << ASC_MAXIMUMPDUSIZE << ")", optString3);
+      CONVERT_TO_STRING("set max receive pdu to n bytes (default: " << opt_maxPDU << ")", optString4);
+      cmd.addOption("--max-pdu",                "-pdu", 1, optString3.c_str(), optString4.c_str());
 
-      OFString opt1 = "set my AE title (default: ";
-      opt1 += APPLICATIONTITLE;
-      opt1 += ")";
-      cmd.addOption("--aetitle",                "-aet", 1, "[a]etitle: string", opt1.c_str());
-      OFString opt3 = "set max receive pdu to n bytes (def.: ";
-      sprintf(tempstr, "%ld", OFstatic_cast(long, ASC_DEFAULTMAXPDU));
-      opt3 += tempstr;
-      opt3 += ")";
-      OFString opt4 = "[n]umber of bytes: integer (";
-      sprintf(tempstr, "%ld", OFstatic_cast(long, ASC_MINIMUMPDUSIZE));
-      opt4 += tempstr;
-      opt4 += "..";
-      sprintf(tempstr, "%ld", OFstatic_cast(long, ASC_MAXIMUMPDUSIZE));
-      opt4 += tempstr;
-      opt4 += ")";
-      cmd.addOption("--max-pdu",                "-pdu", 1, opt4.c_str(), opt3.c_str());
       cmd.addOption("--disable-host-lookup",    "-dhl",    "disable hostname lookup");
       cmd.addOption("--refuse",                            "refuse association");
       cmd.addOption("--reject",                            "reject association if no implement. class UID");
@@ -553,6 +556,9 @@ int main(int argc, char *argv[])
     if (cmd.findOption("--prefer-mpeg2-high")) opt_networkTransferSyntax = EXS_MPEG2MainProfileAtHighLevel;
     if (cmd.findOption("--prefer-mpeg4")) opt_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_1;
     if (cmd.findOption("--prefer-mpeg4-bd")) opt_networkTransferSyntax = EXS_MPEG4BDcompatibleHighProfileLevel4_1;
+    if (cmd.findOption("--prefer-mpeg4-2-2d")) opt_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_2_For2DVideo;
+    if (cmd.findOption("--prefer-mpeg4-2-3d")) opt_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_2_For3DVideo;
+    if (cmd.findOption("--prefer-mpeg4-2-st")) opt_networkTransferSyntax = EXS_MPEG4StereoHighProfileLevel4_2;
     if (cmd.findOption("--prefer-rle")) opt_networkTransferSyntax = EXS_RLELossless;
 #ifdef WITH_ZLIB
     if (cmd.findOption("--prefer-deflated")) opt_networkTransferSyntax = EXS_DeflatedLittleEndianExplicit;
@@ -566,6 +572,12 @@ int main(int argc, char *argv[])
     cmd.endOptionBlock();
     if (opt_networkTransferSyntax != EXS_Unknown) opt_acceptAllXfers = OFFalse;
 
+    if (cmd.findOption("--socket-timeout"))
+      app.checkValue(cmd.getValueAndCheckMin(opt_socket_timeout, -1));
+    // always set the timeout values since the global default might be different
+    dcmSocketSendTimeout.set(OFstatic_cast(Sint32, opt_socket_timeout));
+    dcmSocketReceiveTimeout.set(OFstatic_cast(Sint32, opt_socket_timeout));
+
     if (cmd.findOption("--acse-timeout"))
     {
       OFCmdSignedInt opt_timeout = 0;
@@ -609,6 +621,9 @@ int main(int argc, char *argv[])
       app.checkConflict("--config-file", "--prefer-mpeg2-high", opt_networkTransferSyntax == EXS_MPEG2MainProfileAtHighLevel);
       app.checkConflict("--config-file", "--prefer-mpeg4", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_1);
       app.checkConflict("--config-file", "--prefer-mpeg4-bd", opt_networkTransferSyntax == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+      app.checkConflict("--config-file", "--prefer-mpeg4-2-2d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+      app.checkConflict("--config-file", "--prefer-mpeg4-2-3d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+      app.checkConflict("--config-file", "--prefer-mpeg4-2-st", opt_networkTransferSyntax == EXS_MPEG4StereoHighProfileLevel4_2);
       app.checkConflict("--config-file", "--prefer-rle", opt_networkTransferSyntax == EXS_RLELossless);
 #ifdef WITH_ZLIB
       app.checkConflict("--config-file", "--prefer-deflated", opt_networkTransferSyntax == EXS_DeflatedLittleEndianExplicit);
@@ -687,6 +702,9 @@ int main(int argc, char *argv[])
       app.checkConflict("--write-xfer-little", "--prefer-mpeg2-high", opt_networkTransferSyntax == EXS_MPEG2MainProfileAtHighLevel);
       app.checkConflict("--write-xfer-little", "--prefer-mpeg4", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_1);
       app.checkConflict("--write-xfer-little", "--prefer-mpeg4-bd", opt_networkTransferSyntax == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+      app.checkConflict("--write-xfer-little", "--prefer-mpeg4-2-2d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+      app.checkConflict("--write-xfer-little", "--prefer-mpeg4-2-3d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+      app.checkConflict("--write-xfer-little", "--prefer-mpeg4-2-st", opt_networkTransferSyntax == EXS_MPEG4StereoHighProfileLevel4_2);
       app.checkConflict("--write-xfer-little", "--prefer-rle", opt_networkTransferSyntax == EXS_RLELossless);
       // we don't have to check a conflict for --prefer-deflated because we can always convert that to uncompressed.
       opt_writeTransferSyntax = EXS_LittleEndianExplicit;
@@ -706,6 +724,9 @@ int main(int argc, char *argv[])
       app.checkConflict("--write-xfer-big", "--prefer-mpeg2-high", opt_networkTransferSyntax == EXS_MPEG2MainProfileAtHighLevel);
       app.checkConflict("--write-xfer-big", "--prefer-mpeg4", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_1);
       app.checkConflict("--write-xfer-big", "--prefer-mpeg4-bd", opt_networkTransferSyntax == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+      app.checkConflict("--write-xfer-big", "--prefer-mpeg4-2-2d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+      app.checkConflict("--write-xfer-big", "--prefer-mpeg4-2-3d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+      app.checkConflict("--write-xfer-big", "--prefer-mpeg4-2-st", opt_networkTransferSyntax == EXS_MPEG4StereoHighProfileLevel4_2);
       app.checkConflict("--write-xfer-big", "--prefer-rle", opt_networkTransferSyntax == EXS_RLELossless);
       // we don't have to check a conflict for --prefer-deflated because we can always convert that to uncompressed.
       opt_writeTransferSyntax = EXS_BigEndianExplicit;
@@ -725,6 +746,9 @@ int main(int argc, char *argv[])
       app.checkConflict("--write-xfer-implicit", "--prefer-mpeg2-high", opt_networkTransferSyntax == EXS_MPEG2MainProfileAtHighLevel);
       app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_1);
       app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-bd", opt_networkTransferSyntax == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+      app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-2-2d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+      app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-2-3d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+      app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-2-st", opt_networkTransferSyntax == EXS_MPEG4StereoHighProfileLevel4_2);
       app.checkConflict("--write-xfer-implicit", "--prefer-rle", opt_networkTransferSyntax == EXS_RLELossless);
       // we don't have to check a conflict for --prefer-deflated because we can always convert that to uncompressed.
       opt_writeTransferSyntax = EXS_LittleEndianImplicit;
@@ -745,6 +769,9 @@ int main(int argc, char *argv[])
       app.checkConflict("--write-xfer-deflated", "--prefer-mpeg2-high", opt_networkTransferSyntax == EXS_MPEG2MainProfileAtHighLevel);
       app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_1);
       app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-bd", opt_networkTransferSyntax == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+      app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-2-2d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+      app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-2-3d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+      app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-2-st", opt_networkTransferSyntax == EXS_MPEG4StereoHighProfileLevel4_2);
       app.checkConflict("--write-xfer-deflated", "--prefer-rle", opt_networkTransferSyntax == EXS_RLELossless);
       opt_writeTransferSyntax = EXS_DeflatedLittleEndianExplicit;
     }
@@ -1031,7 +1058,7 @@ int main(int argc, char *argv[])
 
     // read socket handle number from stdin, i.e. the anonymous pipe
     // to which our parent process has written the handle number.
-    if (ReadFile(hStdIn, buf, sizeof(buf), &bytesRead, NULL))
+    if (ReadFile(hStdIn, buf, sizeof(buf) - 1, &bytesRead, NULL))
     {
       // make sure buffer is zero terminated
       buf[bytesRead] = '\0';
@@ -1216,7 +1243,9 @@ static OFCondition acceptAssociation(T_ASC_Network *net, DcmAssociationConfigura
     UID_VerificationSOPClass
   };
 
-  const char* transferSyntaxes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
+  const char* transferSyntaxes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,  // 10
+                                     NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,  // 20
+                                     NULL };                                                      // +1
   int numTransferSyntaxes = 0;
 
   // try to receive an association. Here we either want to use blocking or
@@ -1420,6 +1449,30 @@ static OFCondition acceptAssociation(T_ASC_Network *net, DcmAssociationConfigura
       transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
       numTransferSyntaxes = 4;
       break;
+    case EXS_MPEG4HighProfileLevel4_2_For2DVideo:
+      /* we prefer MPEG4 HP/L4.2 for 2d Videos */
+      transferSyntaxes[0] = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax;
+      transferSyntaxes[1] = UID_LittleEndianExplicitTransferSyntax;
+      transferSyntaxes[2] = UID_BigEndianExplicitTransferSyntax;
+      transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
+      numTransferSyntaxes = 4;
+      break;
+    case EXS_MPEG4HighProfileLevel4_2_For3DVideo:
+      /* we prefer MPEG4 HP/L4.2 for 3d Videos */
+      transferSyntaxes[0] = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax;
+      transferSyntaxes[1] = UID_LittleEndianExplicitTransferSyntax;
+      transferSyntaxes[2] = UID_BigEndianExplicitTransferSyntax;
+      transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
+      numTransferSyntaxes = 4;
+      break;
+    case EXS_MPEG4StereoHighProfileLevel4_2:
+      /* we prefer MPEG4 Stereo HP/L4.2 */
+      transferSyntaxes[0] = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax;
+      transferSyntaxes[1] = UID_LittleEndianExplicitTransferSyntax;
+      transferSyntaxes[2] = UID_BigEndianExplicitTransferSyntax;
+      transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
+      numTransferSyntaxes = 4;
+      break;
     case EXS_RLELossless:
       /* we prefer RLE Lossless */
       transferSyntaxes[0] = UID_RLELosslessTransferSyntax;
@@ -1459,17 +1512,19 @@ static OFCondition acceptAssociation(T_ASC_Network *net, DcmAssociationConfigura
         transferSyntaxes[12] = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax;
         transferSyntaxes[13] = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax;
         transferSyntaxes[14] = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax;
-        transferSyntaxes[15] = UID_DeflatedExplicitVRLittleEndianTransferSyntax;
+        transferSyntaxes[15] = UID_HEVCMainProfileLevel5_1TransferSyntax;
+        transferSyntaxes[16] = UID_HEVCMain10ProfileLevel5_1TransferSyntax;
+        transferSyntaxes[17] = UID_DeflatedExplicitVRLittleEndianTransferSyntax;
         if (gLocalByteOrder == EBO_LittleEndian)
         {
-          transferSyntaxes[16] = UID_LittleEndianExplicitTransferSyntax;
-          transferSyntaxes[17] = UID_BigEndianExplicitTransferSyntax;
+          transferSyntaxes[18] = UID_LittleEndianExplicitTransferSyntax;
+          transferSyntaxes[19] = UID_BigEndianExplicitTransferSyntax;
         } else {
-          transferSyntaxes[16] = UID_BigEndianExplicitTransferSyntax;
-          transferSyntaxes[17] = UID_LittleEndianExplicitTransferSyntax;
+          transferSyntaxes[18] = UID_BigEndianExplicitTransferSyntax;
+          transferSyntaxes[19] = UID_LittleEndianExplicitTransferSyntax;
         }
-        transferSyntaxes[18] = UID_LittleEndianImplicitTransferSyntax;
-        numTransferSyntaxes = 19;
+        transferSyntaxes[20] = UID_LittleEndianImplicitTransferSyntax;
+        numTransferSyntaxes = 21;
       } else {
         /* We prefer explicit transfer syntaxes.
          * If we are running on a Little Endian machine we prefer
@@ -1520,7 +1575,7 @@ static OFCondition acceptAssociation(T_ASC_Network *net, DcmAssociationConfigura
     }
 
     /* the array of Storage SOP Class UIDs comes from dcuid.h */
-    cond = ASC_acceptContextsWithPreferredTransferSyntaxes( assoc->params, dcmAllStorageSOPClassUIDs, numberOfAllDcmStorageSOPClassUIDs, transferSyntaxes, numTransferSyntaxes);
+    cond = ASC_acceptContextsWithPreferredTransferSyntaxes( assoc->params, dcmAllStorageSOPClassUIDs, numberOfDcmAllStorageSOPClassUIDs, transferSyntaxes, numTransferSyntaxes);
     if (cond.bad())
     {
       OFLOG_DEBUG(storescpLogger, DimseCondition::dump(temp_str, cond));
diff --git a/dcmnet/apps/storescu.cc b/dcmnet/apps/storescu.cc
index 82a3838..91e33c5 100644
--- a/dcmnet/apps/storescu.cc
+++ b/dcmnet/apps/storescu.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2013, OFFIS e.V.
+ *  Copyright (C) 1996-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -44,6 +44,7 @@ END_EXTERN_C
 #include "dcmtk/dcmnet/dicom.h"      /* for DICOM_APPLICATION_REQUESTOR */
 #include "dcmtk/dcmnet/dimse.h"
 #include "dcmtk/dcmnet/diutil.h"
+#include "dcmtk/dcmnet/dcmtrans.h"   /* for dcmSocketSend/ReceiveTimeout */
 #include "dcmtk/dcmnet/dcasccfg.h"   /* for class DcmAssociationConfiguration */
 #include "dcmtk/dcmnet/dcasccff.h"   /* for class DcmAssociationConfigurationFile */
 #include "dcmtk/dcmdata/dcdatset.h"
@@ -124,6 +125,7 @@ static const char *opt_profileName = NULL;
 T_DIMSE_BlockingMode opt_blockMode = DIMSE_BLOCKING;
 int opt_dimse_timeout = 0;
 int opt_acse_timeout = 30;
+OFCmdSignedInt opt_socket_timeout = 60;
 
 #ifdef WITH_ZLIB
 static OFCmdUnsignedInt opt_compressionLevel = 0;
@@ -258,10 +260,13 @@ int main(int argc, char *argv[])
       cmd.addOption("--propose-j2k-lossy",    "-xw",     "propose JPEG 2000 lossy TS\nand all uncompressed transfer syntaxes");
       cmd.addOption("--propose-jls-lossless", "-xt",     "propose JPEG-LS lossless TS\nand all uncompressed transfer syntaxes");
       cmd.addOption("--propose-jls-lossy",    "-xu",     "propose JPEG-LS lossy TS\nand all uncompressed transfer syntaxes");
-      cmd.addOption("--propose-mpeg2",        "-xm",     "propose MPEG2 Main Profile @ Main Level TS only");
-      cmd.addOption("--propose-mpeg2-high",   "-xh",     "propose MPEG2 Main Profile @ High Level TS only");
-      cmd.addOption("--propose-mpeg4",        "-xn",     "propose MPEG4 AVC/H.264 HP / Level 4.1 TS only");
-      cmd.addOption("--propose-mpeg4-bd",     "-xl",     "propose MPEG4 AVC/H.264 BD-compatible TS only");
+      cmd.addOption("--propose-mpeg2",        "-xm",     "propose MPEG2 Main Profile @ Main Level TS");
+      cmd.addOption("--propose-mpeg2-high",   "-xh",     "propose MPEG2 Main Profile @ High Level TS");
+      cmd.addOption("--propose-mpeg4",        "-xn",     "propose MPEG4 AVC/H.264 HP / Level 4.1 TS");
+      cmd.addOption("--propose-mpeg4-bd",     "-xl",     "propose MPEG4 AVC/H.264 BD-compatible TS");
+      cmd.addOption("--propose-mpeg4-2-2d",   "-x2",     "propose MPEG4 AVC/H.264 HP / Level 4.2 TS (2D)");
+      cmd.addOption("--propose-mpeg4-2-3d",   "-x3",     "propose MPEG4 AVC/H.264 HP / Level 4.2 TS (3D)");
+      cmd.addOption("--propose-mpeg4-2-st",   "-xo",     "propose MPEG4 AVC/H.264 Stereo / Level 4.2 TS");
       cmd.addOption("--propose-rle",          "-xr",     "propose RLE lossless TS\nand all uncompressed transfer syntaxes");
 #ifdef WITH_ZLIB
       cmd.addOption("--propose-deflated",     "-xd",     "propose deflated expl. VR little endian TS\nand all uncompressed transfer syntaxes");
@@ -289,25 +294,27 @@ int main(int argc, char *argv[])
       cmd.addOption("--pos-response",         "-rsp",    "expect positive response");
     cmd.addSubGroup("other network options:");
       cmd.addOption("--timeout",              "-to",  1, "[s]econds: integer (default: unlimited)", "timeout for connection requests");
-      CONVERT_TO_STRING("[s]econds: integer (default: " << opt_acse_timeout << ")", optString1);
-      cmd.addOption("--acse-timeout",         "-ta",  1, optString1.c_str(), "timeout for ACSE messages");
+      CONVERT_TO_STRING("[s]econds: integer (default: " << opt_socket_timeout << ")", optString1);
+      cmd.addOption("--socket-timeout",       "-ts",  1, optString1.c_str(), "timeout for network socket (0 for none)");
+      CONVERT_TO_STRING("[s]econds: integer (default: " << opt_acse_timeout << ")", optString2);
+      cmd.addOption("--acse-timeout",         "-ta",  1, optString2.c_str(), "timeout for ACSE messages");
       cmd.addOption("--dimse-timeout",        "-td",  1, "[s]econds: integer (default: unlimited)", "timeout for DIMSE messages");
-      CONVERT_TO_STRING("[n]umber of bytes: integer (" << ASC_MINIMUMPDUSIZE << ".." << ASC_MAXIMUMPDUSIZE << ")", optString2);
-      CONVERT_TO_STRING("set max receive pdu to n bytes (default: " << opt_maxReceivePDULength << ")", optString3);
-      cmd.addOption("--max-pdu",              "-pdu", 1, optString2.c_str(), optString3.c_str());
-      cmd.addOption("--max-send-pdu",                 1, optString2.c_str(), "restrict max send pdu to n bytes");
+      CONVERT_TO_STRING("[n]umber of bytes: integer (" << ASC_MINIMUMPDUSIZE << ".." << ASC_MAXIMUMPDUSIZE << ")", optString3);
+      CONVERT_TO_STRING("set max receive pdu to n bytes (default: " << opt_maxReceivePDULength << ")", optString4);
+      cmd.addOption("--max-pdu",              "-pdu", 1, optString3.c_str(), optString4.c_str());
+      cmd.addOption("--max-send-pdu",                 1, optString3.c_str(), "restrict max send pdu to n bytes");
       cmd.addOption("--repeat",                       1, "[n]umber: integer", "repeat n times");
       cmd.addOption("--abort",                           "abort association instead of releasing it");
       cmd.addOption("--no-halt",              "-nh",     "do not halt if unsuccessful store encountered\n(default: do halt)");
       cmd.addOption("--uid-padding",          "-up",     "silently correct space-padded UIDs");
 
       cmd.addOption("--invent-instance",      "+II",     "invent a new SOP instance UID for every image\nsent");
-      CONVERT_TO_STRING("invent a new series UID after n images" << OFendl << "have been sent (default: " << opt_inventSeriesCount << ")", optString4);
-      cmd.addOption("--invent-series",        "+IR",  1, "[n]umber: integer (implies --invent-instance)", optString4.c_str());
-      CONVERT_TO_STRING("invent a new study UID after n series" << OFendl << "have been sent (default: " << opt_inventStudyCount << ")", optString5);
-      cmd.addOption("--invent-study",         "+IS",  1, "[n]umber: integer (implies --invent-instance)", optString5.c_str());
-      CONVERT_TO_STRING("invent a new patient ID and name after n studies" << OFendl << "have been sent (default: " << opt_inventPatientCount << ")", optString6);
-      cmd.addOption("--invent-patient",       "+IP",  1, "[n]umber: integer (implies --invent-instance)", optString6.c_str());
+      CONVERT_TO_STRING("invent a new series UID after n images" << OFendl << "have been sent (default: " << opt_inventSeriesCount << ")", optString5);
+      cmd.addOption("--invent-series",        "+IR",  1, "[n]umber: integer (implies --invent-instance)", optString5.c_str());
+      CONVERT_TO_STRING("invent a new study UID after n series" << OFendl << "have been sent (default: " << opt_inventStudyCount << ")", optString6);
+      cmd.addOption("--invent-study",         "+IS",  1, "[n]umber: integer (implies --invent-instance)", optString6.c_str());
+      CONVERT_TO_STRING("invent a new patient ID and name after n studies" << OFendl << "have been sent (default: " << opt_inventPatientCount << ")", optString7);
+      cmd.addOption("--invent-patient",       "+IP",  1, "[n]umber: integer (implies --invent-instance)", optString7.c_str());
 
 #ifdef WITH_OPENSSL
   cmd.addGroup("transport layer security (TLS) options:");
@@ -430,6 +437,9 @@ int main(int argc, char *argv[])
       if (cmd.findOption("--propose-mpeg2-high")) opt_networkTransferSyntax = EXS_MPEG2MainProfileAtHighLevel;
       if (cmd.findOption("--propose-mpeg4")) opt_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_1;
       if (cmd.findOption("--propose-mpeg4-bd")) opt_networkTransferSyntax = EXS_MPEG4BDcompatibleHighProfileLevel4_1;
+      if (cmd.findOption("--propose-mpeg4-2-2d")) opt_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_2_For2DVideo;
+      if (cmd.findOption("--propose-mpeg4-2-3d")) opt_networkTransferSyntax = EXS_MPEG4HighProfileLevel4_2_For3DVideo;
+      if (cmd.findOption("--propose-mpeg4-2-st")) opt_networkTransferSyntax = EXS_MPEG4StereoHighProfileLevel4_2;
       if (cmd.findOption("--propose-rle")) opt_networkTransferSyntax = EXS_RLELossless;
 #ifdef WITH_ZLIB
       if (cmd.findOption("--propose-deflated")) opt_networkTransferSyntax = EXS_DeflatedLittleEndianExplicit;
@@ -456,6 +466,9 @@ int main(int argc, char *argv[])
         app.checkConflict("--config-file", "--propose-mpeg2-high", opt_networkTransferSyntax == EXS_MPEG2MainProfileAtHighLevel);
         app.checkConflict("--config-file", "--propose-mpeg4", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_1);
         app.checkConflict("--config-file", "--propose-mpeg4-bd", opt_networkTransferSyntax == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+        app.checkConflict("--config-file", "--propose-mpeg4-2-2d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+        app.checkConflict("--config-file", "--propose-mpeg4-2-3d", opt_networkTransferSyntax == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+        app.checkConflict("--config-file", "--propose-mpeg4-2-st", opt_networkTransferSyntax == EXS_MPEG4StereoHighProfileLevel4_2);
         app.checkConflict("--config-file", "--propose-rle", opt_networkTransferSyntax == EXS_RLELossless);
 #ifdef WITH_ZLIB
         app.checkConflict("--config-file", "--propose-deflated", opt_networkTransferSyntax == EXS_DeflatedLittleEndianExplicit);
@@ -497,6 +510,12 @@ int main(int argc, char *argv[])
         dcmConnectionTimeout.set(OFstatic_cast(Sint32, opt_timeout));
       }
 
+      if (cmd.findOption("--socket-timeout"))
+        app.checkValue(cmd.getValueAndCheckMin(opt_socket_timeout, -1));
+      // always set the timeout values since the global default might be different
+      dcmSocketSendTimeout.set(OFstatic_cast(Sint32, opt_socket_timeout));
+      dcmSocketReceiveTimeout.set(OFstatic_cast(Sint32, opt_socket_timeout));
+
       if (cmd.findOption("--acse-timeout"))
       {
         OFCmdSignedInt opt_timeout = 0;
@@ -744,7 +763,7 @@ int main(int argc, char *argv[])
             else
               OFLOG_WARN(storescuLogger, errormsg << ", ignoring file");
           }
-          else if (!dcmIsaStorageSOPClassUID(sopClassUID))
+          else if (!dcmIsaStorageSOPClassUID(sopClassUID, ESSC_All))
           {
             ignoreName = OFTrue;
             errormsg = "unknown storage SOP class in file: ";
@@ -1216,7 +1235,10 @@ addStoragePresentationContexts(T_ASC_Parameters *params,
       (opt_networkTransferSyntax != EXS_MPEG2MainProfileAtMainLevel) &&
       (opt_networkTransferSyntax != EXS_MPEG2MainProfileAtHighLevel) &&
       (opt_networkTransferSyntax != EXS_MPEG4HighProfileLevel4_1) &&
-      (opt_networkTransferSyntax != EXS_MPEG4BDcompatibleHighProfileLevel4_1))
+      (opt_networkTransferSyntax != EXS_MPEG4BDcompatibleHighProfileLevel4_1) &&
+      (opt_networkTransferSyntax != EXS_MPEG4HighProfileLevel4_2_For2DVideo) &&
+      (opt_networkTransferSyntax != EXS_MPEG4HighProfileLevel4_2_For3DVideo) &&
+      (opt_networkTransferSyntax != EXS_MPEG4StereoHighProfileLevel4_2))
   {
     fallbackSyntaxes.push_back(UID_LittleEndianExplicitTransferSyntax);
     fallbackSyntaxes.push_back(UID_BigEndianExplicitTransferSyntax);
@@ -1699,10 +1721,12 @@ configureUserIdentityRequest(T_ASC_Parameters *params)
         delete[] buf;
         return EC_IllegalCall;
       }
+      // Casting to Uint16 should be safe since it is checked above that file
+      // size does not exceed 65535 bytes.
       if (opt_identMode == ASC_USER_IDENTITY_KERBEROS)
-        cond = ASC_setIdentRQKerberos(params, buf, bytesRead, opt_identResponse);
+        cond = ASC_setIdentRQKerberos(params, buf, OFstatic_cast(Uint16,bytesRead), opt_identResponse);
       else
-        cond = ASC_setIdentRQSaml(params, buf, bytesRead, opt_identResponse);
+        cond = ASC_setIdentRQSaml(params, buf, OFstatic_cast(Uint16,bytesRead), opt_identResponse);
       delete[] buf;
       break;
     }
diff --git a/dcmnet/docs/cptscp.dox b/dcmnet/docs/cptscp.dox
index 0b977e3..02e91af 100644
--- a/dcmnet/docs/cptscp.dox
+++ b/dcmnet/docs/cptscp.dox
@@ -26,6 +26,7 @@ OFBool isConnected();
  *  TCP/IP connection is already accepted, while the ACSE negotiation
  *  is not already done but must be implemented by this method.
  *  @param assoc The association to run.
+    @param EC_Normal if association could be handled, error otherwise
  */
 OFCondition run( T_ASC_Association* assoc );
 
diff --git a/dcmnet/docs/dcmnet.dox b/dcmnet/docs/dcmnet.dox
index cb72ca8..7753622 100644
--- a/dcmnet/docs/dcmnet.dox
+++ b/dcmnet/docs/dcmnet.dox
@@ -19,7 +19,7 @@ provide a particular DICOM Service:
 \li \b DcmStorageSCU
 \li \b DcmStorageSCP
 
-\section Tools
+\section dcmnet_tools Tools
 
 This module contains the following command line tools:
 \li \ref dcmrecv
@@ -32,13 +32,13 @@ This module contains the following command line tools:
 \li \ref storescu
 \li \ref termscu
 
-\section Files
+\section dcmnet_files Files
 
 The following files provide further documentation:
 \li \ref file_asconfig
 \li \ref file_testing
 
-\section Examples
+\section dcmnet_examples Examples
 
 The following example shows a very simple Echo SCU (Verification Service Class
 SCU). Most error handling code has been omitted for brevity, also OS specific
diff --git a/dcmnet/docs/dcmrecv.man b/dcmnet/docs/dcmrecv.man
index e76bfea..ed437bf 100644
--- a/dcmnet/docs/dcmrecv.man
+++ b/dcmnet/docs/dcmrecv.man
@@ -6,13 +6,13 @@
 \page dcmrecv dcmrecv: Simple DICOM storage SCP (receiver)
 \endif
 
-\section synopsis SYNOPSIS
+\section dcmrecv_synopsis SYNOPSIS
 
 \verbatim
 dcmrecv [options] port
 \endverbatim
 
-\section description DESCRIPTION
+\section dcmrecv_description DESCRIPTION
 
 The \b dcmrecv application implements a Service Class Provider (SCP) for the
 Storage Service Class.  In contrast to the well-known \b storescp utility,
@@ -21,15 +21,15 @@ explains the term "simple" in the title.  The main purpose of this application
 is to receive a whole bunch of DICOM datasets from a Storage Service Class User
 (SCU) and store them to a configurable directory and file structure.
 
-\section parameters PARAMETERS
+\section dcmrecv_parameters PARAMETERS
 
 \verbatim
 port  tcp/ip port number to listen on
 \endverbatim
 
-\section options OPTIONS
+\section dcmrecv_options OPTIONS
 
-\subsection general_options general options
+\subsection dcmrecv_general_options general options
 \verbatim
   -h    --help
           print this help text and exit
@@ -61,7 +61,7 @@ port  tcp/ip port number to listen on
 \endverbatim
 
 
-\subsection network_options network options
+\subsection dcmrecv_network_options network options
 \verbatim
 association negotiation profile from configuration file:
 
@@ -90,7 +90,7 @@ other network options:
   -dhl  --disable-host-lookup  disable hostname lookup
 \endverbatim
 
-\subsection output_options output options
+\subsection dcmrecv_output_options output options
 \verbatim
 general:
 
@@ -134,9 +134,9 @@ storage mode:
           ignore dataset, receive but do not store it
 \endverbatim
 
-\section notes NOTES
+\section dcmrecv_notes NOTES
 
-\subsection typical_usage Typical Usage
+\subsection dcmrecv_typical_usage Typical Usage
 
 A typical use case of \b dcmrecv is to receive SOP instances that are sent from
 a storage SCU and save them as DICOM files.  The following command does exactly
@@ -166,7 +166,7 @@ dcmrecv -v -xf storescp.cfg default <port> --bit-preserving
 The received datasets are always stored as DICOM files with the same Transfer
 Syntax as used for the network transmission.
 
-\subsection dicom_conformance DICOM Conformance
+\subsection dcmrecv_dicom_conformance DICOM Conformance
 
 Basically, the \b dcmrecv application supports all Storage SOP Classes as an
 SCP, including private ones.  This requires, however, that a corresponding
@@ -181,7 +181,7 @@ In the future, there might be additional options that allow for specifying the
 list of supported Presentation Contexts (i.e. combination of SOP Class and
 Transfer Syntaxes) directly, i.e. without loading a configuration file.
 
-\subsection subdirectory_generation Subdirectory Generation
+\subsection dcmrecv_subdirectory_generation Subdirectory Generation
 
 The option \e --series-date-subdir allows for generating subdirectories (below
 the specified output directory) based on the value of the data element Series
@@ -203,7 +203,7 @@ system date is used for the following subdirectory structure:
 In both cases, \<year\> consists of 4 decimal digits and \<month\> as well as
 \<day\> of 2 decimal digits.
 
-\subsection filename_generation Filename Generation
+\subsection dcmrecv_filename_generation Filename Generation
 
 By default, the filenames for storing the received DICOM datasets are generated
 according to the following scheme:
@@ -248,14 +248,14 @@ With \<date\> consisting of "<year><month><day>" and \<time\> of
 could result in naming conflicts if the resolution of the system time is not
 sufficiently high (i.e. does not support microseconds).
 
-\subsection limitations Limitations
+\subsection dcmrecv_limitations Limitations
 
 Please note that option \e --bit-preserving cannot be used together with
 option \e --series-date-subdir since the received dataset is stored directly
 to file and the value of the Series Date (0008,0021) is, therefore, not
 available before the file has been created.
 
-\section logging LOGGING
+\section dcmrecv_logging LOGGING
 
 The level of logging output of the various command line tools and underlying
 libraries can be specified by the user.  By default, only errors and warnings
@@ -274,7 +274,7 @@ messages to a particular output stream and for filtering certain messages
 based on the module or application where they are generated.  An example
 configuration file is provided in <em>\<etcdir\>/logger.cfg</em>.
 
-\section command_line COMMAND LINE
+\section dcmrecv_command_line COMMAND LINE
 
 All command line tools use the following notation for parameters: square
 brackets enclose optional values (0-1), three trailing dots indicate that
@@ -296,29 +296,29 @@ allows one to summarize common combinations of options/parameters and avoids
 longish and confusing command lines (an example is provided in file
 <em>\<datadir\>/dumppat.txt</em>).
 
-\section exit_codes EXIT CODES
+\section dcmrecv_exit_codes EXIT CODES
 
 The \b dcmrecv utility uses the following exit codes when terminating.  This
 enables the user to check for the reason why the application terminated.
 
-\subsection exit_codes_general general
+\subsection dcmrecv_exit_codes_general general
 \verbatim
 EXITCODE_NO_ERROR                         0
 EXITCODE_COMMANDLINE_SYNTAX_ERROR         1
 \endverbatim
 
-\subsection exit_codes_input_file_errors input file errors
+\subsection dcmrecv_exit_codes_input_file_errors input file errors
 \verbatim
 EXITCODE_CANNOT_READ_INPUT_FILE          20 (*)
 \endverbatim
 
-\subsection exit_codes_output_file_errors output file errors
+\subsection dcmrecv_exit_codes_output_file_errors output file errors
 \verbatim
 EXITCODE_CANNOT_WRITE_OUTPUT_FILE        40 (*)
 EXITCODE_INVALID_OUTPUT_DIRECTORY        45
 \endverbatim
 
-\subsection exit_codes_network_errors network errors
+\subsection dcmrecv_exit_codes_network_errors network errors
 \verbatim
 EXITCODE_CANNOT_INITIALIZE_NETWORK       60 (*)
 EXITCODE_CANNOT_START_SCP_AND_LISTEN     64
@@ -328,7 +328,7 @@ EXITCODE_INVALID_ASSOCIATION_CONFIG      66
 (*) Actually, these codes are currently not used by \b dcmrecv but serve as a
 placeholder for the corresponding group of exit codes.
 
-\section environment ENVIRONMENT
+\section dcmrecv_environment ENVIRONMENT
 
 The \b dcmrecv utility will attempt to load DICOM data dictionaries specified
 in the \e DCMDICTPATH environment variable.  By default, i.e. if the
@@ -344,17 +344,17 @@ a semicolon (";") is used as a separator.  The data dictionary code will
 attempt to load each file specified in the \e DCMDICTPATH environment variable.
 It is an error if no data dictionary can be loaded.
 
-\section files FILES
+\section dcmrecv_files FILES
 
 <em>\<docdir\>/asconfig.txt</em> - configuration file documentation
 \n<em>\<etcdir\>/storescp.cfg</em> - example association negotiation profile
 
-\section see_also SEE ALSO
+\section dcmrecv_see_also SEE ALSO
 
 <b>dcmsend</b>(1), <b>storescu</b>(1), <b>storescp</b>(1)
 
-\section copyright COPYRIGHT
+\section dcmrecv_copyright COPYRIGHT
 
-Copyright (C) 2013-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2013-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmnet/docs/dcmsend.man b/dcmnet/docs/dcmsend.man
index fb799c9..e4c7c29 100644
--- a/dcmnet/docs/dcmsend.man
+++ b/dcmnet/docs/dcmsend.man
@@ -6,13 +6,13 @@
 \page dcmsend dcmsend: Simple DICOM storage SCU (sender)
 \endif
 
-\section synopsis SYNOPSIS
+\section dcmsend_dcmsend_synopsis SYNOPSIS
 
 \verbatim
 dcmsend [options] peer port dcmfile-in...
 \endverbatim
 
-\section description DESCRIPTION
+\section dcmsend_description DESCRIPTION
 
 The \b dcmsend application implements a Service Class User (SCU) for the
 Storage Service Class.  In contrast to the well-known \b storescu utility,
@@ -22,7 +22,7 @@ is to send a whole bunch of DICOM files to a Storage Service Class Provider
 (SCP).  \b dcmsend supports both multiple associations (one after the other)
 and decompression of DICOM SOP instances if needed to transfer them.
 
-\section parameters PARAMETERS
+\section dcmsend_parameters PARAMETERS
 
 \verbatim
 peer        hostname of DICOM peer
@@ -32,9 +32,9 @@ port        tcp/ip port number of peer
 dcmfile-in  DICOM file or directory to be transmitted
 \endverbatim
 
-\section options OPTIONS
+\section dcmsend_options OPTIONS
 
-\subsection general_options general options
+\subsection dcmsend_general_options general options
 \verbatim
   -h    --help
           print this help text and exit
@@ -68,7 +68,7 @@ dcmfile-in  DICOM file or directory to be transmitted
           show presentation contexts in verbose mode
 \endverbatim
 
-\subsection input_options input options
+\subsection dcmsend_input_options input options
 \verbatim
 input file format:
 
@@ -101,7 +101,7 @@ input files:
           recurse within specified directories
 \endverbatim
 
-\subsection processing_options processing options
+\subsection dcmsend_processing_options processing options
 \verbatim
 transfer syntax conversion:
 
@@ -133,7 +133,7 @@ other processing options:
           do not check UID values of input files
 \endverbatim
 
-\subsection network_options network options
+\subsection dcmsend_network_options network options
 \verbatim
 application entity titles:
 
@@ -170,7 +170,7 @@ other network options:
           restrict max send pdu to n bytes
 \endverbatim
 
-\subsection output_options output options
+\subsection dcmsend_output_options output options
 \verbatim
 general:
 
@@ -179,9 +179,9 @@ general:
           (if successful) and write it to text file f
 \endverbatim
 
-\section notes NOTES
+\section dcmsend_notes NOTES
 
-\subsection typical_usage Typical Usage
+\subsection dcmsend_typical_usage Typical Usage
 
 A typical use case of \b dcmsend is to send arbitrary SOP instances that are
 stored as DICOM files to a storage SCP.  The following command does exactly
@@ -241,7 +241,7 @@ the DICOM SOP instances, option \e --create-report-file can be used to create
 a corresponding text file.  However, this file is only created as a final step
 if the application did not terminate before (with an error).
 
-\subsection scanning_directories Scanning Directories
+\subsection dcmsend_scanning_directories Scanning Directories
 
 Adding directories as a parameter to the command line only makes sense if
 option \e --scan-directories is also given.  If the files in the provided
@@ -259,7 +259,7 @@ their subfolders (due to option \e +r).  Additionally, \b dcmsend will transfer
 Note that providing directory names without enabling option \e +sd does
 not make sense.
 
-\subsection dicom_conformance DICOM Conformance
+\subsection dcmsend_dicom_conformance DICOM Conformance
 
 Basically, the \b dcmsend application supports all Storage SOP Classes as an
 SCU, including private ones.  By default, the application checks the SOP Class
@@ -308,7 +308,7 @@ Compression", "Lossy JPEG Compression" and so on are not always proposed as
 also required by the DICOM standard.  The same limitation applies to other
 compression schemes.  See DICOM PS 3.5 section 10 for details.
 
-\section logging LOGGING
+\section dcmsend_logging LOGGING
 
 The level of logging output of the various command line tools and underlying
 libraries can be specified by the user.  By default, only errors and warnings
@@ -327,7 +327,7 @@ messages to a particular output stream and for filtering certain messages
 based on the module or application where they are generated.  An example
 configuration file is provided in <em>\<etcdir\>/logger.cfg</em>.
 
-\section command_line COMMAND LINE
+\section dcmsend_command_line COMMAND LINE
 
 All command line tools use the following notation for parameters: square
 brackets enclose optional values (0-1), three trailing dots indicate that
@@ -349,18 +349,18 @@ allows one to summarize common combinations of options/parameters and avoids
 longish and confusing command lines (an example is provided in file
 <em>\<datadir\>/dumppat.txt</em>).
 
-\section exit_codes EXIT CODES
+\section dcmsend_exit_codes EXIT CODES
 
 The \b dcmsend utility uses the following exit codes when terminating.  This
 enables the user to check for the reason why the application terminated.
 
-\subsection exit_codes_general general
+\subsection dcmsend_exit_codes_general general
 \verbatim
 EXITCODE_NO_ERROR                         0
 EXITCODE_COMMANDLINE_SYNTAX_ERROR         1
 \endverbatim
 
-\subsection exit_codes_input_file_errors input file errors
+\subsection dcmsend_exit_codes_input_file_errors input file errors
 \verbatim
 EXITCODE_CANNOT_READ_INPUT_FILE          20 (*)
 EXITCODE_NO_INPUT_FILES                  21
@@ -368,13 +368,13 @@ EXITCODE_INVALID_INPUT_FILE              22
 EXITCODE_NO_VALID_INPUT_FILES            23
 \endverbatim
 
-\subsection exit_codes_output_file_errors output file errors
+\subsection dcmsend_exit_codes_output_file_errors output file errors
 \verbatim
 EXITCODE_CANNOT_WRITE_OUTPUT_FILE        40 (*)
 EXITCODE_CANNOT_WRITE_REPORT_FILE        43
 \endverbatim
 
-\subsection exit_codes_network_errors network errors
+\subsection dcmsend_exit_codes_network_errors network errors
 \verbatim
 EXITCODE_CANNOT_INITIALIZE_NETWORK       60
 EXITCODE_CANNOT_NEGOTIATE_ASSOCIATION    61
@@ -385,7 +385,7 @@ EXITCODE_CANNOT_ADD_PRESENTATION_CONTEXT 65
 (*) Actually, these codes are currently not used by \b dcmsend but serve as a
 placeholder for the corresponding group of exit codes.
 
-\section environment ENVIRONMENT
+\section dcmsend_environment ENVIRONMENT
 
 The \b dcmsend utility will attempt to load DICOM data dictionaries specified
 in the \e DCMDICTPATH environment variable.  By default, i.e. if the
@@ -401,12 +401,12 @@ a semicolon (";") is used as a separator.  The data dictionary code will
 attempt to load each file specified in the \e DCMDICTPATH environment variable.
 It is an error if no data dictionary can be loaded.
 
-\section see_also SEE ALSO
+\section dcmsend_see_also SEE ALSO
 
 <b>dcmrecv</b>(1), <b>storescu</b>(1), <b>storescp</b>(1)
 
-\section copyright COPYRIGHT
+\section dcmsend_copyright COPYRIGHT
 
-Copyright (C) 2011-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2011-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmnet/docs/echoscu.man b/dcmnet/docs/echoscu.man
index 95bd383..caf82da 100644
--- a/dcmnet/docs/echoscu.man
+++ b/dcmnet/docs/echoscu.man
@@ -6,20 +6,20 @@
 \page echoscu echoscu: DICOM verification (C-ECHO) SCU
 \endif
 
-\section synopsis SYNOPSIS
+\section echoscu_synopsis SYNOPSIS
 
 \verbatim
 echoscu [options] peer port
 \endverbatim
 
-\section description DESCRIPTION
+\section echoscu_description DESCRIPTION
 
 The \b echoscu application implements a Service Class User (SCU) for the
-Verification SOP Class.  It sends a DICOM C-ECHO message to a Service
-Class Provider (SCP) and waits for a response.  The application can be
-used to verify basic DICOM connectivity.
+Verification SOP Class.  It sends a DICOM C-ECHO message to a Service Class
+Provider (SCP) and waits for a response.  The application can be used to verify
+basic DICOM connectivity.
 
-\section parameters PARAMETERS
+\section echoscu_parameters PARAMETERS
 
 \verbatim
 peer  hostname of DICOM peer
@@ -27,9 +27,9 @@ peer  hostname of DICOM peer
 port  tcp/ip port number of peer
 \endverbatim
 
-\section options OPTIONS
+\section echoscu_options OPTIONS
 
-\subsection general_options general options
+\subsection echoscu_general_options general options
 \verbatim
   -h    --help
           print this help text and exit
@@ -57,7 +57,7 @@ port  tcp/ip port number of peer
           use config file f for the logger
 \endverbatim
 
-\subsection network_options network options
+\subsection echoscu_network_options network options
 \verbatim
 application entity titles:
 
@@ -69,7 +69,7 @@ application entity titles:
 
 association negotiation debugging:
 
-  -pts  --propose-ts  [n]umber: integer (1..33)
+  -pts  --propose-ts  [n]umber: integer (1..38)
           propose n transfer syntaxes
 
   -ppc  --propose-pc  [n]umber: integer (1..128)
@@ -96,7 +96,7 @@ other network options:
           abort association instead of releasing it
 \endverbatim
 
-\subsection tls_options transport layer security (TLS) options
+\subsection echoscu_tls_options transport layer security (TLS) options
 \verbatim
 transport protocol stack:
 
@@ -129,6 +129,7 @@ key and certificate file format:
           read keys and certificates as DER file
 
 certification authority:
+
   +cf   --add-cert-file  [c]ertificate filename: string
           add certificate file to list of certificates
 
@@ -166,9 +167,9 @@ peer authentication:
           don't verify peer certificate
 \endverbatim
 
-\section notes NOTES
+\section echoscu_notes NOTES
 
-\subsection dicom_conformance DICOM Conformance
+\subsection echoscu_dicom_conformance DICOM Conformance
 
 The \b echoscu application supports the following SOP Classes as an SCU:
 
@@ -183,7 +184,7 @@ propose the transfer syntax
 LittleEndianImplicitTransferSyntax  1.2.840.10008.1.2
 \endverbatim
 
-\section logging LOGGING
+\section echoscu_logging LOGGING
 
 The level of logging output of the various command line tools and underlying
 libraries can be specified by the user.  By default, only errors and warnings
@@ -202,7 +203,7 @@ messages to a particular output stream and for filtering certain messages
 based on the module or application where they are generated.  An example
 configuration file is provided in <em>\<etcdir\>/logger.cfg</em>.
 
-\section command_line COMMAND LINE
+\section echoscu_command_line COMMAND LINE
 
 All command line tools use the following notation for parameters: square
 brackets enclose optional values (0-1), three trailing dots indicate that
@@ -224,7 +225,7 @@ allows one to summarize common combinations of options/parameters and avoids
 longish and confusing command lines (an example is provided in file
 <em>\<datadir\>/dumppat.txt</em>).
 
-\section environment ENVIRONMENT
+\section echoscu_environment ENVIRONMENT
 
 The \b echoscu utility will attempt to load DICOM data dictionaries specified
 in the \e DCMDICTPATH environment variable.  By default, i.e. if the
@@ -240,8 +241,8 @@ a semicolon (";") is used as a separator.  The data dictionary code will
 attempt to load each file specified in the \e DCMDICTPATH environment variable.
 It is an error if no data dictionary can be loaded.
 
-\section copyright COPYRIGHT
+\section echoscu_copyright COPYRIGHT
 
-Copyright (C) 1994-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1994-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmnet/docs/findscu.man b/dcmnet/docs/findscu.man
index e79af7a..06a035d 100644
--- a/dcmnet/docs/findscu.man
+++ b/dcmnet/docs/findscu.man
@@ -6,13 +6,13 @@
 \page findscu findscu: DICOM query (C-FIND) SCU
 \endif
 
-\section synopsis SYNOPSIS
+\section findscu_synopsis SYNOPSIS
 
 \verbatim
 findscu [options] peer port [dcmfile-in...]
 \endverbatim
 
-\section description DESCRIPTION
+\section findscu_description DESCRIPTION
 
 The \b findscu application implements an SCU for the Query/Retrieve Service
 Class and the Basic Worklist Management Service Class.  \b findscu only
@@ -20,7 +20,7 @@ supports query functionality using the C-FIND message.  It sends query keys
 to an SCP and awaits responses.  The application can be used to test SCPs of
 the Query/Retrieve and Basic Worklist Management Service Classes.
 
-\section parameters PARAMETERS
+\section findscu_parameters PARAMETERS
 
 \verbatim
 peer        hostname of DICOM peer
@@ -30,9 +30,9 @@ port        tcp/ip port number of peer
 dcmfile-in  DICOM query file(s)
 \endverbatim
 
-\section options OPTIONS
+\section findscu_options OPTIONS
 
-\subsection general_options general options
+\subsection findscu_general_options general options
 \verbatim
   -h    --help
           print this help text and exit
@@ -60,7 +60,7 @@ dcmfile-in  DICOM query file(s)
           use config file f for the logger
 \endverbatim
 
-\subsection network_options network options
+\subsection findscu_network_options network options
 \verbatim
 override matching keys:
 
@@ -147,7 +147,7 @@ other network options:
           cancel after n responses (default: never)
 \endverbatim
 
-\subsection tls_options transport layer security (TLS) options
+\subsection findscu_tls_options transport layer security (TLS) options
 \verbatim
 transport protocol stack:
 
@@ -218,7 +218,7 @@ peer authentication:
           don't verify peer certificate
 \endverbatim
 
-\subsection output_options output options
+\subsection findscu_output_options output options
 \verbatim
 general:
 
@@ -245,7 +245,7 @@ C-FIND responses:
           extract responses to file (rsp0001.dcm, ...)
 \endverbatim
 
-\section notes NOTES
+\section findscu_notes NOTES
 
 Each file supplied on the command line will be sent to the SCP as part of a
 C-FIND request.  The query file must be a valid DICOM data set containing
@@ -308,7 +308,7 @@ option \e --hide-responses, \e --extract, \e --quiet or an appropriate logger
 configuration is used.  Option \e --show-responses can be used to force the
 output to the logger.
 
-\subsection dicom_conformance DICOM Conformance
+\subsection findscu_dicom_conformance DICOM Conformance
 
 The \b findscu application supports the following SOP Classes as an SCU:
 
@@ -338,7 +338,7 @@ with the \e --propose options.
 
 The \b findscu application does not support extended negotiation.
 
-\section logging LOGGING
+\section findscu_logging LOGGING
 
 The level of logging output of the various command line tools and underlying
 libraries can be specified by the user.  By default, only errors and warnings
@@ -357,7 +357,7 @@ messages to a particular output stream and for filtering certain messages
 based on the module or application where they are generated.  An example
 configuration file is provided in <em>\<etcdir\>/logger.cfg</em>.
 
-\section command_line COMMAND LINE
+\section findscu_command_line COMMAND LINE
 
 All command line tools use the following notation for parameters: square
 brackets enclose optional values (0-1), three trailing dots indicate that
@@ -379,7 +379,7 @@ allows one to summarize common combinations of options/parameters and avoids
 longish and confusing command lines (an example is provided in file
 <em>\<datadir\>/dumppat.txt</em>).
 
-\section environment ENVIRONMENT
+\section findscu_environment ENVIRONMENT
 
 The \b findscu utility will attempt to load DICOM data dictionaries specified
 in the \e DCMDICTPATH environment variable.  By default, i.e. if the
@@ -395,12 +395,12 @@ a semicolon (";") is used as a separator.  The data dictionary code will
 attempt to load each file specified in the \e DCMDICTPATH environment variable.
 It is an error if no data dictionary can be loaded.
 
-\section see_also SEE ALSO
+\section findscu_see_also SEE ALSO
 
 <b>movescu</b>(1), <b>dump2dcm</b>(1), <b>dcmodify</b>(1)
 
-\section copyright COPYRIGHT
+\section findscu_copyright COPYRIGHT
 
-Copyright (C) 1994-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1994-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmnet/docs/getscu.man b/dcmnet/docs/getscu.man
index 991a789..bbbd82e 100644
--- a/dcmnet/docs/getscu.man
+++ b/dcmnet/docs/getscu.man
@@ -6,13 +6,13 @@
 \page getscu getscu: DICOM retrieve (C-GET) SCU
 \endif
 
-\section synopsis SYNOPSIS
+\section getscu_synopsis SYNOPSIS
 
 \verbatim
 getscu [options] peer port [dcmfile-in...]
 \endverbatim
 
-\section description DESCRIPTION
+\section getscu_description DESCRIPTION
 
 The \b getscu application implements an SCU for the Query/Retrieve Service
 Class.  \b getscu supports retrieve functionality using the C-GET message.
@@ -22,7 +22,7 @@ accompanying C-STORE messages are handled on the same association.  Therefore,
 objects can only be received by \b getscu itself and cannot be sent to a third
 party (\b movescu would be the right tool for this task).
 
-\section parameters PARAMETERS
+\section getscu_parameters PARAMETERS
 
 \verbatim
 peer        hostname of DICOM peer
@@ -32,9 +32,9 @@ port        tcp/ip port number of peer
 dcmfile-in  DICOM query file(s)
 \endverbatim
 
-\section options OPTIONS
+\section getscu_options OPTIONS
 
-\subsection general_options general options
+\subsection getscu_general_options general options
 \verbatim
   -h    --help
           print this help text and exit
@@ -65,7 +65,7 @@ dcmfile-in  DICOM query file(s)
           show presentation contexts in verbose mode
 \endverbatim
 
-\subsection network_options network options
+\subsection getscu_network_options network options
 \verbatim
 override matching keys:
 
@@ -133,7 +133,16 @@ preferred storage transfer syntaxes (incoming associations):
           prefer MPEG4 AVC/H.264 HP / Level 4.1 TS
 
   +xl   --prefer-mpeg4-bd
-          prefer MPEG4 AVC/H.264 BD-compatible TS
+          prefer MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS
+
+  +x2   --prefer-mpeg4-2-2d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos
+
+  +x3   --prefer-mpeg4-2-3d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos
+
+  +xo   --prefer-mpeg4-2-st
+          prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS
 
   +xr   --prefer-rle
           prefer RLE lossless TS
@@ -184,7 +193,7 @@ other network options:
           abort association instead of releasing it
 \endverbatim
 
-\subsection output_options output options
+\subsection getscu_output_options output options
 \verbatim
 general:
 
@@ -203,7 +212,7 @@ storage mode:
           ignore store data, receive but do not store
 \endverbatim
 
-\section notes NOTES
+\section getscu_notes NOTES
 
 Each file supplied on the command line will be sent to the SCP as part of a
 C-GET request.  The query file must be a valid DICOM data set containing the
@@ -238,7 +247,7 @@ If no file is specified on the command line, the query must be specified
 completely with one or more \e -k options.  If multiple query files are
 provided, \b getscu will send multiple C-GET requests to the SCP.
 
-\subsection known_problems Known Problems
+\subsection getscu_known_problems Known Problems
 
 \b getscu is intended to be used as a testing tool for DICOM software
 developers.  The query keys file must be created by hand based upon the
@@ -253,7 +262,7 @@ QueryRetrieveLevel attribute and one or more of the so-called "unique key
 attributes" (PatientID, StudyInstanceUID, SeriesInstanceUID and
 SOPInstanceUID).
 
-\subsection dicom_conformance DICOM Conformance
+\subsection getscu_dicom_conformance DICOM Conformance
 
 \subsubsection scu_conformance SCU Conformance
 
@@ -301,12 +310,14 @@ DigitalIntraOralXRayImageStorageForPresentation      1.2.840.10008.5.1.4.1.1.1.3
 DigitalIntraOralXRayImageStorageForProcessing        1.2.840.10008.5.1.4.1.1.1.3.1
 CTImageStorage                                       1.2.840.10008.5.1.4.1.1.2
 EnhancedCTImageStorage                               1.2.840.10008.5.1.4.1.1.2.1
+LegacyConvertedEnhancedCTImageStorage                1.2.840.10008.5.1.4.1.1.2.2
 RETIRED_UltrasoundMultiframeImageStorage             1.2.840.10008.5.1.4.1.1.3
 UltrasoundMultiframeImageStorage                     1.2.840.10008.5.1.4.1.1.3.1
 MRImageStorage                                       1.2.840.10008.5.1.4.1.1.4
 EnhancedMRImageStorage                               1.2.840.10008.5.1.4.1.1.4.1
 MRSpectroscopyStorage                                1.2.840.10008.5.1.4.1.1.4.2
 EnhancedMRColorImageStorage                          1.2.840.10008.5.1.4.1.1.4.3
+LegacyConvertedEnhancedMRImageStorage                1.2.840.10008.5.1.4.1.1.4.4
 RETIRED_NuclearMedicineImageStorage                  1.2.840.10008.5.1.4.1.1.5
 RETIRED_UltrasoundImageStorage                       1.2.840.10008.5.1.4.1.1.6
 UltrasoundImageStorage                               1.2.840.10008.5.1.4.1.1.6.1
@@ -393,6 +404,7 @@ ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
 PositronEmissionTomographyImageStorage               1.2.840.10008.5.1.4.1.1.128
+LegacyConvertedEnhancedPETImageStorage               1.2.840.10008.5.1.4.1.1.128.1
 RETIRED_StandalonePETCurveStorage                    1.2.840.10008.5.1.4.1.1.129
 EnhancedPETImageStorage                              1.2.840.10008.5.1.4.1.1.130
 BasicStructuredDisplayStorage                        1.2.840.10008.5.1.4.1.1.131
@@ -406,9 +418,6 @@ RTTreatmentSummaryRecordStorage                      1.2.840.10008.5.1.4.1.1.481
 RTIonPlanStorage                                     1.2.840.10008.5.1.4.1.1.481.8
 RTIonBeamsTreatmentRecordStorage                     1.2.840.10008.5.1.4.1.1.481.9
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
-GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
-ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
-ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
 \endverbatim
 
 The \b getscu application will usually accept presentation contexts for all of
@@ -445,6 +454,9 @@ MPEG2MainProfileAtMainLevelTransferSyntax            1.2.840.10008.1.2.4.100
 MPEG2MainProfileAtHighLevelTransferSyntax            1.2.840.10008.1.2.4.101
 MPEG4HighProfileLevel4_1TransferSyntax               1.2.840.10008.1.2.4.102
 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
+MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
+MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
+MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 \endverbatim
 
@@ -452,7 +464,7 @@ RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 
 The \b getscu application does not support extended negotiation.
 
-\section examples EXAMPLES
+\section getscu_examples EXAMPLES
 
 \verbatim
 getscu --patient --call ARCHIVE caesar 104 q.dcm
@@ -468,7 +480,7 @@ the same connection, i.e. \b getscu will receive the objects itself.  Thus, it
 is not possible to tell the SCP to transmit the objects to a third party.
 This is a limitation of the DICOM protocol and not of the \b getscu tool.
 
-\section logging LOGGING
+\section getscu_logging LOGGING
 
 The level of logging output of the various command line tools and underlying
 libraries can be specified by the user.  By default, only errors and warnings
@@ -487,7 +499,7 @@ messages to a particular output stream and for filtering certain messages
 based on the module or application where they are generated.  An example
 configuration file is provided in <em>\<etcdir\>/logger.cfg</em>.
 
-\section command_line COMMAND LINE
+\section getscu_command_line COMMAND LINE
 
 All command line tools use the following notation for parameters: square
 brackets enclose optional values (0-1), three trailing dots indicate that
@@ -509,7 +521,7 @@ allows one to summarize common combinations of options/parameters and avoids
 longish and confusing command lines (an example is provided in file
 <em>\<datadir\>/dumppat.txt</em>).
 
-\section environment ENVIRONMENT
+\section getscu_environment ENVIRONMENT
 
 The \b getscu utility will attempt to load DICOM data dictionaries specified
 in the \e DCMDICTPATH environment variable.  By default, i.e. if the
@@ -525,12 +537,12 @@ a semicolon (";") is used as a separator.  The data dictionary code will
 attempt to load each file specified in the \e DCMDICTPATH environment variable.
 It is an error if no data dictionary can be loaded.
 
-\section see_also SEE ALSO
+\section getscu_see_also SEE ALSO
 
 <b>findscu</b>(1), <b>movescu</b>(1), <b>dump2dcm</b>(1), <b>dcmodify</b>(1)
 
-\section copyright COPYRIGHT
+\section getscu_copyright COPYRIGHT
 
-Copyright (C) 2011-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2011-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmnet/docs/movescu.man b/dcmnet/docs/movescu.man
index 02897d7..32b8e95 100644
--- a/dcmnet/docs/movescu.man
+++ b/dcmnet/docs/movescu.man
@@ -6,13 +6,13 @@
 \page movescu movescu: DICOM retrieve (C-MOVE) SCU
 \endif
 
-\section synopsis SYNOPSIS
+\section movescu_synopsis SYNOPSIS
 
 \verbatim
 movescu [options] peer port [dcmfile-in...]
 \endverbatim
 
-\section description DESCRIPTION
+\section movescu_description DESCRIPTION
 
 The \b movescu application implements both an SCU for the Query/Retrieve
 Service Class and an SCP for the Storage Service Class.  \b movescu supports
@@ -25,7 +25,7 @@ itself.  Note that the use of the term "move" is a misnomer.  The C-MOVE
 operation actually performs an image copy (no images will be deleted from the
 SCP).
 
-\section parameters PARAMETERS
+\section movescu_parameters PARAMETERS
 
 \verbatim
 peer        hostname of DICOM peer
@@ -35,9 +35,9 @@ port        tcp/ip port number of peer
 dcmfile-in  DICOM query file(s)
 \endverbatim
 
-\section options OPTIONS
+\section movescu_options OPTIONS
 
-\subsection general_options general options
+\subsection movescu_general_options general options
 \verbatim
   -h    --help
           print this help text and exit
@@ -65,7 +65,7 @@ dcmfile-in  DICOM query file(s)
           use config file f for the logger
 \endverbatim
 
-\subsection network_options network options
+\subsection movescu_network_options network options
 \verbatim
 override matching keys:
 
@@ -138,6 +138,15 @@ preferred network transfer syntaxes (incoming associations):
   +xl   --prefer-mpeg4-bd
           prefer MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS
 
+  +x2   --prefer-mpeg4-2-2d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos
+
+  +x3   --prefer-mpeg4-2-3d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos
+
+  +xo   --prefer-mpeg4-2-st
+          prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS
+
   +xr   --prefer-rle
           prefer RLE lossless TS
 
@@ -226,7 +235,7 @@ other network options:
           silently correct space-padded UIDs
 \endverbatim
 
-\subsection output_options output options
+\subsection movescu_output_options output options
 \verbatim
 general:
 
@@ -311,7 +320,7 @@ deflate compression level
           0=uncompressed, 1=fastest, 9=best compression
 \endverbatim
 
-\section notes NOTES
+\section movescu_notes NOTES
 
 Each file supplied on the command line will be sent to the SCP as part of a
 C-MOVE request.  The query file must be a valid DICOM data set containing
@@ -353,7 +362,7 @@ The C-MOVE operation of the Query/Retrieve Service Class is able retrieve
 images (when option \e --port is used) or to initiate a copy of images to a
 third party.
 
-\subsection known_problems Known Problems
+\subsection movescu_known_problems Known Problems
 
 \b movescu is intended to be used as a testing tool for DICOM software
 developers.  The query keys file must be created by hand based upon the
@@ -371,9 +380,9 @@ client instead expects \b movescu to close down the storage connection,
 \b movescu will wait infinitely.  In that case \b movescu will neither close
 the association that was used to issue the C-MOVE request to the C-MOVE server.
 
-\subsection dicom_conformance DICOM Conformance
+\subsection movescu_dicom_conformance DICOM Conformance
 
-\subsubsection scu_conformance SCU Conformance
+\subsubsection movescu_scu_conformance SCU Conformance
 
 The \b movescu application supports the following SOP Classes as an SCU:
 
@@ -544,6 +553,8 @@ LegacyConvertedEnhancedPETImageStorage               1.2.840.10008.5.1.4.1.1.128
 RETIRED_StandalonePETCurveStorage                    1.2.840.10008.5.1.4.1.1.129
 EnhancedPETImageStorage                              1.2.840.10008.5.1.4.1.1.130
 BasicStructuredDisplayStorage                        1.2.840.10008.5.1.4.1.1.131
+CTDefinedProcedureProtocolStorage                    1.2.840.10008.5.1.4.1.1.200.1
+CTPerformedProcedureProtocolStorage                  1.2.840.10008.5.1.4.1.1.200.2
 RTImageStorage                                       1.2.840.10008.5.1.4.1.1.481.1
 RTDoseStorage                                        1.2.840.10008.5.1.4.1.1.481.2
 RTStructureSetStorage                                1.2.840.10008.5.1.4.1.1.481.3
@@ -603,6 +614,11 @@ MPEG2MainProfileAtMainLevelTransferSyntax            1.2.840.10008.1.2.4.100
 MPEG2MainProfileAtHighLevelTransferSyntax            1.2.840.10008.1.2.4.101
 MPEG4HighProfileLevel4_1TransferSyntax               1.2.840.10008.1.2.4.102
 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
+MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
+MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
+MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
+HEVCMainProfileLevel5_1TransferSyntax                1.2.840.10008.1.2.4.107
+HEVCMain10ProfileLevel5_1TransferSyntax              1.2.840.10008.1.2.4.108
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 \endverbatim
 
@@ -610,7 +626,7 @@ RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 
 The \b movescu application does not support extended negotiation.
 
-\subsection access_control Access Control
+\subsection movescu_access_control Access Control
 
 When compiled on Unix platforms with TCP wrapper support, host-based access
 control can be enabled with the \e --access-control command line option.  In
@@ -619,7 +635,7 @@ tables for \b movescu are enforced.  The default locations of the host access
 control tables are <em>/etc/hosts.allow</em> and <em>/etc/hosts.deny</em>.
 Further details are described in <b>hosts_access</b>(5).
 
-\section examples EXAMPLES
+\section movescu_examples EXAMPLES
 
 \verbatim
 movescu --patient --port 9876 --move TEST_AE --call ARCHIVE caesar 104 q.dcm
@@ -639,7 +655,7 @@ Images can be copied to a third party by using a different destination AE title
 the destination must be acting as an SCP of the Storage Service Class (the
 \b storescp application can be used for this purpose).
 
-\section logging LOGGING
+\section movescu_logging LOGGING
 
 The level of logging output of the various command line tools and underlying
 libraries can be specified by the user.  By default, only errors and warnings
@@ -658,7 +674,7 @@ messages to a particular output stream and for filtering certain messages
 based on the module or application where they are generated.  An example
 configuration file is provided in <em>\<etcdir\>/logger.cfg</em>.
 
-\section command_line COMMAND LINE
+\section movescu_command_line COMMAND LINE
 
 All command line tools use the following notation for parameters: square
 brackets enclose optional values (0-1), three trailing dots indicate that
@@ -680,7 +696,37 @@ allows one to summarize common combinations of options/parameters and avoids
 longish and confusing command lines (an example is provided in file
 <em>\<datadir\>/dumppat.txt</em>).
 
-\section environment ENVIRONMENT
+\section movescu_exit_codes EXIT CODES
+
+The \b movescu utility uses the following exit codes when terminating. This
+enables the user to check for the reason why the application terminated.
+
+\subsection movescu_exit_codes_general general
+\verbatim
+EXITCODE_NO_ERROR                         0
+EXITCODE_COMMANDLINE_SYNTAX_ERROR         1
+EXITCODE_INSUFFICIENT_PRIVILEGES          2
+EXITCODE_SETUID_FAILED                    3
+\endverbatim
+
+\subsection movescu_exit_codes_output_file_errors output file errors
+\verbatim
+EXITCODE_CANNOT_WRITE_OUTPUT_FILE        40
+EXITCODE_INVALID_OUTPUT_DIRECTORY        45
+\endverbatim
+
+\subsection movescu_exit_codes_network_errors network errors
+\verbatim
+EXITCODE_CANNOT_INITIALIZE_NETWORK       60
+EXITCODE_CANNOT_NEGOTIATE_ASSOCIATION    61
+EXITCODE_CANNOT_CREATE_ASSOC_PARAMETERS  65
+EXITCODE_NO_PRESENTATION_CONTEXT         66
+EXITCODE_CANNOT_CLOSE_ASSOCIATION        67
+EXITCODE_CMOVE_WARNING                   68
+EXITCODE_CMOVE_ERROR                     69
+\endverbatim
+
+\section movescu_environment ENVIRONMENT
 
 The \b movescu utility will attempt to load DICOM data dictionaries specified
 in the \e DCMDICTPATH environment variable.  By default, i.e. if the
@@ -696,12 +742,12 @@ a semicolon (";") is used as a separator.  The data dictionary code will
 attempt to load each file specified in the \e DCMDICTPATH environment variable.
 It is an error if no data dictionary can be loaded.
 
-\section see_also SEE ALSO
+\section movescu_see_also SEE ALSO
 
 <b>findscu</b>(1), <b>storescp</b>(1), <b>dump2dcm</b>(1)
 
-\section copyright COPYRIGHT
+\section movescu_copyright COPYRIGHT
 
-Copyright (C) 1994-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1994-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmnet/docs/storescp.man b/dcmnet/docs/storescp.man
index 1d58a38..7ffa49f 100644
--- a/dcmnet/docs/storescp.man
+++ b/dcmnet/docs/storescp.man
@@ -6,13 +6,13 @@
 \page storescp storescp: DICOM storage (C-STORE) SCP
 \endif
 
-\section synopsis SYNOPSIS
+\section storescp_synopsis SYNOPSIS
 
 \verbatim
 storescp [options] [port]
 \endverbatim
 
-\section description DESCRIPTION
+\section storescp_description DESCRIPTION
 
 The \b storescp application implements a Service Class Provider (SCP) for the
 Storage Service Class.  It listens on a specific TCP/IP port for incoming
@@ -20,16 +20,16 @@ association requests from a Storage Service Class User (SCU) and can receive
 both DICOM images and other DICOM composite objects.  The \b storescp
 application also supports the Verification Service Class as an SCP.
 
-\section parameters PARAMETERS
+\section storescp_parameters PARAMETERS
 
 \verbatim
 port  tcp/ip port number to listen on
       (this parameter is required unless the --inetd option is specified)
 \endverbatim
 
-\section options OPTIONS
+\section storescp_options OPTIONS
 
-\subsection general_options general options
+\subsection storescp_general_options general options
 \verbatim
   -h    --help
           print this help text and exit
@@ -60,7 +60,7 @@ port  tcp/ip port number to listen on
           show presentation contexts in verbose mode
 \endverbatim
 
-\subsection multi_process_options multi-process options
+\subsection storescp_multi_process_options multi-process options
 \verbatim
         --single-process
           single process mode (default)
@@ -69,7 +69,7 @@ port  tcp/ip port number to listen on
           fork child process for each association
 \endverbatim
 
-\subsection network_options network options
+\subsection storescp_network_options network options
 \verbatim
 association negotiation profile from configuration file:
 
@@ -120,6 +120,15 @@ preferred network transfer syntaxes (not with --config-file):
   +xl   --prefer-mpeg4-bd
           prefer MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS
 
+  +x2   --prefer-mpeg4-2-2d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos
+
+  +x3   --prefer-mpeg4-2-3d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos
+
+  +xo   --prefer-mpeg4-2-st
+          prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS
+
   +xr   --prefer-rle
           prefer RLE lossless TS
 
@@ -147,6 +156,9 @@ other network options:
 
           # not available on all systems (e.g. not on Windows)
 
+  -ts   --socket-timeout  [s]econds: integer (default: 60)
+          timeout for network socket (0 for none)
+
   -ta   --acse-timeout  [s]econds: integer (default: 30)
           timeout for ACSE messages
 
@@ -192,7 +204,7 @@ other network options:
           silently correct space-padded UIDs
 \endverbatim
 
-\subsection tls_options transport layer security (TLS) options
+\subsection storescp_tls_options transport layer security (TLS) options
 \verbatim
 transport protocol stack:
 
@@ -261,7 +273,7 @@ peer authentication:
 \endverbatim
 
 
-\subsection output_options output options
+\subsection storescp_output_options output options
 \verbatim
 general:
 
@@ -370,7 +382,7 @@ filename generation:
           append e to all filenames
 \endverbatim
 
-\subsection event_options event options
+\subsection storescp_event_options event options
 \verbatim
   -xcr  --exec-on-reception  [c]ommand: string
           execute command c after having received and processed
@@ -393,7 +405,7 @@ filename generation:
           execute command synchronously in foreground
 \endverbatim
 
-\section notes NOTES
+\section storescp_notes NOTES
 
 The semantic impacts of the above mentioned options is clear for the majority
 of options.  Some particular options, however, are so specific that they need
@@ -527,7 +539,7 @@ different study is received or the \e --eostudy-timeout is reached.  For this
 reason, the options \e --fork and \e --inet are incompatible with
 \e --exec-on-eostudy, \e --rename-on-eostudy and \e --sort-conc-studies.
 
-\subsection dicom_conformance DICOM Conformance
+\subsection storescp_dicom_conformance DICOM Conformance
 
 The \b storescp application supports the following SOP Classes as an SCP:
 
@@ -654,6 +666,7 @@ RadiopharmaceuticalRadiationDoseSRStorage            1.2.840.10008.5.1.4.1.1.88.
 ColonCADSRStorage                                    1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.70
 AcquisitionContextSRStorage                          1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                         1.2.840.10008.5.1.4.1.1.88.72
 ContentAssessmentResultsStorage                      1.2.840.10008.5.1.4.1.1.90.1
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
@@ -662,6 +675,8 @@ LegacyConvertedEnhancedPETImageStorage               1.2.840.10008.5.1.4.1.1.128
 RETIRED_StandalonePETCurveStorage                    1.2.840.10008.5.1.4.1.1.129
 EnhancedPETImageStorage                              1.2.840.10008.5.1.4.1.1.130
 BasicStructuredDisplayStorage                        1.2.840.10008.5.1.4.1.1.131
+CTDefinedProcedureProtocolStorage                    1.2.840.10008.5.1.4.1.1.200.1
+CTPerformedProcedureProtocolStorage                  1.2.840.10008.5.1.4.1.1.200.2
 RTImageStorage                                       1.2.840.10008.5.1.4.1.1.481.1
 RTDoseStorage                                        1.2.840.10008.5.1.4.1.1.481.2
 RTStructureSetStorage                                1.2.840.10008.5.1.4.1.1.481.3
@@ -683,9 +698,6 @@ DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601
 DRAFT_RTBeamsDeliveryInstructionStorage              1.2.840.10008.5.1.4.34.1
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
 RTBrachyApplicationSetupDeliveryInstructionStorage   1.2.840.10008.5.1.4.34.10
-GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
-ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
-ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
 \endverbatim
 
 The \b storescp application will accept presentation contexts for all of the
@@ -724,6 +736,8 @@ MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
 MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
 MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
 MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
+HEVCMainProfileLevel5_1TransferSyntax                1.2.840.10008.1.2.4.107
+HEVCMain10ProfileLevel5_1TransferSyntax              1.2.840.10008.1.2.4.108
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 \endverbatim
 
@@ -735,7 +749,7 @@ However, using an appropriate association negotiation profile (see below)
 the optional support for extended negotiation can be added to particular SOP
 classes.
 
-\subsection access_control Access Control
+\subsection storescp_access_control Access Control
 
 When compiled on Unix platforms with TCP wrapper support, host-based access
 control can be enabled with the \e --access-control command line option.  In
@@ -744,7 +758,7 @@ tables for \b storescp are enforced.  The default locations of the host access
 control tables are <em>/etc/hosts.allow</em> and <em>/etc/hosts.deny</em>.
 Further details are described in <b>hosts_access</b>(5).
 
-\subsection running_from_inetd Running storescp from inetd
+\subsection storescp_running_from_inetd Running storescp from inetd
 
 On Posix platforms, \b storescp can be initiated through the inetd(8) super
 server.  This requires that \b storescp be configured in the
@@ -769,14 +783,14 @@ option (see below).
 Please note that when run through inetd, \b storescp is executed with root
 privileges, which may be a security risk.
 
-\subsection profiles Association Negotiation Profiles and Configuration Files
+\subsection storescp_profiles Association Negotiation Profiles and Configuration Files
 
 \b storescp supports a flexible mechanism for specifying the DICOM network
 association negotiation behavior, based on so-called "association negotiation
 profiles" which may be read from a configuration file.  The format and
 semantics of this configuration file are documented in \e asconfig.txt.
 
-\section logging LOGGING
+\section storescp_logging LOGGING
 
 The level of logging output of the various command line tools and underlying
 libraries can be specified by the user.  By default, only errors and warnings
@@ -795,7 +809,7 @@ messages to a particular output stream and for filtering certain messages
 based on the module or application where they are generated.  An example
 configuration file is provided in <em>\<etcdir\>/logger.cfg</em>.
 
-\section command_line COMMAND LINE
+\section storescp_command_line COMMAND LINE
 
 All command line tools use the following notation for parameters: square
 brackets enclose optional values (0-1), three trailing dots indicate that
@@ -817,7 +831,7 @@ allows one to summarize common combinations of options/parameters and avoids
 longish and confusing command lines (an example is provided in file
 <em>\<datadir\>/dumppat.txt</em>).
 
-\section environment ENVIRONMENT
+\section storescp_environment ENVIRONMENT
 
 The \b storescp utility will attempt to load DICOM data dictionaries specified
 in the \e DCMDICTPATH environment variable.  By default, i.e. if the
@@ -833,17 +847,17 @@ a semicolon (";") is used as a separator.  The data dictionary code will
 attempt to load each file specified in the \e DCMDICTPATH environment variable.
 It is an error if no data dictionary can be loaded.
 
-\section files FILES
+\section storescp_files FILES
 
 <em>\<docdir\>/asconfig.txt</em> - configuration file documentation
 \n<em>\<etcdir\>/storescp.cfg</em> - example association negotiation profile
 
-\section see_also SEE ALSO
+\section storescp_see_also SEE ALSO
 
 <b>storescu</b>(1)
 
-\section copyright COPYRIGHT
+\section storescp_copyright COPYRIGHT
 
-Copyright (C) 1996-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1996-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmnet/docs/storescu.man b/dcmnet/docs/storescu.man
index 786b280..6fcfdd0 100644
--- a/dcmnet/docs/storescu.man
+++ b/dcmnet/docs/storescu.man
@@ -6,13 +6,13 @@
 \page storescu storescu: DICOM storage (C-STORE) SCU
 \endif
 
-\section synopsis SYNOPSIS
+\section storescu_synopsis SYNOPSIS
 
 \verbatim
 storescu [options] peer port dcmfile-in...
 \endverbatim
 
-\section description DESCRIPTION
+\section storescu_description DESCRIPTION
 
 The \b storescu application implements a Service Class User (SCU) for the
 Storage Service Class.  For each DICOM file on the command line it sends
@@ -20,7 +20,7 @@ a C-STORE message to a Storage Service Class Provider (SCP) and waits for a
 response.  The application can be used to transmit DICOM images and other
 DICOM composite objects.
 
-\section parameters PARAMETERS
+\section storescu_parameters PARAMETERS
 
 \verbatim
 peer        hostname of DICOM peer
@@ -30,9 +30,9 @@ port        tcp/ip port number of peer
 dcmfile-in  DICOM file or directory to be transmitted
 \endverbatim
 
-\section options OPTIONS
+\section storescu_options OPTIONS
 
-\subsection general_options general options
+\subsection storescu_general_options general options
 \verbatim
   -h    --help
           print this help text and exit
@@ -63,7 +63,7 @@ dcmfile-in  DICOM file or directory to be transmitted
           show presentation contexts in verbose mode
 \endverbatim
 
-\subsection input_options input options
+\subsection storescu_input_options input options
 \verbatim
 input file format:
 
@@ -93,7 +93,7 @@ input files:
           recurse within specified directories
 \endverbatim
 
-\subsection network_options network options
+\subsection storescu_network_options network options
 \verbatim
 application entity titles:
 
@@ -163,6 +163,15 @@ proposed transmission transfer syntaxes (not with --config-file):
   -xl   --propose-mpeg4-bd
           propose MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS only
 
+  -x2   --propose-mpeg4-2-2d
+          propose MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos only
+
+  -x3   --propose-mpeg4-2-3d
+          propose MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos only
+
+  -xo   --propose-mpeg4-2-st
+          propose MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS only
+
   -xr   --propose-rle
           propose RLE lossless TS
           and all uncompressed transfer syntaxes
@@ -217,6 +226,9 @@ other network options:
   -to   --timeout  [s]econds: integer (default: unlimited)
           timeout for connection requests
 
+  -ts   --socket-timeout  [s]econds: integer (default: 60)
+          timeout for network socket (0 for none)
+
   -ta   --acse-timeout  [s]econds: integer (default: 30)
           timeout for ACSE messages
 
@@ -258,7 +270,7 @@ other network options:
           (default: 25)
 \endverbatim
 
-\subsection tls_options transport layer security (TLS) options
+\subsection storescu_tls_options transport layer security (TLS) options
 \verbatim
 transport protocol stack:
 
@@ -329,9 +341,9 @@ peer authentication:
           don't verify peer certificate
 \endverbatim
 
-\section notes NOTES
+\section storescu_notes NOTES
 
-\subsection scanning_directories Scanning Directories
+\subsection storescu_scanning_directories Scanning Directories
 
 Adding directories as a parameter to the command line only makes sense if
 option \e --scan-directories is also given.  If the files in the provided
@@ -342,7 +354,7 @@ directories, and, if any other patterns are specified on the command line
 outside the \e --scan-pattern option (e.g. in order to select further
 files), these do not apply to the specified directories.
 
-\subsection dicom_conformance DICOM Conformance
+\subsection storescu_dicom_conformance DICOM Conformance
 
 The \b storescu application supports the following Storage SOP Classes as an
 SCU:
@@ -439,6 +451,9 @@ MPEG2MainProfileAtMainLevelTransferSyntax            1.2.840.10008.1.2.4.100
 MPEG2MainProfileAtHighLevelTransferSyntax            1.2.840.10008.1.2.4.101
 MPEG4HighProfileLevel4_1TransferSyntax               1.2.840.10008.1.2.4.102
 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
+MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
+MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
+MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 \endverbatim
 
@@ -450,7 +465,7 @@ However, using an appropriate association negotiation profile (see below)
 the optional support for extended negotiation can be added to particular SOP
 classes.
 
-\subsection profiles Association Negotiation Profiles and Configuration Files
+\subsection storescu_profiles Association Negotiation Profiles and Configuration Files
 
 \b storescu supports a flexible mechanism for specifying the DICOM network
 association negotiation behavior, based on so-called "association
@@ -458,7 +473,7 @@ negotiation profiles" which may be read from a configuration file.
 The format and semantics of this configuration file are documented in
 \e asconfig.txt.
 
-\section logging LOGGING
+\section storescu_logging LOGGING
 
 The level of logging output of the various command line tools and underlying
 libraries can be specified by the user.  By default, only errors and warnings
@@ -477,7 +492,7 @@ messages to a particular output stream and for filtering certain messages
 based on the module or application where they are generated.  An example
 configuration file is provided in <em>\<etcdir\>/logger.cfg</em>.
 
-\section command_line COMMAND LINE
+\section storescu_command_line COMMAND LINE
 
 All command line tools use the following notation for parameters: square
 brackets enclose optional values (0-1), three trailing dots indicate that
@@ -499,7 +514,7 @@ allows one to summarize common combinations of options/parameters and avoids
 longish and confusing command lines (an example is provided in file
 <em>\<datadir\>/dumppat.txt</em>).
 
-\section environment ENVIRONMENT
+\section storescu_environment ENVIRONMENT
 
 The \b storescu utility will attempt to load DICOM data dictionaries specified
 in the \e DCMDICTPATH environment variable.  By default, i.e. if the
@@ -515,17 +530,17 @@ a semicolon (";") is used as a separator.  The data dictionary code will
 attempt to load each file specified in the \e DCMDICTPATH environment variable.
 It is an error if no data dictionary can be loaded.
 
-\section files FILES
+\section storescu_files FILES
 
 <em>\<docdir\>/asconfig.txt</em> - configuration file documentation
 \n<em>\<etcdir\>/storescu.cfg</em> - example association negotiation profile
 
-\section see_also SEE ALSO
+\section storescu_see_also SEE ALSO
 
 <b>storescp</b>(1)
 
-\section copyright COPYRIGHT
+\section storescu_copyright COPYRIGHT
 
-Copyright (C) 1996-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1996-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmnet/docs/termscu.man b/dcmnet/docs/termscu.man
index fe61fbe..6988de9 100644
--- a/dcmnet/docs/termscu.man
+++ b/dcmnet/docs/termscu.man
@@ -6,13 +6,13 @@
 \page termscu termscu: DICOM termination SCU
 \endif
 
-\section synopsis SYNOPSIS
+\section termscu_synopsis SYNOPSIS
 
 \verbatim
 termscu [options] peer port
 \endverbatim
 
-\section description DESCRIPTION
+\section termscu_description DESCRIPTION
 
 The \b termscu application implements a Service Class User (SCU) for DCMTK's
 private Shutdown SOP Class.  It tries to negotiate this private Shutdown SOP
@@ -20,7 +20,7 @@ Class with a Service Class Provider (SCP) which (if this feature is
 implemented) will immediately shutdown after refusing the association.
 The application can be used to shutdown some of DCMTK's server applications.
 
-\section parameters PARAMETERS
+\section termscu_parameters PARAMETERS
 
 \verbatim
 peer  hostname of DICOM peer
@@ -28,9 +28,9 @@ peer  hostname of DICOM peer
 port  tcp/ip port number of peer
 \endverbatim
 
-\section options OPTIONS
+\section termscu_options OPTIONS
 
-\subsection general_options general options
+\subsection termscu_general_options general options
 \verbatim
   -h    --help
           print this help text and exit
@@ -58,7 +58,7 @@ port  tcp/ip port number of peer
           use config file f for the logger
 \endverbatim
 
-\subsection network_options network options
+\subsection termscu_network_options network options
 \verbatim
 application entity titles:
 
@@ -74,9 +74,9 @@ other network options:
           set max receive pdu to n bytes (default: 16384)
 \endverbatim
 
-\section notes NOTES
+\section termscu_notes NOTES
 
-\subsection dicom_conformance DICOM Conformance
+\subsection termscu_dicom_conformance DICOM Conformance
 
 The \b termscu application supports the following SOP Classes as an SCU:
 
@@ -84,7 +84,7 @@ The \b termscu application supports the following SOP Classes as an SCU:
 PrivateShutdownSOPClass  1.2.276.0.7230010.3.4.1915765545.18030.917282194.0
 \endverbatim
 
-\section logging LOGGING
+\section termscu_logging LOGGING
 
 The level of logging output of the various command line tools and underlying
 libraries can be specified by the user.  By default, only errors and warnings
@@ -103,7 +103,7 @@ messages to a particular output stream and for filtering certain messages
 based on the module or application where they are generated.  An example
 configuration file is provided in <em>\<etcdir\>/logger.cfg</em>.
 
-\section command_line COMMAND LINE
+\section termscu_command_line COMMAND LINE
 
 All command line tools use the following notation for parameters: square
 brackets enclose optional values (0-1), three trailing dots indicate that
@@ -125,7 +125,7 @@ allows one to summarize common combinations of options/parameters and avoids
 longish and confusing command lines (an example is provided in file
 <em>\<datadir\>/dumppat.txt</em>).
 
-\section environment ENVIRONMENT
+\section termscu_environment ENVIRONMENT
 
 The \b termscu utility will attempt to load DICOM data dictionaries specified
 in the \e DCMDICTPATH environment variable.  By default, i.e. if the
@@ -141,8 +141,8 @@ a semicolon (";") is used as a separator.  The data dictionary code will
 attempt to load each file specified in the \e DCMDICTPATH environment variable.
 It is an error if no data dictionary can be loaded.
 
-\section copyright COPYRIGHT
+\section termscu_copyright COPYRIGHT
 
-Copyright (C) 2005-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2005-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmnet/etc/storescp.cfg b/dcmnet/etc/storescp.cfg
index 03959da..ad6cea6 100644
--- a/dcmnet/etc/storescp.cfg
+++ b/dcmnet/etc/storescp.cfg
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2003-2016, OFFIS e.V.
+#  Copyright (C) 2003-2017, OFFIS e.V.
 #  All rights reserved.  See COPYRIGHT file for details.
 #
 #  This software and supporting documentation were developed by
@@ -11,7 +11,7 @@
 #
 #  Module:  dcmnet
 #
-#  Author:  Marco Eichelberg
+#  Author:  Marco Eichelberg, Joerg Riesmeier
 #
 #  Purpose: Sample configuration file for storescp
 #
@@ -47,10 +47,12 @@ TransferSyntax12 = MPEG4BDcompatibleHighProfile/Level4.1
 TransferSyntax13 = MPEG4HighProfile/Level4.2For2DVideo
 TransferSyntax14 = MPEG4HighProfile/Level4.2For3DVideo
 TransferSyntax15 = MPEG4StereoHighProfile/Level4.2
-TransferSyntax16 = DeflatedLittleEndianExplicit
-TransferSyntax17 = LocalEndianExplicit
-TransferSyntax18 = OppositeEndianExplicit
-TransferSyntax19 = LittleEndianImplicit
+TransferSyntax16 = HEVCMainProfile/Level5.1
+TransferSyntax17 = HEVCMain10Profile/Level5.1
+TransferSyntax18 = DeflatedLittleEndianExplicit
+TransferSyntax19 = LocalEndianExplicit
+TransferSyntax20 = OppositeEndianExplicit
+TransferSyntax21 = LittleEndianImplicit
 
 # ============================================================================
 [[PresentationContexts]]
@@ -204,16 +206,21 @@ PresentationContext128 = DRAFT_WaveformStorage\UncompressedOrZlib
 # - AcquisitionContextSRStorage
 # - BreastProjectionXRayImageStorageForPresentation
 # - BreastProjectionXRayImageStorageForProcessing
+# - ColorPaletteStorage
 # - CompositingPlanarMPRVolumetricPresentationStateStorage
 # - ContentAssessmentResultsStorage
+# - CTDefinedProcedureProtocolStorage
+# - CTPerformedProcedureProtocolStorage
 # - ExtensibleSRStorage
 # - GrayscalePlanarMPRVolumetricPresentationStateStorage
+# - HangingProtocolStorage
 # - LegacyConvertedEnhancedCTImageStorage
 # - LegacyConvertedEnhancedMRImageStorage
 # - LegacyConvertedEnhancedPETImageStorage
 # - ParametricMapStorage
 # - RadiopharmaceuticalRadiationDoseSRStorage
 # - RTBrachyApplicationSetupDeliveryInstructionStorage
+# - SimplifiedAdultEchoSRStorage
 # - TractographyResultsStorage
 # - WideFieldOphthalmicPhotographyStereographicProjectionImageStorage
 # - WideFieldOphthalmicPhotography3DCoordinatesImageStorage
@@ -229,9 +236,194 @@ PresentationContext128 = DRAFT_WaveformStorage\UncompressedOrZlib
 # - DICONDE_EddyCurrentImageStorage
 # - DICONDE_EddyCurrentMultiframeImageStorage
 
+# ----------------------------------------------------------------------------
+
+[AllDICOMStorageSCP]
+#
+# Same as "GenericStorageSCP" but limited to non-retired and non-draft SOP Classes.
+# This allows for accepting all DICOM Storage SOP Classes that are currently defined
+# in the standard (an exception is made for some non-patient DICOM objects because
+# of the limitation of 128 Presentation Contexts for SCPs, see DCMTK Feature # 540).
+#
+PresentationContext1   = VerificationSOPClass\Uncompressed
+#
+# DICOM images
+#
+PresentationContext2   = BreastProjectionXRayImageStorageForPresentation\AnyTransferSyntax
+PresentationContext3   = BreastProjectionXRayImageStorageForProcessing\AnyTransferSyntax
+PresentationContext4   = BreastTomosynthesisImageStorage\AnyTransferSyntax
+PresentationContext5   = ComputedRadiographyImageStorage\AnyTransferSyntax
+PresentationContext6   = CornealTopographyMapStorage\AnyTransferSyntax
+PresentationContext7   = CTImageStorage\AnyTransferSyntax
+PresentationContext8   = DigitalIntraOralXRayImageStorageForPresentation\AnyTransferSyntax
+PresentationContext9   = DigitalIntraOralXRayImageStorageForProcessing\AnyTransferSyntax
+PresentationContext10  = DigitalMammographyXRayImageStorageForPresentation\AnyTransferSyntax
+PresentationContext11  = DigitalMammographyXRayImageStorageForProcessing\AnyTransferSyntax
+PresentationContext12  = DigitalXRayImageStorageForPresentation\AnyTransferSyntax
+PresentationContext13  = DigitalXRayImageStorageForProcessing\AnyTransferSyntax
+PresentationContext14  = EnhancedCTImageStorage\AnyTransferSyntax
+PresentationContext15  = EnhancedMRColorImageStorage\AnyTransferSyntax
+PresentationContext16  = EnhancedMRImageStorage\AnyTransferSyntax
+PresentationContext17  = EnhancedPETImageStorage\AnyTransferSyntax
+PresentationContext18  = EnhancedUSVolumeStorage\AnyTransferSyntax
+PresentationContext19  = EnhancedXAImageStorage\AnyTransferSyntax
+PresentationContext20  = EnhancedXRFImageStorage\AnyTransferSyntax
+PresentationContext21  = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax
+PresentationContext22  = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax
+PresentationContext23  = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax
+PresentationContext24  = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax
+PresentationContext25  = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax
+PresentationContext26  = MRImageStorage\AnyTransferSyntax
+PresentationContext27  = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext28  = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext29  = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext30  = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext31  = NuclearMedicineImageStorage\AnyTransferSyntax
+PresentationContext32  = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax
+PresentationContext33  = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax
+PresentationContext34  = OphthalmicThicknessMapStorage\AnyTransferSyntax
+PresentationContext35  = OphthalmicTomographyImageStorage\AnyTransferSyntax
+PresentationContext36  = ParametricMapStorage\AnyTransferSyntax
+PresentationContext37  = PositronEmissionTomographyImageStorage\AnyTransferSyntax
+PresentationContext38  = RTImageStorage\AnyTransferSyntax
+PresentationContext39  = SecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext40  = UltrasoundImageStorage\AnyTransferSyntax
+PresentationContext41  = UltrasoundMultiframeImageStorage\AnyTransferSyntax
+PresentationContext42  = VideoEndoscopicImageStorage\AnyTransferSyntax
+PresentationContext43  = VideoMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext44  = VideoPhotographicImageStorage\AnyTransferSyntax
+PresentationContext45  = VLEndoscopicImageStorage\AnyTransferSyntax
+PresentationContext46  = VLMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext47  = VLPhotographicImageStorage\AnyTransferSyntax
+PresentationContext48  = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext49  = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax
+PresentationContext50  = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax
+PresentationContext51  = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax
+PresentationContext52  = XRay3DAngiographicImageStorage\AnyTransferSyntax
+PresentationContext53  = XRay3DCraniofacialImageStorage\AnyTransferSyntax
+PresentationContext54  = XRayAngiographicImageStorage\AnyTransferSyntax
+PresentationContext55  = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax
+#
+# all other DICOM objects
+#
+PresentationContext56  = AcquisitionContextSRStorage\UncompressedOrZlib
+PresentationContext57  = AmbulatoryECGWaveformStorage\UncompressedOrZlib
+PresentationContext58  = ArterialPulseWaveformStorage\UncompressedOrZlib
+PresentationContext59  = AutorefractionMeasurementsStorage\UncompressedOrZlib
+PresentationContext60  = BasicStructuredDisplayStorage\UncompressedOrZlib
+PresentationContext61  = BasicTextSRStorage\UncompressedOrZlib
+PresentationContext62  = BasicVoiceAudioWaveformStorage\UncompressedOrZlib
+PresentationContext63  = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext64  = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib
+PresentationContext65  = ChestCADSRStorage\UncompressedOrZlib
+PresentationContext66  = ColonCADSRStorage\UncompressedOrZlib
+PresentationContext67  = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext68  = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext69  = Comprehensive3DSRStorage\UncompressedOrZlib
+PresentationContext70  = ComprehensiveSRStorage\UncompressedOrZlib
+PresentationContext71  = ContentAssessmentResultsStorage\UncompressedOrZlib
+PresentationContext72  = CTDefinedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext73  = CTPerformedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext74  = DeformableSpatialRegistrationStorage\UncompressedOrZlib
+PresentationContext75  = EncapsulatedCDAStorage\UncompressedOrZlib
+PresentationContext76  = EncapsulatedPDFStorage\UncompressedOrZlib
+PresentationContext77  = EnhancedSRStorage\UncompressedOrZlib
+PresentationContext78  = ExtensibleSRStorage\UncompressedOrZlib
+PresentationContext79  = GeneralAudioWaveformStorage\UncompressedOrZlib
+PresentationContext80  = GeneralECGWaveformStorage\UncompressedOrZlib
+PresentationContext81  = GenericImplantTemplateStorage\UncompressedOrZlib
+PresentationContext82  = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext83  = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext84  = HangingProtocolStorage\UncompressedOrZlib
+PresentationContext85  = HemodynamicWaveformStorage\UncompressedOrZlib
+PresentationContext86  = ImplantAssemblyTemplateStorage\UncompressedOrZlib
+PresentationContext87  = ImplantationPlanSRDocumentStorage\UncompressedOrZlib
+PresentationContext88  = ImplantTemplateGroupStorage\UncompressedOrZlib
+PresentationContext89  = IntraocularLensCalculationsStorage\UncompressedOrZlib
+PresentationContext90  = KeratometryMeasurementsStorage\UncompressedOrZlib
+PresentationContext91  = KeyObjectSelectionDocumentStorage\UncompressedOrZlib
+PresentationContext92  = LensometryMeasurementsStorage\UncompressedOrZlib
+PresentationContext93  = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib
+PresentationContext94  = MammographyCADSRStorage\UncompressedOrZlib
+PresentationContext95  = MRSpectroscopyStorage\UncompressedOrZlib
+PresentationContext96  = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib
+PresentationContext97  = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib
+PresentationContext98  = ProcedureLogStorage\UncompressedOrZlib
+PresentationContext99  = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext100 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext101 = RawDataStorage\UncompressedOrZlib
+PresentationContext102 = RealWorldValueMappingStorage\UncompressedOrZlib
+PresentationContext103 = RespiratoryWaveformStorage\UncompressedOrZlib
+PresentationContext104 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext105 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext106 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext107 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext108 = RTDoseStorage\UncompressedOrZlib
+PresentationContext109 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext110 = RTIonPlanStorage\UncompressedOrZlib
+PresentationContext111 = RTPlanStorage\UncompressedOrZlib
+PresentationContext112 = RTStructureSetStorage\UncompressedOrZlib
+PresentationContext113 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib
+PresentationContext114 = SegmentationStorage\UncompressedOrZlib
+PresentationContext115 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib
+PresentationContext116 = SpatialFiducialsStorage\UncompressedOrZlib
+PresentationContext117 = SpatialRegistrationStorage\UncompressedOrZlib
+PresentationContext118 = SpectaclePrescriptionReportStorage\UncompressedOrZlib
+PresentationContext119 = StereometricRelationshipStorage\UncompressedOrZlib
+PresentationContext120 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib
+PresentationContext121 = SurfaceScanMeshStorage\UncompressedOrZlib
+PresentationContext122 = SurfaceScanPointCloudStorage\UncompressedOrZlib
+PresentationContext123 = SurfaceSegmentationStorage\UncompressedOrZlib
+PresentationContext124 = TractographyResultsStorage\UncompressedOrZlib
+PresentationContext125 = TwelveLeadECGWaveformStorage\UncompressedOrZlib
+PresentationContext126 = VisualAcuityMeasurementsStorage\UncompressedOrZlib
+PresentationContext127 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext128 = XRayRadiationDoseSRStorage\UncompressedOrZlib
+#
+# the following SOP classes are missing in the above list:
+#
+# - ColorPaletteStorage
+#
+# - RETIRED_HardcopyColorImageStorage
+# - RETIRED_HardcopyGrayscaleImageStorage
+# - RETIRED_NuclearMedicineImageStorage
+# - RETIRED_UltrasoundImageStorage
+# - RETIRED_UltrasoundMultiframeImageStorage
+# - RETIRED_VLImageStorage
+# - RETIRED_VLMultiFrameImageStorage
+# - RETIRED_XRayAngiographicBiPlaneImageStorage
+#
+# - RETIRED_StandaloneCurveStorage
+# - RETIRED_StandaloneModalityLUTStorage
+# - RETIRED_StandaloneOverlayStorage
+# - RETIRED_StandalonePETCurveStorage
+# - RETIRED_StandaloneVOILUTStorage
+# - RETIRED_StoredPrintStorage
+#
+# - DRAFT_RTBeamsDeliveryInstructionStorage
+# - DRAFT_SRAudioStorage
+# - DRAFT_SRComprehensiveStorage
+# - DRAFT_SRDetailStorage
+# - DRAFT_SRTextStorage
+# - DRAFT_WaveformStorage
+#
+# - DICOS_2DAITStorage
+# - DICOS_3DAITStorage
+# - DICOS_CTImageStorage
+# - DICOS_DigitalXRayImageStorageForPresentation
+# - DICOS_DigitalXRayImageStorageForProcessing
+# - DICOS_QuadrupoleResonanceStorage
+# - DICOS_ThreatDetectionReportStorage
+#
+# - DICONDE_EddyCurrentImageStorage
+# - DICONDE_EddyCurrentMultiframeImageStorage
+
 # ============================================================================
 [[Profiles]]
 # ============================================================================
 
 [Default]
 PresentationContexts = GenericStorageSCP
+
+[AllDICOM]
+PresentationContexts = AllDICOMStorageSCP
diff --git a/dcmnet/etc/storescu.cfg b/dcmnet/etc/storescu.cfg
index 5b655d2..a42412f 100644
--- a/dcmnet/etc/storescu.cfg
+++ b/dcmnet/etc/storescu.cfg
@@ -211,6 +211,8 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - Comprehensive3DSRStorage
 # - ContentAssessmentResultsStorage
 # - CornealTopographyMapStorage
+# - CTDefinedProcedureProtocolStorage
+# - CTPerformedProcedureProtocolStorage
 # - DeformableSpatialRegistrationStorage
 # - EncapsulatedCDAStorage
 # - EnhancedMRColorImageStorage
@@ -245,6 +247,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - RTIonBeamsTreatmentRecordStorage
 # - RTIonPlanStorage
 # - SegmentationStorage
+# - SimplifiedAdultEchoSRStorage
 # - SpectaclePrescriptionReportStorage
 # - SubjectiveRefractionMeasurementsStorage
 # - SurfaceScanMeshStorage
diff --git a/dcmnet/include/dcmtk/dcmnet/assoc.h b/dcmnet/include/dcmtk/dcmnet/assoc.h
index 240684d..ab6c453 100644
--- a/dcmnet/include/dcmtk/dcmnet/assoc.h
+++ b/dcmnet/include/dcmtk/dcmnet/assoc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -440,7 +440,7 @@ ASC_setIdentRQUserPassword(
     T_ASC_Parameters * params,
     const OFString& userName,
     const OFString& password,
-    const OFBool& requestRsp = OFTrue);
+    const OFBool requestRsp = OFTrue);
 
 /** Sets User authentication (no password) for User Identity Negotiation
  *  request.
@@ -452,7 +452,7 @@ DCMTK_DCMNET_EXPORT OFCondition
 ASC_setIdentRQUserOnly(
     T_ASC_Parameters * params,
     const OFString& userName,
-    const OFBool& requestRsp = OFTrue);
+    const OFBool requestRsp = OFTrue);
 
 /** Sets Kerberos authentication for User Identity Negotiation request.
  *  @param params     - [in/out] The association parameters to be filled
@@ -464,8 +464,8 @@ DCMTK_DCMNET_EXPORT OFCondition
 ASC_setIdentRQKerberos(
     T_ASC_Parameters * params,
     const char* kerbTicket,
-    const Uint16& length,
-    const OFBool& requestRsp = OFTrue);
+    const Uint16 length,
+    const OFBool requestRsp = OFTrue);
 
 /** Sets SAML authentication for User Identity Negotiation request.
  *  @param params - [in/out] The association parameters to be filled
@@ -477,8 +477,8 @@ DCMTK_DCMNET_EXPORT OFCondition
 ASC_setIdentRQSaml(
     T_ASC_Parameters * params,
     const char* saml,
-    const Uint16& length,
-    const OFBool& requestRsp = OFTrue);
+    const Uint16 length,
+    const OFBool requestRsp = OFTrue);
 
 
 /** Acknowledges a User Identity Negotiation request.
@@ -490,7 +490,7 @@ ASC_setIdentRQSaml(
 DCMTK_DCMNET_EXPORT OFCondition ASC_setIdentAC(
     T_ASC_Parameters * params,
     const char* response,
-    const Uint16& length );
+    const Uint16 length);
 
 /** Returns a copy of the User Identity Negotiation response value.
  *  CAUTION: The returned buffer (copy of original data) must be freed by the
diff --git a/dcmnet/include/dcmtk/dcmnet/cond.h b/dcmnet/include/dcmtk/dcmnet/cond.h
index ee7015f..11a3c12 100644
--- a/dcmnet/include/dcmtk/dcmnet/cond.h
+++ b/dcmnet/include/dcmtk/dcmnet/cond.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -193,6 +193,9 @@ extern DCMTK_DCMNET_EXPORT const OFConditionConst NET_EC_InsufficientPortPrivile
 // codes 1024 to 1073 are used for the association negotiation profile classes
 extern DCMTK_DCMNET_EXPORT const OFConditionConst NET_EC_SCPBusy;                          /* SCP is busy */
 extern DCMTK_DCMNET_EXPORT const OFConditionConst NET_EC_CannotStartSCPThread;             /* Cannot start SCP thread */
+extern DCMTK_DCMNET_EXPORT const OFConditionConst NET_EC_StopAfterAssociation;             /* Stop after current association (as requested) */
+extern DCMTK_DCMNET_EXPORT const OFConditionConst NET_EC_StopAfterConnectionTimeout;       /* Stop after TCP connection timeout (as requested) */
+
 
 // This macro creates a condition with given code, severity and text.
 // Making this a macro instead of a function saves the creation of a temporary.
diff --git a/dcmnet/include/dcmtk/dcmnet/dccfpcmp.h b/dcmnet/include/dcmtk/dcmnet/dccfpcmp.h
index 0c4540c..a08b9aa 100644
--- a/dcmnet/include/dcmtk/dcmnet/dccfpcmp.h
+++ b/dcmnet/include/dcmtk/dcmnet/dccfpcmp.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -15,7 +15,7 @@
  *
  *  Author:  Marco Eichelberg
  *
- *  Purpose: 
+ *  Purpose:
  *    class DcmPresentationContextItem
  *    class DcmPresentationContextMap
  *
@@ -48,7 +48,7 @@ public:
 
   /// copy constructor
   DcmPresentationContextItem(const DcmPresentationContextItem& arg);
- 
+
   /// destructor
   ~DcmPresentationContextItem();
 
@@ -88,7 +88,7 @@ public:
    */
   OFBool operator==(const DcmPresentationContextItem& arg) const
   {
-    return (uid_ == arg.uid_) && (xferSyntaxGroup_ == arg.xferSyntaxGroup_); 
+    return (uid_ == arg.uid_) && (xferSyntaxGroup_ == arg.xferSyntaxGroup_);
   }
 
 private:
@@ -154,9 +154,9 @@ public:
    *  @return EC_Normal if successful, an error code otherwise
    */
   OFCondition add(
-    const char *key,
-    const char *abstractSyntaxUID,
-    const char *transferSyntaxKey);
+    const OFString& key,
+    const OFString& abstractSyntaxUID,
+    const OFString& transferSyntaxKey);
 
   /** checks if the key is known
    *  @param key key name, must not be NULL
diff --git a/dcmnet/include/dcmtk/dcmnet/dcmtrans.h b/dcmnet/include/dcmtk/dcmnet/dcmtrans.h
index 54da8fb..97e9f10 100644
--- a/dcmnet/include/dcmtk/dcmnet/dcmtrans.h
+++ b/dcmnet/include/dcmtk/dcmnet/dcmtrans.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2011, OFFIS e.V.
+ *  Copyright (C) 1998-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -24,13 +24,34 @@
 #define DCMTRANS_H
 
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
-#include "dcmtk/ofstd/oftypes.h"     /* for OFBool */
+#include "dcmtk/ofstd/ofglobal.h"     /* for OFGlobal */
+#include "dcmtk/ofstd/oftypes.h"      /* for OFBool */
+#include "dcmtk/ofstd/ofstream.h"     /* for ostream */
 #include "dcmtk/dcmnet/dcmlayer.h"    /* for DcmTransportLayerStatus */
-#include "dcmtk/ofstd/ofstream.h"    /* for ostream */
 
 #define INCLUDE_UNISTD
 #include "dcmtk/ofstd/ofstdinc.h"
 
+/** Global timeout in seconds for sending data on a socket to a remote host.
+ *  The default value is 60, which is useful in cases where the sender (e.g.
+ *  storescu) looses the connection to the receiver because the network cable
+ *  is pulled (e.g. for a mobile device).
+ *  A value of 0 means that the send() will never timeout, and a value of -1
+ *  disables the call of the corresponding setsockopt() function, so that the
+ *  system's default behavior remains unchanged.
+ */
+extern DCMTK_DCMNET_EXPORT OFGlobal<Sint32> dcmSocketSendTimeout;   /* default: 60 */
+
+/** Global timeout in seconds for receiving data on a socket from a remote host.
+ *  The default value is 60, which is useful in cases where the receiver (e.g.
+ *  storescp) looses the connection to the sender because the network cable is
+ *  pulled (e.g. for a mobile device).
+ *  A value of 0 means that the recv() will never timeout, and a value of -1
+ *  disables the call of the corresponding setsockopt() function, so that the
+ *  system's default behavior remains unchanged.
+ */
+extern DCMTK_DCMNET_EXPORT OFGlobal<Sint32> dcmSocketReceiveTimeout;   /* default: 60 */
+
 /** this class represents a TCP/IP based transport connection
  *  which can be a transparent TCP/IP socket communication or a
  *  secure transport protocol such as TLS.
@@ -41,7 +62,7 @@ public:
 
   /** constructor.
    *  @param openSocket TCP/IP socket to be used for the transport connection.
-   *    the connection must already be establised on socket level. This object
+   *    the connection must already be established on socket level. This object
    *    takes over control of the socket.
    */
   DcmTransportConnection(int openSocket);
@@ -226,7 +247,7 @@ public:
 
   /** constructor.
    *  @param openSocket TCP/IP socket to be used for the transport connection.
-   *    the connection must already be establised on socket level. This object
+   *    the connection must already be established on socket level. This object
    *    takes over control of the socket.
    */
   DcmTCPConnection(int openSocket);
diff --git a/dcmnet/include/dcmtk/dcmnet/dcompat.h b/dcmnet/include/dcmtk/dcmnet/dcompat.h
index d30e91f..87a1667 100644
--- a/dcmnet/include/dcmtk/dcmnet/dcompat.h
+++ b/dcmnet/include/dcmtk/dcmnet/dcompat.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -214,17 +214,6 @@ DCMTK_DCMNET_EXPORT int gethostname(char* name, int namelen);
 #endif
 #endif
 
-#ifndef HAVE_PROTOTYPE_GETHOSTBYNAME
-#ifdef HAVE_GETHOSTBYNAME
-/* it is in the libraries but we have no prototype */
-BEGIN_EXTERN_C
-struct hostent *gethostbyname(const char* name);
-END_EXTERN_C
-#else
-/* don't know how to emulate */
-#endif
-#endif
-
 #ifndef HAVE_PROTOTYPE_GETSOCKOPT
 #ifdef HAVE_GETSOCKOPT
 /* it is in the libraries but we have no prototype */
@@ -364,8 +353,8 @@ DCMTK_DCMNET_EXPORT int access(const char* path, int amode);
 #ifndef R_OK
 #define W_OK 02 /* Write permission */
 #define R_OK 04 /* Read permission */
-#define F_OK 00 /* Existance only */
-#define X_OK 00 /* execute permission has no meaning under windows, treat as existance */
+#define F_OK 00 /* Existence only */
+#define X_OK 00 /* Execute permission has no meaning under Windows, treat as existence */
 #endif /* R_OK */
 #endif /* _WIN32 */
 
@@ -375,10 +364,6 @@ DCMTK_DCMNET_EXPORT int access(const char* path, int amode);
 DCMTK_DCMNET_EXPORT char *strerror(int e);
 #endif
 
-#ifndef HAVE_TEMPNAM
-DCMTK_DCMNET_EXPORT char *tempnam(char *dir, char *pfx);
-#endif
-
 #ifdef _WIN32
 #define NULL_DEVICE_NAME "nul"
 #else
diff --git a/dcmnet/include/dcmtk/dcmnet/dcuserid.h b/dcmnet/include/dcmtk/dcmnet/dcuserid.h
index f53d92d..5461952 100644
--- a/dcmnet/include/dcmtk/dcmnet/dcuserid.h
+++ b/dcmnet/include/dcmtk/dcmnet/dcuserid.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2008-2011, OFFIS e.V.
+ *  Copyright (C) 2008-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -27,8 +27,10 @@
 #include "dcmtk/ofstd/ofcond.h"
 #include "dcmtk/dcmnet/dndefine.h"
 
-/// User Identity Negotiation always identifies with 0x58
-#define DUL_TYPENEGOTIATIONOFUSERIDENTITY (unsigned char)0x58
+/// User Identity Negotiation request always identifies with 0x58
+#define DUL_TYPENEGOTIATIONOFUSERIDENTITY_REQ (unsigned char)0x58
+/// User Identity Negotiation acknowledge identifies with 0x59
+#define DUL_TYPENEGOTIATIONOFUSERIDENTITY_ACK (unsigned char)0x59
 
 /// Mode of User Identity Negotiation
 enum T_ASC_UserIdentityNegotiationMode
@@ -49,26 +51,29 @@ class DCMTK_DCMNET_EXPORT UserIdentityNegotiationSubItem {
 public:
 
   /** Constructor
+   *  @param itemType: Must be set to 0x58 for requests, 0x59 for
+   *         acknowledgements (done in constructors of sub classes)
    */
-  UserIdentityNegotiationSubItem();
+  UserIdentityNegotiationSubItem(const unsigned char itemType);
 
   /** Copy constructor. Needed to keep some compilers quiet.
    *  @param src item that should be copied from.
    */
-  UserIdentityNegotiationSubItem(const UserIdentityNegotiationSubItem& src) : 
-    m_itemType(src.m_itemType), 
+  UserIdentityNegotiationSubItem(const UserIdentityNegotiationSubItem& src) :
+    m_itemType(src.m_itemType),
     m_reserved(src.m_reserved)
   {
   }
 
   /** Denotes whether instance is part of a request (DUL_TYPEASSOCIATERQ)
-   *  or acknowledge PDU (DUL_TYPEASSOCIATEAC)
-   *  @return Constant for either request of ack message.
+   *  or acknowledgement PDU (DUL_TYPEASSOCIATEAC)
+   *  @return Constant for either request of acknowledgement message.
    */
   virtual unsigned char pduType() const =0;
 
-  /** Returns item type, which is constantly 0x58
-    * @return The item type = 0x58
+  /** Returns item type, which is 0x58 for requests, and 0x58 for
+   *  acknowledgements.
+    * @return The item type = 0x58 or 0x59
     */
   virtual unsigned char getItemType() const {return m_itemType;}
 
@@ -79,17 +84,17 @@ public:
   virtual unsigned char getReserved() const {return m_reserved;}
 
   /** Computes total length of item if streamed to a buffer
-    * @param length - [out] The total ength of the item in bytes
+    * @param length - [out] The total length of the item in bytes
     * @return EC_Normal if successful, error code otherwise
     */
   virtual OFCondition streamedLength(unsigned long& length) const = 0;
 
   /** Parse item from buffer. The buffer has to start with the correct user
    *  item type.
-   *  @param readBuffer - [in/out] The buffer to read from. The pointer to the buffer
-   *                      gets incremented by "bytesRead" bytes.
-   *  @param bytesRead  - [out] Number of bytes read by this function
-   *  @param availData  - [in] Size of the buffer.
+   *  @param readBuffer The buffer to read from (input and output). The pointer
+   *  to the buffer gets incremented by "bytesRead" bytes.
+   *  @param bytesRead Returns number of bytes read by this function
+   *  @param availData Size of the buffer for reading
    *  @return EC_Normal if successful, error code otherwise
    */
   virtual OFCondition parseFromBuffer(unsigned char *readBuffer,
@@ -97,8 +102,8 @@ public:
                                       unsigned long availData) =0;
 
   /** Stream the package into a byte stream for network transmission
-   *  @param targetBuffer - [out] The buffer to stream to.
-   *  @param lengthWritten - [out] Number of bytes written to buffer
+   *  @param targetBuffer  The buffer to stream to
+   *  @param lengthWritten Returns number of bytes written to buffer
    *  @return EC_Normal, if successful, error code otherwise
    */
   virtual OFCondition stream(unsigned char *targetBuffer,
@@ -109,7 +114,7 @@ public:
   virtual void clear() =0;
 
   /** Dump content of this user identity sub item to output stream
-    * @param outstream - [out] The stream to dump to
+    * @param outstream The stream to dump to
     */
   virtual void dump(STD_NAMESPACE ostream& outstream) const =0;
 
@@ -120,11 +125,12 @@ public:
 private:
 
   /** Undefined private assignment operator. Needed to keep some compilers quiet.
+   *  @return Reference to "this" object
    */
   UserIdentityNegotiationSubItem& operator= (const UserIdentityNegotiationSubItem&);
-  
-  /// Item type of this user item. For User Identity Negotiation
-  /// this is always 0x58
+
+  /// Item type of this user item. For User Identity Negotiation, this is
+  /// always 0x58 for requests and 0x59 for acknowledgements.
   const unsigned char m_itemType;
 
   /// Reserved field, should be always sent with value 0 (default)
@@ -153,59 +159,59 @@ public:
   virtual void clear();
 
   /** Sets identity type to be used.
-   *  At this time, user, user/password, kerberos and SAML are known.
-   *  @param mode - [in] the identification mode
+   *  At this time, user, user/password, Kerberos and SAML are known.
+   *  @param mode Identification mode
    */
   void setIdentityType(const T_ASC_UserIdentityNegotiationMode& mode);
 
   /** Returns identity type that will be used.
-   *  At this time, user, user/password, kerberos and SAML are known.
-   *  @return the identification mode
+   *  At this time, user, user/password, Kerberos and SAML are known.
+   *  @return Identification mode
    */
    T_ASC_UserIdentityNegotiationMode getIdentityType();
 
-  /** Sets content of primary field.
-   *  @param buffer - [in] Content of primary field.
-   *  @param length - [in] Length of buffer
+  /** Sets content of primary field
+   *  @param buffer Content of primary field
+   *  @param length Length of buffer
    */
   void setPrimField(const char *buffer,
-                    const Uint16& length);
+                    const Uint16 length);
 
-  /** Sets content of secondary field.
-   *  @param buffer - [in] Content of secondary field.
-   *  @param length - [in ] Length of buffer
+  /** Sets content of secondary field
+   *  @param buffer Content of secondary field.
+   *  @param length Length of buffer
    */
   void setSecField(const char *buffer,
-                   const Uint16& length);
+                   const Uint16 length);
 
   /** Returns content of primary field. Memory is allocated by this function
-   *  and must be freed by the caller.
-   *  @param resultBuf - [out] Content of primary field. NULL if not set. Memory
-   *                     of buffer must be freed by the caller.
-   *  @param resultLen - [out] Length of returned buffer
-   *  @return Content of the primary field
+   *  for resultBuf and must be freed by the caller.
+   *  @param resultBuf Returns content of primary field. NULL if not set. Memory
+   *         of this buffer must be freed by the caller.
+   *  @param resultLen Returns length of returned buffer
+   *  @return Length of returned buffer
    */
   Uint16 getPrimField(char*& resultBuf,
                       Uint16& resultLen) const;
 
   /** Returns content of secondary field. Memory is allocated by this function
-   *  and must be freed by the caller.
-   *  @param resultBuf - [out] Content of secondary field. NULL if not set. Memory
-   *                     of buffer must be freed by the caller.
-   *  @param resultLen - [out] Length of returned buffer
-   *  @return Content of the secondary field.
+   *  for resultBuf must be freed by the caller.
+   *  @param resultBuf Returns content of secondary field. NULL if not set. Memory
+   *         of buffer must be freed by the caller.
+   *  @param resultLen Returns length of returned buffer
+   *  @return Returns length of returned buffer
    */
   Uint16 getSecField(char*& resultBuf,
                      Uint16& resultLen) const;
 
   /** Enables/disables requesting a positive response from the server.
-   *  @param reqPosRsp - [in] If true, a positive response is requested
+   *  @param reqPosRsp If OFTrue, a positive response is requested
    */
   void setReqPosResponse(const OFBool& reqPosRsp);
 
 
   /** Informs (the server) whether a positive response was requested.
-   *  @return OFTrue if  a response was requested
+   *  @return Returns OFTrue if a response was requested
    */
   OFBool isPosResponseRequested()
   {
@@ -213,26 +219,26 @@ public:
   }
 
   /** Stream the package into a byte stream for network transmission
-   *  @param targetBuffer  - [out] The buffer to stream to. Must be
-   *                         big enough (not allocated in function).
-   *  @param lengthWritten - [out] Number of bytes written to buffer
+   *  @param targetBuffer  The buffer to stream to. Must be
+   *         big enough (must be allocated by caller).
+   *  @param lengthWritten Returns number of bytes written to buffer
    *  @return EC_Normal, if successful, error code otherwise
    */
   OFCondition stream(unsigned char *targetBuffer,
                      unsigned long& lengthWritten) const;
 
   /** Computes total length of item if streamed into buffer
-    * @param length - [out] The total length of the item in bytes
+    * @param length Returns the total length of the item in bytes
     * @return EC_Normal if successful, error code otherwise
     */
   OFCondition streamedLength(unsigned long& length) const;
 
   /** Parse sub item from buffer. The buffer has to start with the correct user
    *  item type.
-   *  @param readBuffer - [in] The buffer to read from. The pointer to the buffer
-   *                      gets incremented by "bytesRead" bytes.
-   *  @param bytesRead  - [out] Number of bytes read by this function
-   *  @param availData  - [in] Size of the buffer.
+   *  @param readBuffer The buffer to read from. The pointer to the buffer
+   *                    gets incremented by "bytesRead" bytes.
+   *  @param bytesRead  Returns number of bytes read by this function
+   *  @param availData  Size of the readBuffer
    *  @return EC_Normal if successful, error code otherwise
    */
   OFCondition parseFromBuffer(unsigned char *readBuffer,
@@ -240,17 +246,18 @@ public:
                               unsigned long availData);
 
   /** Dump content of this user identity sub item to output stream
-    * @param outstream - [out] The stream to dump to
+    * @param outstream The stream to dump to
     */
   void dump(STD_NAMESPACE ostream& outstream) const;
 
   /** Assignment operator, does a deep copy of a class instance
-   * @param rhs - [in] Right hand side of assignment
+   *  @param rhs Right hand side of assignment
+   *  @return  Reference to "this" object
    */
   UserIdentityNegotiationSubItemRQ& operator= (const UserIdentityNegotiationSubItemRQ& rhs);
 
   /** Copy constructor, does a deep copy of a class instance
-   * @param rhs - [in] The class instance to copy from
+   * @param rhs The class instance to copy from
    */
   UserIdentityNegotiationSubItemRQ(const UserIdentityNegotiationSubItemRQ& rhs);
 
@@ -275,6 +282,8 @@ private:
 };
 
 
+/** Class representing a User Identity Negotiation acknowledgement sub item
+ */
 class DCMTK_DCMNET_EXPORT UserIdentityNegotiationSubItemAC : public UserIdentityNegotiationSubItem {
 
 public:
@@ -293,31 +302,31 @@ public:
   virtual void clear();
 
   /** Sets server response value
-   *  @param rsp - [in] Content of server response value (copied by function)
-   *  @param rspLen - [in ] Length of buffer
+   *  @param rsp    Content of server response value (copied by function)
+   *  @param rspLen Length of buffer
    */
   void setServerResponse(const char* rsp,
                          const Uint16& rspLen);
 
   /** Returns content of server response field Memory is allocated by this
    *  function and must be freed by the caller.
-   *  @param targetBuffer - [out] Content of server response field. NULL if not set.
-   *                        Memory of buffer must be freed by the caller.
-   *  @param resultLen - [out] Length of returned buffer
-   *  @return The server response field
+   *  @param targetBuffer Content of server response field. NULL if not set.
+   *                      Memory of buffer must be freed by the caller.
+   *  @param resultLen    Length of returned buffer
+   *  @return Length of returned buffer
    */
   Uint16 getServerResponse(char*& targetBuffer,
                            Uint16& resultLen) const;
 
   /** Computes total length of item if streamed into buffer
-    * @param length - [out] The length of the item if streamed
+    * @param length Returns length of the item if streamed
     * @return EC_Normal if successful, error code otherwise
     */
   OFCondition streamedLength(unsigned long& length) const;
 
   /** Stream the package into a byte stream for network transmission
-   *  @param targetBuffer  - [out] The buffer to stream to.
-   *  @param lengthWritten - [out] Number of bytes written to buffer
+   *  @param targetBuffer  The buffer to stream to
+   *  @param lengthWritten Returns number of bytes written to buffer
    *  @return EC_Normal, if successful, error code otherwise
    */
   OFCondition stream(unsigned char *targetBuffer,
@@ -325,10 +334,10 @@ public:
 
   /** Parse sub item from buffer. The buffer has to start with the correct user
    *  item type.
-   *  @param readBuffer - [in] The buffer to read from. The pointer to the buffer
-   *                      gets incremented by "bytesRead" bytes.
-   *  @param bytesRead  - [out] Number of bytes read by this function
-   *  @param availData  - [in] Size of the buffer.
+   *  @param readBuffer The buffer to read from. The pointer to the buffer
+   *         gets incremented by "bytesRead" bytes.
+   *  @param bytesRead  Returns number of bytes read by this function
+   *  @param availData  Size of the read buffer
    *  @return EC_Normal if successful, error code otherwise
    */
   OFCondition parseFromBuffer(unsigned char *readBuffer,
@@ -336,17 +345,18 @@ public:
                               unsigned long availData);
 
   /** Dump content of this user identity sub item to output stream
-    * @param outstream - [out] The stream to dump to
+    * @param outstream The stream to dump to
     */
   void dump(STD_NAMESPACE ostream& outstream) const;
 
   /** Assignment operator, does a deep copy of a class instance
-   * @param rhs - [in] Right hand side of assignment
+   * @param  rhs Right hand side of assignment
+   * @return Reference to "this" object
    */
   UserIdentityNegotiationSubItemAC& operator= (const UserIdentityNegotiationSubItemAC& rhs);
 
   /** Copy constructor, does a deep copy of a class instance
-   * @param rhs - [in] The class instance to copy from
+   * @param rhs The class instance to copy from
    */
   UserIdentityNegotiationSubItemAC(const UserIdentityNegotiationSubItemAC& rhs);
 
diff --git a/dcmnet/include/dcmtk/dcmnet/dul.h b/dcmnet/include/dcmtk/dcmnet/dul.h
index a107287..3272de7 100644
--- a/dcmnet/include/dcmtk/dcmnet/dul.h
+++ b/dcmnet/include/dcmtk/dcmnet/dul.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -82,25 +82,25 @@ class LST_HEAD;
  *  structure.  Most DICOM applications (except imagectn) don't need the symbolic
  *  hostname anyway, and the reverse DNS lookup can cause a long timeout.
  */
-extern DCMTK_DCMNET_EXPORT OFGlobal<OFBool> dcmDisableGethostbyaddr;   /* default OFFalse */
+extern DCMTK_DCMNET_EXPORT OFGlobal<OFBool> dcmDisableGethostbyaddr;   /* default: OFFalse */
 
 /** Global flag specifying whether to reject presentation contexts in case of an
  *  unsuccessful SCP/SCU role selection (strict) or to return the corresponding
  *  user data item with appropriate values (default). This applies to association
  *  acceptors only.
  */
-extern DCMTK_DCMNET_EXPORT OFGlobal<OFBool> dcmStrictRoleSelection;   /* default OFFalse */
+extern DCMTK_DCMNET_EXPORT OFGlobal<OFBool> dcmStrictRoleSelection;   /* default: OFFalse */
 
-/**  Global timeout (seconds) for connecting to remote hosts.
- *   Default value is -1 which selects infinite timeout, i.e. blocking connect().
+/** Global timeout in seconds for connecting to remote hosts.
+ *  Default value is -1, which selects infinite timeout, i.e. blocking connect().
  */
-extern DCMTK_DCMNET_EXPORT OFGlobal<Sint32> dcmConnectionTimeout;   /* default -1 */
+extern DCMTK_DCMNET_EXPORT OFGlobal<Sint32> dcmConnectionTimeout;   /* default: -1 */
 
 /** This global flag allows to set an already opened socket file descriptor which
  *  will be used by dcmnet the next time receiveTransportConnectionTCP() is called.
  *  Useful for use with proxy applications, but inherently thread unsafe!
  */
-extern DCMTK_DCMNET_EXPORT OFGlobal<int> dcmExternalSocketHandle;   /* default -1 */
+extern DCMTK_DCMNET_EXPORT OFGlobal<int> dcmExternalSocketHandle;   /* default: -1 */
 
 /** When compiled with WITH_TCPWRAPPER, DCMTK server processes may use the TCP
  *  wrapper library to enforce access control - see hosts_access(5).  If this
@@ -108,7 +108,7 @@ extern DCMTK_DCMNET_EXPORT OFGlobal<int> dcmExternalSocketHandle;   /* default -
  *  to is used as the daemon name.  If the flag is NULL, no access control is
  *  performed.
  */
-extern DCMTK_DCMNET_EXPORT OFGlobal<const char *> dcmTCPWrapperDaemonName;   /* default NULL */
+extern DCMTK_DCMNET_EXPORT OFGlobal<const char *> dcmTCPWrapperDaemonName;   /* default: NULL */
 
 /* Global option flag for compatibility with DCMTK releases prior to version 3.0.
  * Default (0) is automatic handling, which should work in most cases.
diff --git a/dcmnet/include/dcmtk/dcmnet/scp.h b/dcmnet/include/dcmtk/dcmnet/scp.h
index dfe0c0b..d0018bf 100644
--- a/dcmnet/include/dcmtk/dcmnet/scp.h
+++ b/dcmnet/include/dcmtk/dcmnet/scp.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2009-2015, OFFIS e.V.
+ *  Copyright (C) 2009-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -149,7 +149,16 @@ public:
 
   /** Starts providing the implemented services to SCUs.
    *  After calling this method the SCP is listening for connection requests.
-   *  @return The result. Function usually only returns in case of errors.
+   *  @return The result. Per default, the method only returns in case of fatal errors.
+   *          However, there are ways to stop listening in a controlled way:
+   *          <ul>
+   *          <li>In non-blocking mode, use stopAfterConnectionTimeout() in order
+   *          shut down after the TCP timeout set with setConnectionTimeout() has
+   *          occurred. In that case, the method returns with NET_EC_StopAfterConnectionTimeout.</li>
+   *          <li>In non-blocking and blocking mode, stopAfterCurrentAssociation() can
+   *          be used to return after an association has been handled and ended.
+   *          In that case, NET_EC_StopAfterAssociation is returned.</li>
+   *          </ul>
    */
   virtual OFCondition listen();
 
@@ -365,8 +374,11 @@ public:
 
   /** Set the DcmSCPConfig object to use for configuring this DcmSCP object.
    *  A deep copy is performed.
-   *  @param config The configuration to use.
-   *  @return EC_Normal if configuration can be used, error code otherwise.
+   *  @param  config The configuration to use.
+   *  @return EC_Normal if configuration can be used. The configuration can
+   *          only be changed if the SCP is not yet connected, otherwise
+   *          NET_EC_AlreadyConnected is returned.
+   *
    */
   virtual OFCondition setConfig(const DcmSCPConfig& config);
 
@@ -513,6 +525,13 @@ protected:
    */
   virtual void notifyAssociationTermination();
 
+  /** Overwrite this function to be notified about a connection timeout in
+   *  non-blocking mode (see setConnectionBlockingMode() and setConnectionTimeout()
+   *  methods). In blocking mode, this method has no effect since it's never called.
+   *  The standard handler only outputs some information to the TRACE logger.
+   */
+  virtual void notifyConnectionTimeout();
+
   /** Overwrite this function to be notified when a DIMSE error occurs.
    *  The standard handler only outputs error information to the logger.
    *  @param cond [in] The DIMSE error occurred.
@@ -537,13 +556,26 @@ protected:
    */
   virtual void notifyRECEIVEProgress(const unsigned long byteCount);
 
-  /** Overwrite this function to change the behavior of the listen() method. As long as no
+  /** This method can be used to return from the listen() loop in a controlled way.
+   *  In order to use it, it must be overwritten in a derived class. As long as no
    *  severe error occurs and this method returns OFFalse, the listen() method will wait
    *  for incoming associations in an infinite loop.
    *  @return The standard handler always returns OFFalse
    */
   virtual OFBool stopAfterCurrentAssociation();
 
+  /** This method can be used to return from the listen() loop in a controlled way.
+   *  In order to use it, it must be overwritten in a derived class. As long as no
+   *  severe error occurs and this method returns OFFalse, the listen() method will wait
+   *  for incoming associations in an infinite loop. If this method returns OFTrue, the
+   *  SCP will return from the listen() loop after a connection timeout occurs (see
+   *  setConnectionTimeout() method). In blocking mode (see setConnectionBlockingMode()
+   *  method), this method has no effect (it's never called) since the underlying
+   *  routines will wait forever for an incoming TCP connection.
+   *  @return The standard handler always returns OFFalse
+   */
+  virtual OFBool stopAfterConnectionTimeout();
+
   // -- C-ECHO --
 
   /** Standard handler for Verification Service Class (DICOM Echo). Returns echo response
@@ -911,12 +943,15 @@ protected:
    *  something goes wrong. Therefore, refusing an association because of wrong application
    *  context name or no common presentation contexts with the SCU does NOT lead to an error.
    *  @param network [in] Contains network parameters
-   *  @return EC_Normal, if everything went fine, an error code otherwise
+   *  @return EC_Normal, if everything went fine, DUL_NOASSOCIATIONREQUEST if a timeout
+   *          occurs in non-blocking mode, DIMSE_ILLEGALASSOCIATION or ASC_NULLKEY if
+   *          severe internal errors occured (should not happen)
    */
   virtual OFCondition waitForAssociationRQ(T_ASC_Network *network);
 
   /** Actually process association request.
-   *  @return EC_Normal if association could be processed, error otherwise.
+   *  @return EC_Normal if association could be processed, ASC_NULLKEY otherwise
+   *          (only if internal association structure is invalid, should never happen)
    */
   virtual OFCondition processAssociationRQ();
 
diff --git a/dcmnet/include/dcmtk/dcmnet/scpcfg.h b/dcmnet/include/dcmtk/dcmnet/scpcfg.h
index 343b666..8ab72b4 100644
--- a/dcmnet/include/dcmtk/dcmnet/scpcfg.h
+++ b/dcmnet/include/dcmtk/dcmnet/scpcfg.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012-2015, OFFIS e.V.
+ *  Copyright (C) 2012-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -53,7 +53,8 @@ public:
   DcmSCPConfig(const DcmSCPConfig &old);
 
   /** assignment operator, performs deep copy.
-   *  @param obj the config to copy from
+   *  @param  obj the config to copy from
+   *  @return Reference to "this" object
    */
   DcmSCPConfig &operator=(const DcmSCPConfig &obj);
 
diff --git a/dcmnet/libsrc/Makefile.dep b/dcmnet/libsrc/Makefile.dep
index 7804750..c91f556 100644
--- a/dcmnet/libsrc/Makefile.dep
+++ b/dcmnet/libsrc/Makefile.dep
@@ -390,23 +390,26 @@ dcmlayer.o: dcmlayer.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../include/dcmtk/dcmnet/dndefine.h ../include/dcmtk/dcmnet/dcmtrans.h
+ ../include/dcmtk/dcmnet/dndefine.h ../include/dcmtk/dcmnet/dcmtrans.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h
 dcmtrans.o: dcmtrans.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmnet/dcmtrans.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/dcmnet/dcmlayer.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../include/dcmtk/dcmnet/dndefine.h ../include/dcmtk/dcmnet/dcompat.h \
+ ../include/dcmtk/dcmnet/dcmlayer.h ../include/dcmtk/dcmnet/dndefine.h \
+ ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
  ../include/dcmtk/dcmnet/diutil.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
- ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -445,7 +448,6 @@ dcmtrans.o: dcmtrans.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
- ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
diff --git a/dcmnet/libsrc/assoc.cc b/dcmnet/libsrc/assoc.cc
index acb8756..8a3530e 100644
--- a/dcmnet/libsrc/assoc.cc
+++ b/dcmnet/libsrc/assoc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -1292,7 +1292,7 @@ OFCondition ASC_setIdentRQUserPassword(
     T_ASC_Parameters * params,
     const OFString& userName,
     const OFString& password,
-    const OFBool& requestRsp)
+    const OFBool requestRsp)
 {
   if (params == NULL)
     return ASC_NULLKEY;
@@ -1305,8 +1305,8 @@ OFCondition ASC_setIdentRQUserPassword(
   else
     rq->clear();
   rq->setIdentityType(ASC_USER_IDENTITY_USER_PASSWORD);
-  rq->setPrimField(userName.c_str(), userName.length());
-  rq->setSecField(password.c_str(), password.length());
+  rq->setPrimField(userName.c_str(), OFstatic_cast(Uint16, userName.length()));
+  rq->setSecField(password.c_str(), OFstatic_cast(Uint16, password.length()));
   rq->setReqPosResponse(requestRsp);
   params->DULparams.reqUserIdentNeg = rq;
   return EC_Normal;
@@ -1316,7 +1316,7 @@ OFCondition ASC_setIdentRQUserPassword(
 OFCondition ASC_setIdentRQUserOnly(
     T_ASC_Parameters * params,
     const OFString& userName,
-    const OFBool& requestRsp)
+    const OFBool requestRsp)
 {
   if (params == NULL)
     return ASC_NULLKEY;
@@ -1329,7 +1329,7 @@ OFCondition ASC_setIdentRQUserOnly(
   else
     rq->clear();
   rq->setIdentityType(ASC_USER_IDENTITY_USER);
-  rq->setPrimField(userName.c_str(), userName.length());
+  rq->setPrimField(userName.c_str(), OFstatic_cast(Uint16, userName.length()));
   rq->setReqPosResponse(requestRsp);
   params->DULparams.reqUserIdentNeg = rq;
   return EC_Normal;
@@ -1339,8 +1339,8 @@ OFCondition ASC_setIdentRQUserOnly(
 OFCondition ASC_setIdentRQKerberos(
     T_ASC_Parameters * params,
     const char* kerbTicket,
-    const Uint16& length,
-    const OFBool& requestRsp)
+    const Uint16 length,
+    const OFBool requestRsp)
 {
   if (params == NULL)
     return ASC_NULLKEY;
@@ -1360,8 +1360,8 @@ OFCondition ASC_setIdentRQKerberos(
 OFCondition ASC_setIdentRQSaml(
     T_ASC_Parameters * params,
     const char* saml,
-    const Uint16& length,
-    const OFBool& requestRsp)
+    const Uint16 length,
+    const OFBool requestRsp)
 {
   if (params == NULL)
     return ASC_NULLKEY;
diff --git a/dcmnet/libsrc/cond.cc b/dcmnet/libsrc/cond.cc
index cb0cfc2..602b991 100644
--- a/dcmnet/libsrc/cond.cc
+++ b/dcmnet/libsrc/cond.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -87,6 +87,8 @@ makeOFConditionConst(NET_EC_InsufficientPortPrivileges,      OFM_dcmnet, 1023, O
 // codes 1024 to 1073 are used for the association negotiation profile classes
 makeOFConditionConst(NET_EC_SCPBusy,                         OFM_dcmnet, 1074, OF_error, "SCP is busy");
 makeOFConditionConst(NET_EC_CannotStartSCPThread,            OFM_dcmnet, 1075, OF_error, "Cannot start SCP Thread");
+makeOFConditionConst(NET_EC_StopAfterAssociation,            OFM_dcmnet, 1076, OF_ok, "Stop after current association (as requested)");
+makeOFConditionConst(NET_EC_StopAfterConnectionTimeout,      OFM_dcmnet, 1077, OF_ok, "Stop after TCP connection timeout (as requested)");
 
 
 OFString& DimseCondition::dump(OFString& str, OFCondition cond)
diff --git a/dcmnet/libsrc/dccfpcmp.cc b/dcmnet/libsrc/dccfpcmp.cc
index 8f688b4..b944297 100644
--- a/dcmnet/libsrc/dccfpcmp.cc
+++ b/dcmnet/libsrc/dccfpcmp.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2015, OFFIS e.V.
+ *  Copyright (C) 2003-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -128,11 +128,11 @@ const DcmPresentationContextList* DcmPresentationContextMap::getPresentationCont
 }
 
 OFCondition DcmPresentationContextMap::add(
-  const char *key,
-  const char *abstractSyntaxUID,
-  const char *transferSyntaxKey)
+  const OFString& key,
+  const OFString& abstractSyntaxUID,
+  const OFString& transferSyntaxKey)
 {
-  if ((!key)||(!abstractSyntaxUID)||(!transferSyntaxKey)) return EC_IllegalCall;
+  if ((key.empty())||(abstractSyntaxUID.empty())||(transferSyntaxKey.empty())) return EC_IllegalCall;
 
 
   // perform syntax check of UID
@@ -144,22 +144,22 @@ OFCondition DcmPresentationContextMap::add(
     return makeOFCondition(OFM_dcmnet, 1025, OF_error, s.c_str());
   }
 
-  DcmPresentationContextList * const *value = NULL;
+  DcmPresentationContextList* value = NULL;
   OFString skey(key);
   OFMap<OFString, DcmPresentationContextList*>::iterator it = map_.find(skey);
 
   // create new value if not existing yet
   if (it == map_.end())
   {
-    DcmPresentationContextList *newentry = new DcmPresentationContextList();
+    DcmPresentationContextList *newentry = new DcmPresentationContextList;
     map_.insert(OFPair<OFString, DcmPresentationContextList*>(skey, newentry));
-    value = &newentry;
+    value = newentry;
   }
   else // use existing value
-    value = & ((*it).second);
+    value = ((*it).second);
 
   // make sure list does not get longer than 128 entries
-  if (((*value)->size()) > 127)
+  if (((value)->size()) > 127)
   {
     OFString s("presentation context list too long (> 128 entries): ");
     s += key;
@@ -167,7 +167,7 @@ OFCondition DcmPresentationContextMap::add(
   }
 
   // insert values into list.
-  (*value)->push_back(DcmPresentationContextItem(uid, OFString(transferSyntaxKey)));
+  (value)->push_back(DcmPresentationContextItem(uid, transferSyntaxKey));
   return EC_Normal;
 }
 
diff --git a/dcmnet/libsrc/dcmtrans.cc b/dcmnet/libsrc/dcmtrans.cc
index 3e28918..f81316e 100644
--- a/dcmnet/libsrc/dcmtrans.cc
+++ b/dcmnet/libsrc/dcmtrans.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2016, OFFIS e.V.
+ *  Copyright (C) 1998-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -53,17 +53,26 @@ END_EXTERN_C
 #include <GUSI.h>	/* Use the Grand Unified Sockets Interface (GUSI) on Macintosh */
 #endif
 
+OFGlobal<Sint32> dcmSocketSendTimeout(60);
+OFGlobal<Sint32> dcmSocketReceiveTimeout(60);
+
 DcmTransportConnection::DcmTransportConnection(int openSocket)
 : theSocket(openSocket)
 {
 #ifndef HAVE_GUSI_H
   if (theSocket >= 0)
   {
-#ifndef DISABLE_SEND_TIMEOUT
+#ifdef DISABLE_SEND_TIMEOUT
+#warning The macro DISABLE_SEND_TIMEOUT is not supported anymore. See "macros.txt" for details.
+#endif
+    /* get global timeout for the send() function */
+    const Sint32 sendTimeout = dcmSocketSendTimeout.get();
+    if (sendTimeout >= 0)
     {
-      /* use a timeout of 60 seconds for the send() function */
-      const int sendTimeout = 60;
-      DCMNET_DEBUG("setting network send timeout to " << sendTimeout << " seconds");
+      if (sendTimeout == 0)
+        DCMNET_DEBUG("setting network send timeout to 0 (infinite)");
+      else
+        DCMNET_DEBUG("setting network send timeout to " << sendTimeout << " seconds");
 #ifdef HAVE_WINSOCK_H
       // for Windows, specify send timeout in milliseconds
       int timeoutVal = sendTimeout * 1000;
@@ -82,12 +91,17 @@ DcmTransportConnection::DcmTransportConnection(int openSocket)
         DCMNET_WARN("cannot set network send timeout to " << sendTimeout << " seconds");
       }
     }
+#ifdef DISABLE_RECV_TIMEOUT
+#warning The macro DISABLE_RECV_TIMEOUT is not supported anymore. See "macros.txt" for details.
 #endif
-#ifndef DISABLE_RECV_TIMEOUT
+    /* get global timeout for the recv() function */
+    const Sint32 recvTimeout = dcmSocketReceiveTimeout.get();
+    if (recvTimeout >= 0)
     {
-      /* use a timeout of 60 seconds for the recv() function */
-      const int recvTimeout = 60;
-      DCMNET_DEBUG("setting network receive timeout to " << recvTimeout << " seconds");
+      if (recvTimeout == 0)
+        DCMNET_DEBUG("setting network receive timeout to 0 (infinite)");
+      else
+        DCMNET_DEBUG("setting network receive timeout to " << recvTimeout << " seconds");
 #ifdef HAVE_WINSOCK_H
       // for Windows, specify receive timeout in milliseconds
       int timeoutVal = recvTimeout * 1000;
@@ -106,7 +120,6 @@ DcmTransportConnection::DcmTransportConnection(int openSocket)
         DCMNET_WARN("cannot set network receive timeout to " << recvTimeout << " seconds");
       }
     }
-#endif
   }
 #endif
 }
@@ -136,12 +149,12 @@ OFBool DcmTransportConnection::safeSelectReadableAssociation(DcmTransportConnect
     {
       if (connections[i])
       {
-      	if (connections[i]->networkDataAvailable(timeToWait))
-      	{
-      	  i = connCount; /* break out of for loop */
-      	  found = OFTrue; /* break out of while loop */
-      	}
-      	timeToWait = 0;
+        if (connections[i]->networkDataAvailable(timeToWait))
+        {
+          i = connCount; /* break out of for loop */
+          found = OFTrue; /* break out of while loop */
+        }
+        timeToWait = 0;
       }
     } /* for */
     if (timeToWait == 1) return OFFalse; /* all entries NULL */
diff --git a/dcmnet/libsrc/dcompat.cc b/dcmnet/libsrc/dcompat.cc
index 6ea030a..424c240 100644
--- a/dcmnet/libsrc/dcompat.cc
+++ b/dcmnet/libsrc/dcompat.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2010, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -412,63 +412,3 @@ char *strerror(int errornum)
 
 #endif /* ! HAVE_STRERROR */
 #endif
-
-#ifndef HAVE_TEMPNAM
-/*
- * These functions are not present on NeXTs but are used by the
- * DB module.
- */
-
-char *
-tempnam(char *dir, char *pfx)
-{
-#define TMPDIR_1	"/usr/tmp"
-#define TMPDIR_2	"/tmp"
-#define AMODES		(R_OK | W_OK | X_OK)
-    char *tmpdir = NULL;
-    char *env = NULL;
-    char prefix[6];
-    char *name = NULL;
-    static unsigned short mix = 0;
-
-    /* check environment variable first */
-    if (((env = getenv("TMPDIR")) != NULL) && access(env, AMODES) == 0) {
-	tmpdir = env;
-    } else if (dir != NULL && access(dir, AMODES) == 0) {
-	tmpdir = dir;
-    } else if (access(TMPDIR_1, AMODES) == 0) {
-	tmpdir = TMPDIR_1;
-    } else if (access(TMPDIR_2, AMODES) == 0) {
-	 tmpdir = TMPDIR_2;
-    }
-
-    if (tmpdir == NULL) {
-	return NULL; 	/* no suitable directory found */
-    }
-
-
-    name = (char*)malloc(strlen(tmpdir) + 1 + MIN(strlen(pfx), 5) + 15);
-    if (name == NULL) {
-	return NULL;	/* malloc failure */
-    }
-
-    /* SUNOS Compatability: take the first 5 characters of prefix (pfx) */
-    bzero(prefix, sizeof(prefix));
-    strncpy(prefix, pfx, 5);
-    /*
-     * Find a suitable name.
-     * Use at most 14 characters for filename component of
-     * path.  The last 5 characters use the process id, the middle
-     * 4 some hex number.
-     * note will recycle after about 65536 times
-     */
-
-    mix++;	/* will recycle */
-
-    sprintf(name, "%s%c%s%04x%05d", tmpdir, PATH_SEPARATOR, prefix,
-	(unsigned int)mix, (int)OFStandard::getProcessID());
-
-    return name;
-}
-
-#endif /* ! HAVE_TEMPNAM */
diff --git a/dcmnet/libsrc/dcuserid.cc b/dcmnet/libsrc/dcuserid.cc
index 0397775..39d095e 100644
--- a/dcmnet/libsrc/dcuserid.cc
+++ b/dcmnet/libsrc/dcuserid.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2010, OFFIS e.V.
+ *  Copyright (C) 1997-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -30,8 +30,8 @@
 /* ************************************************************************* */
 
 // Constructor, sets constants
-UserIdentityNegotiationSubItem::UserIdentityNegotiationSubItem() :
-  m_itemType (DUL_TYPENEGOTIATIONOFUSERIDENTITY),
+UserIdentityNegotiationSubItem::UserIdentityNegotiationSubItem(const unsigned char itemType) :
+  m_itemType (itemType),
   m_reserved(0)
 {
 }
@@ -42,6 +42,7 @@ UserIdentityNegotiationSubItem::UserIdentityNegotiationSubItem() :
 
 // Constructor, constructs empty Identity Negotiation structure
 UserIdentityNegotiationSubItemRQ::UserIdentityNegotiationSubItemRQ() :
+    UserIdentityNegotiationSubItem(DUL_TYPENEGOTIATIONOFUSERIDENTITY_REQ),
     m_userIdentityType(ASC_USER_IDENTITY_NONE)
   , m_posRspRequested(0)
   , m_primField(NULL)
@@ -78,8 +79,7 @@ void UserIdentityNegotiationSubItemRQ::clear()
 
 
 // Sets identification mode
-void
-UserIdentityNegotiationSubItemRQ::setIdentityType(const T_ASC_UserIdentityNegotiationMode& mode)
+void UserIdentityNegotiationSubItemRQ::setIdentityType(const T_ASC_UserIdentityNegotiationMode& mode)
 {
   m_userIdentityType = mode;
 }
@@ -94,9 +94,8 @@ UserIdentityNegotiationSubItemRQ::getIdentityType()
 
 
 // Sets primary field (copied from parameter)
-void
-UserIdentityNegotiationSubItemRQ::setPrimField(const char *buffer,
-                                               const Uint16& length)
+void UserIdentityNegotiationSubItemRQ::setPrimField(const char *buffer,
+                                                    const Uint16 length)
 {
   if (m_primField != NULL)
   {
@@ -113,9 +112,8 @@ UserIdentityNegotiationSubItemRQ::setPrimField(const char *buffer,
 
 
 // Sets secondary field (copied form parameter)
-void
-UserIdentityNegotiationSubItemRQ::setSecField(const char *buffer,
-                                              const Uint16& length)
+void UserIdentityNegotiationSubItemRQ::setSecField(const char *buffer,
+                                                   const Uint16 length)
 {
   if (m_secField != NULL)
   {
@@ -132,9 +130,8 @@ UserIdentityNegotiationSubItemRQ::setSecField(const char *buffer,
 
 
 // Returns primary field. Memory must be freed by caller.
-Uint16
-UserIdentityNegotiationSubItemRQ::getPrimField(char*& resultBuf,
-                                               Uint16& resultLen) const
+Uint16 UserIdentityNegotiationSubItemRQ::getPrimField(char*& resultBuf,
+                                                      Uint16& resultLen) const
 {
   if ((m_primFieldLength == 0) || (m_primField == NULL))
   {
@@ -150,9 +147,8 @@ UserIdentityNegotiationSubItemRQ::getPrimField(char*& resultBuf,
 
 
 // Returns secondary field. Memory must be freed by caller.
-unsigned short
-UserIdentityNegotiationSubItemRQ::getSecField(char*& resultBuf,
-                                              Uint16& resultLen) const
+unsigned short UserIdentityNegotiationSubItemRQ::getSecField(char*& resultBuf,
+                                                             Uint16& resultLen) const
 {
   if ((m_secFieldLength == 0) || (m_secField == NULL))
   {
@@ -451,8 +447,10 @@ UserIdentityNegotiationSubItemRQ::~UserIdentityNegotiationSubItemRQ()
 /* ************************************************************************* */
 
 // Constructor
-UserIdentityNegotiationSubItemAC::UserIdentityNegotiationSubItemAC()
-: m_serverRsp(NULL), m_rspLength(0)
+UserIdentityNegotiationSubItemAC::UserIdentityNegotiationSubItemAC() :
+  UserIdentityNegotiationSubItem(DUL_TYPENEGOTIATIONOFUSERIDENTITY_ACK),
+  m_serverRsp(NULL),
+  m_rspLength(0)
 {
 }
 
diff --git a/dcmnet/libsrc/dimcmd.cc b/dcmnet/libsrc/dimcmd.cc
index bf9f399..9a29178 100644
--- a/dcmnet/libsrc/dimcmd.cc
+++ b/dcmnet/libsrc/dimcmd.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -182,7 +182,7 @@ addString(DcmDataset *obj, DcmTagKey t, char *s, OFBool keepPadding)
 
     if (! keepPadding) DU_stripLeadingAndTrailingSpaces(s);
 
-    ec = newDicomElement(e, tag);
+    ec = DcmItem::newDicomElement(e, tag);
     if (ec == EC_Normal && s != NULL) {
         ec = e->putString(s);
     }
@@ -255,7 +255,7 @@ addUS(DcmDataset *obj, DcmTagKey t, Uint16 us)
     DcmElement *e = NULL;
     DcmTag tag(t);
 
-    ec = newDicomElement(e, tag);
+    ec = DcmItem::newDicomElement(e, tag);
     if (ec == EC_Normal) {
         ec = e->putUint16(us);
     }
@@ -306,7 +306,7 @@ addUL(DcmDataset *obj, DcmTagKey t, Uint32 ul)
     DcmElement *e = NULL;
     DcmTag tag(t);
 
-    ec = newDicomElement(e, tag);
+    ec = DcmItem::newDicomElement(e, tag);
     if (ec == EC_Normal) {
         ec = e->putUint32(ul);
     }
@@ -367,7 +367,7 @@ addAttributeList(DcmDataset *obj, DcmTagKey t, Uint16 *lst, int listCount)
         return buildErrorWithMsg("dimcmd:addAttributeList: Error: Uneven listCount", t);
     }
 
-    ec = newDicomElement(e, tag);
+    ec = DcmItem::newDicomElement(e, tag);
     if (ec == EC_Normal) {
         ec = e->putUint16Array(lst, (listCount / 2));
     }
diff --git a/dcmnet/libsrc/dimse.cc b/dcmnet/libsrc/dimse.cc
index 4770e0c..43bee36 100644
--- a/dcmnet/libsrc/dimse.cc
+++ b/dcmnet/libsrc/dimse.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -354,6 +354,8 @@ getTransferSyntax(
         case EXS_JPEGLSLossy:
         case EXS_JPEG2000LosslessOnly:
         case EXS_JPEG2000:
+        case EXS_JPEG2000MulticomponentLosslessOnly:
+        case EXS_JPEG2000Multicomponent:
         case EXS_MPEG2MainProfileAtMainLevel:
         case EXS_MPEG2MainProfileAtHighLevel:
         case EXS_MPEG4HighProfileLevel4_1:
@@ -361,8 +363,8 @@ getTransferSyntax(
         case EXS_MPEG4HighProfileLevel4_2_For2DVideo:
         case EXS_MPEG4HighProfileLevel4_2_For3DVideo:
         case EXS_MPEG4StereoHighProfileLevel4_2:
-        case EXS_JPEG2000MulticomponentLosslessOnly:
-        case EXS_JPEG2000Multicomponent:
+        case EXS_HEVCMainProfileLevel5_1:
+        case EXS_HEVCMain10ProfileLevel5_1:
 #ifdef WITH_ZLIB
         case EXS_DeflatedLittleEndianExplicit:
 #endif
diff --git a/dcmnet/libsrc/diutil.cc b/dcmnet/libsrc/diutil.cc
index 34e8f99..905bc8c 100644
--- a/dcmnet/libsrc/diutil.cc
+++ b/dcmnet/libsrc/diutil.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -190,7 +190,7 @@ DU_putStringDOElement(DcmItem *obj, DcmTagKey t, const char *s)
     DcmElement *e = NULL;
     DcmTag tag(t);
 
-    ec = newDicomElement(e, tag);
+    ec = DcmItem::newDicomElement(e, tag);
     if (ec == EC_Normal && s != NULL) {
         ec = e->putString(s);
     }
@@ -224,7 +224,7 @@ DU_putShortDOElement(DcmItem *obj, DcmTagKey t, Uint16 us)
     DcmElement *e = NULL;
     DcmTag tag(t);
 
-    ec = newDicomElement(e, tag);
+    ec = DcmItem::newDicomElement(e, tag);
     if (ec == EC_Normal) {
         ec = e->putUint16(us);
     }
@@ -880,7 +880,7 @@ void DU_logSelectResult(int selectReturnValue)
   }
   else if (selectReturnValue == 0)
   {
-    DCMNET_DEBUG("Timeout while waiting for incoming network data");
+    DCMNET_TRACE("Timeout while waiting for incoming network data");
   }
   else
   {
diff --git a/dcmnet/libsrc/dstorscu.cc b/dcmnet/libsrc/dstorscu.cc
index 27b7b22..4cd7acf 100644
--- a/dcmnet/libsrc/dstorscu.cc
+++ b/dcmnet/libsrc/dstorscu.cc
@@ -927,7 +927,7 @@ OFCondition DcmStorageSCU::sendSOPInstances()
 }
 
 
-void DcmStorageSCU::notifySOPInstanceToBeSent(const TransferEntry &transferEntry)
+void DcmStorageSCU::notifySOPInstanceToBeSent(const TransferEntry & /*transferEntry*/)
 {
     // do nothing in the default implementation
 }
@@ -1129,7 +1129,7 @@ OFCondition DcmStorageSCU::checkSOPInstance(const OFString &sopClassUID,
         if (status.good())
         {
             // in addition, check whether it is a known storage SOP class
-            if (!dcmIsaStorageSOPClassUID(sopClassUID.c_str()))
+            if (!dcmIsaStorageSOPClassUID(sopClassUID.c_str(), ESSC_All))
             {
                 // check whether the DICOM standard prefix for storage UIDs is used
                 if (sopClassUID.compare(0, 23, "1.2.840.10008.5.1.4.1.1") == 0)
diff --git a/dcmnet/libsrc/dul.cc b/dcmnet/libsrc/dul.cc
index feca04d..9a9aedf 100644
--- a/dcmnet/libsrc/dul.cc
+++ b/dcmnet/libsrc/dul.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2016, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -1791,31 +1791,50 @@ receiveTransportConnectionTCP(PRIVATE_NETWORKKEY ** network,
 #endif
     setTCPBufferLength(sock);
 
-#ifndef DONT_DISABLE_NAGLE_ALGORITHM
     /*
-     * Disable the Nagle algorithm.
-     * This provides a 2-4 times performance improvement (WinNT4/SP4, 100Mbit/s Ethernet).
-     * Effects on other environments are unknown.
-     * The code below allows the Nagle algorithm to be enabled by setting the TCP_NODELAY environment
-     * variable to have value 0.
+     * Disable the so-called Nagle algorithm (if requested).
+     * This might provide a better network performance on some systems/environments.
+     * By default, the algorithm is not disabled unless DISABLE_NAGLE_ALGORITHM is defined.
+     * The default behavior can be changed by setting the environment variable TCP_NODELAY.
      */
+
+#ifdef DONT_DISABLE_NAGLE_ALGORITHM
+#warning The macro DONT_DISABLE_NAGLE_ALGORITHM is not supported anymore. See "macros.txt" for details.
+#endif
+
+#ifdef DISABLE_NAGLE_ALGORITHM
     int tcpNoDelay = 1; // disable
+#else
+    int tcpNoDelay = 0; // don't disable
+#endif
     char* tcpNoDelayString = NULL;
-    if ((tcpNoDelayString = getenv("TCP_NODELAY")) != NULL) {
-        if (sscanf(tcpNoDelayString, "%d", &tcpNoDelay) != 1) {
-            DCMNET_WARN("DUL: cannot parse environment variable TCP_NODELAY=" << tcpNoDelayString);
-        }
-    }
+    DCMNET_TRACE("checking whether environment variable TCP_NODELAY is set");
+    if ((tcpNoDelayString = getenv("TCP_NODELAY")) != NULL)
+    {
+      if (sscanf(tcpNoDelayString, "%d", &tcpNoDelay) != 1)
+      {
+        DCMNET_WARN("DUL: cannot parse environment variable TCP_NODELAY=" << tcpNoDelayString);
+      }
+    } else
+      DCMNET_TRACE("  environment variable TCP_NODELAY not set, using the default value (" << tcpNoDelay << ")");
     if (tcpNoDelay) {
-        if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char*)&tcpNoDelay, sizeof(tcpNoDelay)) < 0)
-        {
-            char buf[256];
-            OFString msg = "TCP Initialization Error: ";
-            msg += OFStandard::strerror(errno, buf, sizeof(buf));
-            return makeDcmnetCondition(DULC_TCPINITERROR, OF_error, msg.c_str());
-        }
+#ifdef DISABLE_NAGLE_ALGORITHM
+      DCMNET_DEBUG("DUL: disabling Nagle algorithm as defined at compilation time (DISABLE_NAGLE_ALGORITHM)");
+#else
+      DCMNET_DEBUG("DUL: disabling Nagle algorithm as requested at runtime (TCP_NODELAY=" << tcpNoDelayString << ")");
+#endif
+      if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char*)&tcpNoDelay, sizeof(tcpNoDelay)) < 0)
+      {
+        char buf[256];
+        OFString msg = "TCP Initialization Error: ";
+        msg += OFStandard::strerror(errno, buf, sizeof(buf));
+        return makeDcmnetCondition(DULC_TCPINITERROR, OF_error, msg.c_str());
+      }
+#ifdef DISABLE_NAGLE_ALGORITHM
+    } else {
+      DCMNET_DEBUG("DUL: do not disable Nagle algorithm as requested at runtime (TCP_NODELAY=" << tcpNoDelayString << ")");
+#endif
     }
-#endif // DONT_DISABLE_NAGLE_ALGORITHM
 
     // create string containing numerical IP address.
     OFString client_dns_name;
@@ -2268,29 +2287,31 @@ setTCPBufferLength(int sock)
     char *TCPBufferLength;
     int bufLen;
 
-    /*
-     * Use a 64K default socket buffer length, fitting the MTU size of the loopback device implementation
-     * in recent Linux kernel versions.
-     * Different environments, particularly slower networks may require different values for optimal
-     * performance.
-     */
 #ifdef HAVE_GUSI_H
     /* GUSI always returns an error for setsockopt(...) */
 #else
-    bufLen = 65536; // a socket buffer size of 64K gives best throughput for image transmission
+    /*
+     * check whether environment variable TCP_BUFFER_LENGTH is set.
+     * If not, the the operating system is responsible for selecting
+     * appropriate values for the TCP send and receive buffer lengths.
+     */
+    DCMNET_TRACE("checking whether environment variable TCP_BUFFER_LENGTH is set");
     if ((TCPBufferLength = getenv("TCP_BUFFER_LENGTH")) != NULL) {
-        if (sscanf(TCPBufferLength, "%d", &bufLen) != 1) {
-            DCMNET_WARN("DUL: cannot parse environment variable TCP_BUFFER_LENGTH=" << TCPBufferLength);
-        }
-    }
+        if (sscanf(TCPBufferLength, "%d", &bufLen) == 1) {
 #if defined(SO_SNDBUF) && defined(SO_RCVBUF)
-    (void) setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *) &bufLen, sizeof(bufLen));
-    (void) setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *) &bufLen, sizeof(bufLen));
+            if (bufLen == 0)
+                bufLen = 65536; // a socket buffer size of 64K gives good throughput for image transmission
+            DCMNET_DEBUG("DUL: setting TCP buffer length to " << bufLen << " bytes");
+            (void) setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *) &bufLen, sizeof(bufLen));
+            (void) setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *) &bufLen, sizeof(bufLen));
 #else
-    DCMNET_WARN("DULFSM: setTCPBufferLength: "
-        "cannot set TCP buffer length socket option: "
-        "code disabled because SO_SNDBUF and SO_RCVBUF constants are unknown");
+            DCMNET_WARN("DUL: setTCPBufferLength: cannot set TCP buffer length socket option: "
+                << "code disabled because SO_SNDBUF and SO_RCVBUF constants are unknown");
 #endif // SO_SNDBUF and SO_RCVBUF
+        } else
+            DCMNET_WARN("DUL: cannot parse environment variable TCP_BUFFER_LENGTH=" << TCPBufferLength);
+    } else
+        DCMNET_TRACE("  environment variable TCP_BUFFER_LENGTH not set, using the system defaults");
 #endif // HAVE_GUSI_H
 }
 
diff --git a/dcmnet/libsrc/dulconst.cc b/dcmnet/libsrc/dulconst.cc
index 6ec4f9e..810634a 100644
--- a/dcmnet/libsrc/dulconst.cc
+++ b/dcmnet/libsrc/dulconst.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -1093,7 +1093,7 @@ constructExtNeg(unsigned char type,
             SOPClassExtendedNegotiationSubItem* extNeg = *i;
             extNeg->itemType = 0x56;
             // recompute the length fields
-            extNeg->sopClassUIDLength = extNeg->sopClassUID.length();
+            extNeg->sopClassUIDLength = OFstatic_cast(unsigned short, extNeg->sopClassUID.length());
             extNeg->itemLength = 2 + extNeg->sopClassUIDLength + extNeg->serviceClassAppInfoLength;
             length = 4 + extNeg->itemLength;
             *rtnLength += length;
@@ -1457,7 +1457,7 @@ streamSCUSCPRole(PRV_SCUSCPROLE * scuscpRole, unsigned char *b,
     COPY_SHORT_BIG(length, b);
     b += 2;
 
-    length = strlen(scuscpRole->SOPClassUID);
+    length = OFstatic_cast(unsigned short, strlen(scuscpRole->SOPClassUID));
     COPY_SHORT_BIG(length, b);
     b += 2;
 
@@ -1503,7 +1503,7 @@ streamExtNeg(SOPClassExtendedNegotiationSubItem* extNeg, unsigned char *b, unsig
 
     extNeg->itemType = 0x56;
     // recompute the length fields
-    extNeg->sopClassUIDLength = extNeg->sopClassUID.length();
+    extNeg->sopClassUIDLength = OFstatic_cast(unsigned short, extNeg->sopClassUID.length());
     extNeg->itemLength = 2 + extNeg->sopClassUIDLength + extNeg->serviceClassAppInfoLength;
 
     *b++ = extNeg->itemType;
diff --git a/dcmnet/libsrc/dulfsm.cc b/dcmnet/libsrc/dulfsm.cc
index eadee9c..1b6cf78 100644
--- a/dcmnet/libsrc/dulfsm.cc
+++ b/dcmnet/libsrc/dulfsm.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -2203,21 +2203,10 @@ requestAssociationTCP(PRIVATE_NETWORKKEY ** network,
     }
     server.sin_family = AF_INET;
 
-#ifdef NO_WINDOWS95_ADDRESS_TRANSLATION_WORKAROUND
-    hp = OFStandard::getHostByName(node);
-    if (!hp)
-    {
-        char buf2[4095]; // node could be a long string
-        sprintf(buf2, "Attempt to connect to unknown host: %s", node);
-        return makeDcmnetCondition(DULC_UNKNOWNHOST, OF_error, buf2);
-    }
-    (void) memcpy(&server.sin_addr, hp.h_addr.c_str(), (size_t) hp.h_length);
-#else
     /*
-     * Under Win95 gethostbyname will not accept an IP address e.g.
-     * "134.106.1.1".  This appears to work without problems under WindowsNT
-     * and several Unix variants.
-     * Workaround is to explicitly handle the IP address case.
+     * At least officially, gethostbyname will not accept an IP address on many
+     * operating systems (e.g. Windows or FreeBSD), so we need to explicitly
+     * handle the IP address case.
      */
     unsigned long addr = inet_addr(node);
     if (addr != INADDR_NONE) {
@@ -2234,7 +2223,6 @@ requestAssociationTCP(PRIVATE_NETWORKKEY ** network,
         }
         (void) memcpy(&server.sin_addr, hp.h_addr.c_str(), (size_t) hp.h_length);
     }
-#endif
 
     server.sin_port = (unsigned short) htons(port);
 
@@ -2433,33 +2421,50 @@ requestAssociationTCP(PRIVATE_NETWORKKEY ** network,
 #endif
         setTCPBufferLength(s);
 
-#ifndef DONT_DISABLE_NAGLE_ALGORITHM
         /*
-         * Disable the Nagle algorithm.
-         * This provides a 2-4 times performance improvement (WinNT4/SP4, 100Mbit/s Ethernet).
-         * Effects on other environments are unknown.
-         * The code below allows the Nagle algorithm to be enabled by setting the TCP_NODELAY environment
-         * variable to have value 0.
+         * Disable the so-called Nagle algorithm (if requested).
+         * This might provide a better network performance on some systems/environments.
+         * By default, the algorithm is not disabled unless DISABLE_NAGLE_ALGORITHM is defined.
+         * The default behavior can be changed by setting the environment variable TCP_NODELAY.
          */
+
+#ifdef DONT_DISABLE_NAGLE_ALGORITHM
+#warning The macro DONT_DISABLE_NAGLE_ALGORITHM is not supported anymore. See "macros.txt" for details.
+#endif
+
+#ifdef DISABLE_NAGLE_ALGORITHM
         int tcpNoDelay = 1; // disable
+#else
+        int tcpNoDelay = 0; // don't disable
+#endif
         char* tcpNoDelayString = NULL;
+        DCMNET_TRACE("checking whether environment variable TCP_NODELAY is set");
         if ((tcpNoDelayString = getenv("TCP_NODELAY")) != NULL)
         {
-            if (sscanf(tcpNoDelayString, "%d", &tcpNoDelay) != 1)
-            {
-              DCMNET_WARN("DULFSM: cannot parse environment variable TCP_NODELAY=" << tcpNoDelayString);
-            }
-        }
+          if (sscanf(tcpNoDelayString, "%d", &tcpNoDelay) != 1)
+          {
+            DCMNET_WARN("DULFSM: cannot parse environment variable TCP_NODELAY=" << tcpNoDelayString);
+          }
+        } else
+          DCMNET_TRACE("  environment variable TCP_NODELAY not set, using the default value (" << tcpNoDelay << ")");
         if (tcpNoDelay) {
-            if (setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (char*)&tcpNoDelay, sizeof(tcpNoDelay)) < 0)
-            {
-              char buf[256];
-              OFString msg = "TCP Initialization Error: ";
-              msg += OFStandard::strerror(errno, buf, sizeof(buf));
-              return makeDcmnetCondition(DULC_TCPINITERROR, OF_error, msg.c_str());
-            }
+#ifdef DISABLE_NAGLE_ALGORITHM
+          DCMNET_DEBUG("DULFSM: disabling Nagle algorithm as defined at compilation time (DISABLE_NAGLE_ALGORITHM)");
+#else
+          DCMNET_DEBUG("DULFSM: disabling Nagle algorithm as requested at runtime (TCP_NODELAY=" << tcpNoDelayString << ")");
+#endif
+          if (setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (char*)&tcpNoDelay, sizeof(tcpNoDelay)) < 0)
+          {
+            char buf[256];
+            OFString msg = "TCP Initialization Error: ";
+            msg += OFStandard::strerror(errno, buf, sizeof(buf));
+            return makeDcmnetCondition(DULC_TCPINITERROR, OF_error, msg.c_str());
+          }
+#ifdef DISABLE_NAGLE_ALGORITHM
+        } else {
+          DCMNET_DEBUG("DULFSM: do not disable Nagle algorithm as requested at runtime (TCP_NODELAY=" << tcpNoDelayString << ")");
+#endif
         }
-#endif // DONT_DISABLE_NAGLE_ALGORITHM
 
        DcmTransportLayerStatus tcsStatus;
        if (TCS_ok != (tcsStatus = (*association)->connection->clientSideHandshake()))
@@ -3738,30 +3743,31 @@ setTCPBufferLength(int sock)
     char *TCPBufferLength;
     int bufLen;
 
-    /*
-     * Use a 64K default socket buffer length, fitting the MTU size of the loopback device implementation
-     * in recent Linux kernel versions.
-     * Different environments, particularly slower networks may require different values for optimal
-     * performance.
-     */
 #ifdef HAVE_GUSI_H
     /* GUSI always returns an error for setsockopt(...) */
 #else
-    bufLen = 65536; // a socket buffer size of 64K gives best throughput for image transmission
+    /*
+     * check whether environment variable TCP_BUFFER_LENGTH is set.
+     * If not, the the operating system is responsible for selecting
+     * appropriate values for the TCP send and receive buffer lengths.
+     */
+    DCMNET_TRACE("checking whether environment variable TCP_BUFFER_LENGTH is set");
     if ((TCPBufferLength = getenv("TCP_BUFFER_LENGTH")) != NULL) {
-        if (sscanf(TCPBufferLength, "%d", &bufLen) != 1)
-        {
-            DCMNET_WARN("DULFSM: cannot parse environment variable TCP_BUFFER_LENGTH=" << TCPBufferLength);
-        }
-    }
+        if (sscanf(TCPBufferLength, "%d", &bufLen) == 1) {
 #if defined(SO_SNDBUF) && defined(SO_RCVBUF)
-    (void) setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *) &bufLen, sizeof(bufLen));
-    (void) setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *) &bufLen, sizeof(bufLen));
+            if (bufLen == 0)
+                bufLen = 65536; // a socket buffer size of 64K gives good throughput for image transmission
+            DCMNET_DEBUG("DULFSM: setting TCP buffer length to " << bufLen << " bytes");
+            (void) setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *) &bufLen, sizeof(bufLen));
+            (void) setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *) &bufLen, sizeof(bufLen));
 #else
-     DCMNET_WARN("DULFSM: setTCPBufferLength: "
-            "cannot set TCP buffer length socket option: "
-            "code disabled because SO_SNDBUF and SO_RCVBUF constants are unknown");
+            DCMNET_WARN("DULFSM: setTCPBufferLength: cannot set TCP buffer length socket option: "
+                << "code disabled because SO_SNDBUF and SO_RCVBUF constants are unknown");
 #endif // SO_SNDBUF and SO_RCVBUF
+        } else
+            DCMNET_WARN("DULFSM: cannot parse environment variable TCP_BUFFER_LENGTH=" << TCPBufferLength);
+    } else
+        DCMNET_TRACE("  environment variable TCP_BUFFER_LENGTH not set, using the system defaults");
 #endif // HAVE_GUSI_H
 }
 
diff --git a/dcmnet/libsrc/dulparse.cc b/dcmnet/libsrc/dulparse.cc
index 8a10d32..1d344f5 100644
--- a/dcmnet/libsrc/dulparse.cc
+++ b/dcmnet/libsrc/dulparse.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -466,7 +466,7 @@ parseUserInfo(DUL_USERINFO * userInfo,
     userInfo->type = *buf++;
     // skip unused ("reserved") field
     userInfo->rsv1 = *buf++;
-    // get and remeber announced length of user data
+    // get and remember announced length of user data
     EXTRACT_SHORT_BIG(buf, userInfo->length);
     // .. and skip over the two length field bytes
     buf += 2;
@@ -546,7 +546,8 @@ parseUserInfo(DUL_USERINFO * userInfo,
             userLength -= (unsigned short) length;
             break;
 
-        case DUL_TYPENEGOTIATIONOFUSERIDENTITY:
+        case DUL_TYPENEGOTIATIONOFUSERIDENTITY_REQ:
+        case DUL_TYPENEGOTIATIONOFUSERIDENTITY_ACK:
           if (typeRQorAC == DUL_TYPEASSOCIATERQ)
             usrIdent = new UserIdentityNegotiationSubItemRQ();
           else // assume DUL_TYPEASSOCIATEAC
@@ -838,7 +839,7 @@ makeUnderflowError(const char *pdu, unsigned long minuend,
         unsigned long subtrahend)
 {
   OFStringStream stream;
-  stream << "DUL Illegal " << pdu << ". Got " << minuend << " bytes of data and told to subtrat " << subtrahend << " bytes of data";
+  stream << "DUL Illegal " << pdu << ". Got " << minuend << " bytes of data and told to subtract " << subtrahend << " bytes of data";
   stream << "." << OFStringStream_ends;
 
   OFCondition ret;
diff --git a/dcmnet/libsrc/scp.cc b/dcmnet/libsrc/scp.cc
index af52ad9..8796ed0 100644
--- a/dcmnet/libsrc/scp.cc
+++ b/dcmnet/libsrc/scp.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2009-2016, OFFIS e.V.
+ *  Copyright (C) 2009-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -73,7 +73,7 @@ OFCondition DcmSCP::setConfig(const DcmSCPConfig& config)
 {
   if (isConnected())
   {
-    return EC_IllegalCall; // TODO: need to find better error code
+    return NET_EC_AlreadyConnected;
   }
   m_cfg = DcmSharedSCPConfig( config );
   return EC_Normal;
@@ -123,16 +123,39 @@ OFCondition DcmSCP::listen()
   // successfully. Now, we want to start handling all incoming requests. Since
   // this activity is supposed to represent a server process, we do not want to
   // terminate this activity (unless indicated by the stopAfterCurrentAssociation()
-  // method). Hence, create an infinite while-loop.
-  while( cond.good() && !stopAfterCurrentAssociation() )
+  // or stopAfterConnectionTimeout() methods).
+  while( cond.good() )
   {
     // Wait for an association and handle the requests of
     // the calling applications correspondingly.
     cond = waitForAssociationRQ(network);
+
+    // Check whether we have a timeout
+    if (cond == DUL_NOASSOCIATIONREQUEST)
+    {
+      // If a stop is requested, stop
+      if (stopAfterConnectionTimeout())
+      {
+        cond = NET_EC_StopAfterConnectionTimeout;
+        break;
+      }
+      else
+      {
+        // stay in loop
+        cond = EC_Normal;
+      }
+    }
+    // Stop if SCP is told to stop after association was handled
+    else if (stopAfterCurrentAssociation())
+    {
+      cond = NET_EC_StopAfterAssociation;
+      break;
+    }
   }
+
   // Drop the network, i.e. free memory of T_ASC_Network* structure. This call
   // is the counterpart of ASC_initializeNetwork(...) which was called above.
-  cond = ASC_dropNetwork( &network );
+  ASC_dropNetwork( &network );
   network = NULL;
 
   // return ok
@@ -294,9 +317,6 @@ void DcmSCP::refuseAssociation(const DcmRefuseReasonType reason)
 
   // Reject the association request.
   ASC_rejectAssociation( m_assoc, &rej );
-
-  // Drop and destroy the association.
-  dropAndDestroyAssociation();
 }
 
 // ----------------------------------------------------------------------------
@@ -314,20 +334,37 @@ OFCondition DcmSCP::waitForAssociationRQ(T_ASC_Network *network)
   OFCondition cond = ASC_receiveAssociation( network, &m_assoc, m_cfg->getMaxReceivePDULength(), NULL, NULL, OFFalse,
                                              m_cfg->getConnectionBlockingMode(), OFstatic_cast(int, timeout) );
 
-  // just return, if timeout occurred (DUL_NOASSOCIATIONREQUEST)
+  // In case of a timeout in non-blocking mode, call notifier (and return
+  // to main event loop later)
   if ( cond == DUL_NOASSOCIATIONREQUEST )
   {
-    return EC_Normal;
+    notifyConnectionTimeout();
   }
-
-  // if error occurs close association and return
-  if( cond.bad() )
+  else
   {
-    dropAndDestroyAssociation();
-    return EC_Normal;
+    // If association could be received, handle it
+    if( cond.good() )
+    {
+      cond = processAssociationRQ();
+      // There was an association which has ended now:
+      // Call notifier and output separator line.
+      notifyAssociationTermination();
+      DCMNET_DEBUG( "+++++++++++++++++++++++++++++" );
+    }
+    // Else, if we could not receive an association request since there was
+    // some error, just ignore it (and continue in main event loop later)
+    else
+    {
+      DCMNET_ERROR("Could not receive association request: " << cond.text());
+      cond = EC_Normal;
+    }
   }
 
-  return processAssociationRQ();
+  // We are done with this association, free it and set to NULL.
+  // ASC_receiveAssociation will always create a related structure, even
+  // if no association was received at all.
+  dropAndDestroyAssociation();
+  return cond;
 }
 
 
@@ -344,7 +381,6 @@ OFCondition DcmSCP::processAssociationRQ()
     if (desiredAction == DCMSCP_ACTION_REFUSE_ASSOCIATION)
     {
       refuseAssociation( DCMSCP_INTERNAL_ERROR );
-      dropAndDestroyAssociation();
       return EC_Normal;
     }
     else desiredAction = DCMSCP_ACTION_UNDEFINED; // reset for later use
@@ -357,7 +393,6 @@ OFCondition DcmSCP::processAssociationRQ()
   if( m_cfg->getRefuseAssociation() )
   {
     refuseAssociation( DCMSCP_FORCED );
-    dropAndDestroyAssociation();
     return EC_Normal;
   }
 
@@ -368,7 +403,6 @@ OFCondition DcmSCP::processAssociationRQ()
   if( cond.bad() || strcmp( buf, DICOM_STDAPPLICATIONCONTEXT ) != 0 )
   {
     refuseAssociation( DCMSCP_BAD_APPLICATION_CONTEXT_NAME );
-    dropAndDestroyAssociation();
     return EC_Normal;
   }
 
@@ -377,14 +411,12 @@ OFCondition DcmSCP::processAssociationRQ()
   if (!checkCalledAETitleAccepted(m_assoc->params->DULparams.calledAPTitle))
   {
     refuseAssociation( DCMSCP_CALLED_AE_TITLE_NOT_RECOGNIZED );
-    dropAndDestroyAssociation();
     return EC_Normal;
   }
 
   if (!checkCallingAETitleAccepted(m_assoc->params->DULparams.callingAPTitle))
   {
     refuseAssociation( DCMSCP_CALLING_AE_TITLE_NOT_RECOGNIZED );
-    dropAndDestroyAssociation();
     return EC_Normal;
   }
 
@@ -402,7 +434,6 @@ OFCondition DcmSCP::processAssociationRQ()
   cond = negotiateAssociation();
   if( cond.bad() )
   {
-    dropAndDestroyAssociation();
     return EC_Normal;
   }
 
@@ -417,7 +448,6 @@ OFCondition DcmSCP::processAssociationRQ()
     else
       DCMNET_DEBUG(ASC_dumpParameters(tempStr, m_assoc->params, ASC_ASSOC_RJ));
     refuseAssociation( DCMSCP_NO_PRESENTATION_CONTEXTS );
-    dropAndDestroyAssociation();
     return EC_Normal;
   }
 
@@ -425,7 +455,6 @@ OFCondition DcmSCP::processAssociationRQ()
   cond = ASC_acknowledgeAssociation( m_assoc );
   if( cond.bad() )
   {
-    dropAndDestroyAssociation();
     return EC_Normal;
   }
   notifyAssociationAcknowledge();
@@ -438,9 +467,10 @@ OFCondition DcmSCP::processAssociationRQ()
   else
     DCMNET_DEBUG(ASC_dumpParameters(tempStr, m_assoc->params, ASC_ASSOC_AC));
 
-   // Go ahead and handle the association (i.e. handle the callers requests) in this process
-   handleAssociation();
-   return EC_Normal;
+  // Go ahead and handle the association (i.e. handle the caller's requests) in this process
+  handleAssociation();
+
+  return EC_Normal;
 }
 
 // ----------------------------------------------------------------------------
@@ -533,12 +563,6 @@ void DcmSCP::handleAssociation()
     notifyDIMSEError(cond);
     ASC_abortAssociation( m_assoc );
   }
-
-  // Drop and destroy the association.
-  dropAndDestroyAssociation();
-
-  // Output separator line.
-  DCMNET_DEBUG( "+++++++++++++++++++++++++++++" );
 }
 
 // ----------------------------------------------------------------------------
@@ -1862,9 +1886,9 @@ OFString DcmSCP::getPeerIP() const
 
 void DcmSCP::dropAndDestroyAssociation()
 {
+
   if (m_assoc)
   {
-    notifyAssociationTermination();
     ASC_dropSCPAssociation( m_assoc );
     ASC_destroyAssociation( &m_assoc );
   }
@@ -1927,6 +1951,7 @@ void DcmSCP::notifyReleaseRequest()
   DCMNET_INFO("Received Association Release Request");
 }
 
+
 // ----------------------------------------------------------------------------
 
 void DcmSCP::notifyAbortRequest()
@@ -1943,6 +1968,13 @@ void DcmSCP::notifyAssociationTermination()
 
 // ----------------------------------------------------------------------------
 
+void DcmSCP::notifyConnectionTimeout()
+{
+  DCMNET_TRACE("Connection timeout encountered in non-blocking mode");
+}
+
+// ----------------------------------------------------------------------------
+
 void DcmSCP::notifyDIMSEError(const OFCondition &cond)
 {
   OFString tempStr;
@@ -1956,6 +1988,13 @@ OFBool DcmSCP::stopAfterCurrentAssociation()
   return OFFalse;
 }
 
+// ----------------------------------------------------------------------------
+
+OFBool DcmSCP::stopAfterConnectionTimeout()
+{
+  return OFFalse;
+}
+
 
 /* ************************************************************************* */
 /*                            Callback functions                             */
diff --git a/dcmnet/tests/CMakeLists.txt b/dcmnet/tests/CMakeLists.txt
index 31bd712..2044aa1 100644
--- a/dcmnet/tests/CMakeLists.txt
+++ b/dcmnet/tests/CMakeLists.txt
@@ -1,5 +1,5 @@
 # declare executables
-DCMTK_ADD_EXECUTABLE(dcmnet_tests tests tdump tpool)
+DCMTK_ADD_EXECUTABLE(dcmnet_tests tests tdump tpool tscuscp)
 
 # make sure executables are linked to the corresponding libraries
 DCMTK_TARGET_LINK_MODULES(dcmnet_tests dcmnet)
diff --git a/dcmnet/tests/Makefile.dep b/dcmnet/tests/Makefile.dep
index e7e8333..f2cec33 100644
--- a/dcmnet/tests/Makefile.dep
+++ b/dcmnet/tests/Makefile.dep
@@ -237,3 +237,130 @@ tpool.o: tpool.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmnet/dccfprmp.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmnet/diutil.h \
  ../include/dcmtk/dcmnet/scu.h
+tscuscp.o: tscuscp.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/oftest.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h ../include/dcmtk/dcmnet/scp.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
+ ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
+ ../include/dcmtk/dcmnet/dcompat.h \
+ ../../ofstd/include/dcmtk/ofstd/ofbmanip.h ../include/dcmtk/dcmnet/lst.h \
+ ../include/dcmtk/dcmnet/dul.h ../include/dcmtk/dcmnet/extneg.h \
+ ../include/dcmtk/dcmnet/dcuserid.h ../include/dcmtk/dcmnet/dimse.h \
+ ../include/dcmtk/dcmnet/scpcfg.h ../include/dcmtk/dcmnet/dcasccff.h \
+ ../include/dcmtk/dcmnet/dcasccfg.h ../include/dcmtk/dcmnet/dccftsmp.h \
+ ../include/dcmtk/dcmnet/dccfuidh.h ../include/dcmtk/dcmnet/dccfpcmp.h \
+ ../include/dcmtk/dcmnet/dccfrsmp.h ../include/dcmtk/dcmnet/dccfenmp.h \
+ ../include/dcmtk/dcmnet/dccfprmp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmnet/diutil.h \
+ ../include/dcmtk/dcmnet/scu.h
diff --git a/dcmnet/tests/Makefile.in b/dcmnet/tests/Makefile.in
index d3553c5..0cf0e5c 100644
--- a/dcmnet/tests/Makefile.in
+++ b/dcmnet/tests/Makefile.in
@@ -21,9 +21,9 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include \
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(ofstddir)/libsrc -L$(oflogdir)/libsrc \
 	-L$(dcmdatadir)/libsrc -L$(dcmtlsdir)/libsrc $(compr_libdirs)
 LOCALLIBS = -ldcmnet -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(TCPWRAPPERLIBS) \
-	$(ICONVLIBS)
+	$(CHARCONVLIBS)
 
-objs = tests.o tdump.o tpool.o
+objs = tests.o tdump.o tpool.o tscuscp.o
 progs = tests
 
 
diff --git a/dcmnet/tests/tests.cc b/dcmnet/tests/tests.cc
index 69c04e0..c22672c 100644
--- a/dcmnet/tests/tests.cc
+++ b/dcmnet/tests/tests.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012-2013, OFFIS e.V.
+ *  Copyright (C) 2012-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -27,6 +27,11 @@ OFTEST_REGISTER(dcmnet_dimseDump_nullByte);
 
 #ifdef WITH_THREADS
 OFTEST_REGISTER(dcmnet_scp_pool);
+OFTEST_REGISTER(dcmnet_scp_stop_after_current_association);
+OFTEST_REGISTER(dcmnet_scp_stop_after_timeout);
+OFTEST_REGISTER(dcmnet_scp_no_stop_wo_request_noblock);
+OFTEST_REGISTER(dcmnet_scp_no_stop_wo_request_block);
+OFTEST_REGISTER(dcmnet_scp_no_term_notify_without_association);
 #endif // WITH_THREADS
 
 OFTEST_MAIN("dcmnet")
diff --git a/dcmnet/tests/tscuscp.cc b/dcmnet/tests/tscuscp.cc
new file mode 100644
index 0000000..b478762
--- /dev/null
+++ b/dcmnet/tests/tscuscp.cc
@@ -0,0 +1,340 @@
+/*
+ *
+ *  Copyright (C) 2017, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    Open Connections GmbH
+ *    Stau 33
+ *    D-26122 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmnet
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: Test DcmSPC and DcmSCU classes (only certain aspects so far)
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#ifdef WITH_THREADS
+
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/dcmnet/scp.h"
+#include "dcmtk/dcmnet/scu.h"
+
+/** SCP derived from DcmSCP in order to test two types of virtual methods:
+ *  <ul>
+ *    <li> Notifiers: Called for some events happening in DcmSCP. So far
+ *    only the notifiers notifyConnectionTimeout() as and notifyAssociationTermination
+ *    are tested</li>
+ *    <li> Setters: Functions returning a value in order to enforce
+ *    a specific DcmSCP behaviour. So far, only stopAfterCurrentAssociation() and
+ *    stopAfterConnectionTimeout() are tested.
+ *  </ul>
+ *  Additionally the SCP derives from OFThread in order to construct the
+ *  test case (i.e. send data with SCU at the same time and check results).
+ */
+struct TestSCP: DcmSCP, OFThread
+{
+
+  /** Constructor
+   */
+  TestSCP() :
+    DcmSCP(),
+    m_listen_result(EC_NotYetImplemented), // value indicating "not set"
+    m_set_stop_after_assoc(OFFalse),
+    m_set_stop_after_timeout(OFFalse),
+    m_stop_after_assoc_result(OFFalse),
+    m_stop_after_timeout_result(OFFalse),
+    m_notify_connection_timeout_result(OFFalse),
+    m_notify_assoc_termination_result(OFFalse)
+  {
+  }
+
+  /** Clear settings
+   */
+  void clear()
+  {
+    m_listen_result = EC_NotYetImplemented;
+    m_set_stop_after_assoc = OFFalse;
+    m_set_stop_after_timeout = OFFalse;
+    m_stop_after_assoc_result = OFFalse;
+    m_stop_after_timeout_result = OFFalse;
+    m_notify_connection_timeout_result = OFFalse;
+    m_notify_assoc_termination_result = OFFalse;
+
+  }
+
+  /** Overwrite method from DcmSCP in order to test feature to stop after current
+   *  association.
+   *  @return Returns value of m_set_stop_after_assoc
+   */
+  virtual OFBool stopAfterCurrentAssociation()
+  {
+    if (m_set_stop_after_assoc)
+    {
+      m_stop_after_assoc_result = OFTrue;
+    }
+    return m_set_stop_after_assoc;
+  }
+
+  /** Overwrite method from DcmSCP in order to test feature to stop after
+   *  the SCP's connection timeout occurred in non-blocking mode.
+   *  @return Returns value of m_set_stop_after_timeout
+   */
+  virtual OFBool stopAfterConnectionTimeout()
+  {
+    if (m_set_stop_after_timeout)
+    {
+      m_stop_after_timeout_result = OFTrue;
+    }
+    return m_set_stop_after_timeout;
+  }
+
+  /** Overwrite method from DcmSCP in order to test feature that SCP reports
+   *  connection timeout in non-blocking mode.
+   */
+  virtual void notifyConnectionTimeout()
+  {
+    m_notify_connection_timeout_result = OFTrue;
+  }
+
+  /** Overwrite method from DcmSCP in order to test feature that SCP reports
+   *  the termination of an association.
+   */
+  virtual void notifyAssociationTermination()
+  {
+    m_notify_assoc_termination_result = OFTrue;
+  }
+
+  /// The result returned my SCP's listen() method
+  OFCondition m_listen_result;
+  /// If set, the SCP should stop after the currently running association
+  OFBool m_set_stop_after_assoc;
+  /// If set, the SCP should stop after TCP timeout occurred in non-blocking mode
+  OFBool m_set_stop_after_timeout;
+  /// Indicator whether related virtual function was called and returned accordingly
+  OFBool m_stop_after_assoc_result;
+  /// Indicator whether related virtual function was called and returned accordingly
+  OFBool m_stop_after_timeout_result;
+  /// Indicator whether related virtual notifier function was called
+  OFBool m_notify_connection_timeout_result;
+  /// Indicator whether related virtual notifier function was called
+  OFBool m_notify_assoc_termination_result;
+
+  /** Method called by OFThread to start SCP operation. Starts listen() loop of DcmSCP.
+   */
+  virtual void run()
+  {
+      m_listen_result = listen();
+  }
+
+};
+
+/** Configure Verification SOP class on server
+ *  @param  cfg The SCP configuration to modify
+ */
+void configure_scp_for_echo(DcmSCPConfig& cfg)
+{
+  cfg.setPort(11112);
+  OFList<OFString> xfers;
+  xfers.push_back(UID_LittleEndianImplicitTransferSyntax);
+  cfg.addPresentationContext(UID_VerificationSOPClass, xfers);
+}
+
+
+/** Send ECHO to SCP
+ *  @param  called_ae_title The Called AE Title to be used
+ *  @param  do_release  If OFTrue, SCU should release the association (otherwise
+ *          we expect the SCP to do that.
+ *  @param  secs_after_echo Seconds to wait after sending echo
+ */
+void scu_sends_echo(
+  const OFString& called_ae_title,
+  const OFBool do_release = OFTrue,
+  const int secs_after_echo = 0)
+{
+  // make sure server is up
+  OFStandard::sleep(2);
+  DcmSCU scu;
+  scu.setAETitle("TEST_SCU");
+  scu.setPeerAETitle(called_ae_title);
+  scu.setPeerHostName("localhost");
+  scu.setPeerPort(11112);
+  OFList<OFString> xfers;
+  xfers.push_back(UID_LittleEndianImplicitTransferSyntax);
+  OFCondition result = scu.addPresentationContext(UID_VerificationSOPClass, xfers);
+  OFCHECK(result.good());
+  result = scu.initNetwork();
+  OFCHECK(result.good());
+  result = scu.negotiateAssociation();
+  OFCHECK(result.good());
+  result = scu.sendECHORequest(1);
+  OFCHECK(result.good());
+  OFStandard::sleep(secs_after_echo);
+  if (do_release)
+  {
+    result = scu.releaseAssociation();
+    OFCHECK(result.good());
+  }
+
+  return;
+}
+
+
+// Test case that checks whether server returns after association if enabled
+OFTEST_FLAGS(dcmnet_scp_stop_after_current_association, EF_Slow)
+{
+    TestSCP scp;
+    DcmSCPConfig& config = scp.getConfig();
+    configure_scp_for_echo(config);
+
+    config.setAETitle("STOP_AFTER_ASSOC");
+    config.setConnectionBlockingMode(DUL_BLOCK);
+    scp.start();
+
+    scu_sends_echo("STOP_AFTER_ASSOC");
+    OFStandard::sleep(1);  // make sure server would have time to return
+
+    // Check whether all test variables have the correct values
+    OFCHECK(scp.m_listen_result == EC_NotYetImplemented); // still listening
+    OFCHECK(scp.m_stop_after_assoc_result == OFFalse);
+    OFCHECK(scp.m_stop_after_timeout_result == OFFalse);
+    OFCHECK(scp.m_notify_connection_timeout_result == OFFalse);
+    OFCHECK(scp.m_notify_assoc_termination_result == OFTrue); // scu released association
+
+    // Tell SCP to stop after association and run SCU again
+    scp.clear();
+    scp.m_set_stop_after_assoc = OFTrue;
+    scu_sends_echo("STOP_AFTER_ASSOC");
+    OFStandard::sleep(1);
+
+    // Check whether all test variables have the correct values
+    OFCHECK(scp.m_listen_result == NET_EC_StopAfterAssociation);
+    OFCHECK(scp.m_stop_after_timeout_result == OFFalse);
+    OFCHECK(scp.m_notify_connection_timeout_result == OFFalse);
+    OFCHECK(scp.m_notify_assoc_termination_result == OFTrue); // scu released association
+
+    scp.join();
+    OFCHECK(scp.m_listen_result == NET_EC_StopAfterAssociation);
+}
+
+
+OFTEST_FLAGS(dcmnet_scp_stop_after_timeout, EF_Slow)
+{
+    TestSCP scp;
+    DcmSCPConfig& config = scp.getConfig();
+    configure_scp_for_echo(config);
+
+    config.setAETitle("STOP_AFTER_TMOUT");
+    config.setConnectionBlockingMode(DUL_NOBLOCK);
+    config.setConnectionTimeout(3);
+    scp.m_set_stop_after_timeout = OFTrue;
+    scp.start();
+
+    scu_sends_echo("STOP_AFTER_TMOUT");
+    OFStandard::sleep(5); // make sure server has enough time to run into timeout
+
+    // Check whether all test variables have the correct values
+    OFCHECK(scp.m_stop_after_assoc_result == OFFalse);
+    OFCHECK(scp.m_stop_after_timeout_result == OFTrue);                 // virtual "decision" method actually called
+    OFCHECK(scp.m_notify_connection_timeout_result == OFTrue);          // virtual notifier method actually called
+    OFCHECK(scp.m_notify_assoc_termination_result == OFTrue);           // scu released association
+
+    scp.join();
+    OFCHECK(scp.m_listen_result == NET_EC_StopAfterConnectionTimeout);  // SCP returns, using specific return code
+}
+
+
+// Check whether SCP does not stop without request in blocking mode
+OFTEST_FLAGS(dcmnet_scp_no_stop_wo_request_noblock, EF_Slow)
+{
+    TestSCP scp;
+    DcmSCPConfig& config = scp.getConfig();
+    configure_scp_for_echo(config);
+
+    config.setAETitle("NO_STOP_NOBLOCK");
+    config.setConnectionBlockingMode(DUL_NOBLOCK);
+    config.setConnectionTimeout(1);
+    scp.m_set_stop_after_timeout = OFFalse;
+    scp.start();
+
+    scu_sends_echo("NO_STOP_NOBLOCK");
+    OFStandard::sleep(3); // should enough for the SCP to run into a timeout (1 sec)
+
+    // Check whether all test variables have the correct values
+    OFCHECK(scp.m_listen_result == EC_NotYetImplemented); // still listening
+    OFCHECK(scp.m_stop_after_assoc_result == OFFalse);
+    OFCHECK(scp.m_stop_after_timeout_result == OFFalse);
+    OFCHECK(scp.m_notify_connection_timeout_result == OFTrue); // Timeout occurred, but we do not stop
+    OFCHECK(scp.m_notify_assoc_termination_result == OFTrue);  // SCU released association
+
+    // Stop (already tested in former test cases)
+    scp.m_set_stop_after_timeout = OFTrue;
+    scp.join();
+}
+
+
+// Check whether SCP does not stop without request in blocking mode
+OFTEST_FLAGS(dcmnet_scp_no_stop_wo_request_block, EF_Slow)
+{
+    TestSCP scp;
+    DcmSCPConfig& config = scp.getConfig();
+    configure_scp_for_echo(config);
+
+
+    config.setAETitle("NO_STOP_BLOCK");
+    config.setConnectionBlockingMode(DUL_BLOCK);
+    scp.start();
+
+    scu_sends_echo("NO_STOP_BLOCK");
+    OFStandard::sleep(3); // should enough for the SCP to run into a timeout (1 sec)
+
+    // Check whether all test variables have the correct values
+    // SCP did not return yet (check whether it is still connected,
+    // since no test for m_listen_result possible)
+    OFCHECK(scp.m_listen_result == EC_NotYetImplemented); // still listening
+    OFCHECK(scp.m_stop_after_assoc_result == OFFalse);
+    OFCHECK(scp.m_stop_after_timeout_result == OFFalse);
+    OFCHECK(scp.m_notify_connection_timeout_result == OFFalse);
+    OFCHECK(scp.m_notify_assoc_termination_result == OFTrue);  // SCU released association
+
+    // Stop (already tested in former test cases), therefore, send another echo
+    scp.m_set_stop_after_assoc = OFTrue;
+    scu_sends_echo("NO_STOP_BLOCK");
+
+    scp.join();
+}
+
+
+// Check association termination notifier does not fire when there was no
+// association at all
+OFTEST_FLAGS(dcmnet_scp_no_term_notify_without_association, EF_Slow)
+{
+    TestSCP scp;
+    DcmSCPConfig& config = scp.getConfig();
+    configure_scp_for_echo(config);
+
+    config.setAETitle("NO_TERM_WO_ASSOC");
+    config.setConnectionBlockingMode(DUL_NOBLOCK);
+    config.setConnectionTimeout(1);
+    scp.m_set_stop_after_timeout = OFTrue;
+    scp.start();
+    OFStandard::sleep(3); // make sure server runs into timeout
+    // Check whether all test variables have the correct values.
+    OFCHECK(scp.m_stop_after_assoc_result == OFFalse);
+    OFCHECK(scp.m_stop_after_timeout_result == OFFalse);
+    OFCHECK(scp.m_notify_connection_timeout_result == OFFalse);
+    OFCHECK(scp.m_notify_assoc_termination_result == OFFalse); // no notification
+
+    scp.join();
+    OFCHECK(scp.m_listen_result == NET_EC_StopAfterConnectionTimeout); // SCP ran into timeout
+}
+
+
+#endif // WITH_THREADS
diff --git a/dcmpmap/CMakeLists.txt b/dcmpmap/CMakeLists.txt
new file mode 100644
index 0000000..5871a54
--- /dev/null
+++ b/dcmpmap/CMakeLists.txt
@@ -0,0 +1,10 @@
+# declare project
+PROJECT(dcmpmaps)
+
+# declare include directories which hold for all subdirectories
+INCLUDE_DIRECTORIES(${dcmpmaps_SOURCE_DIR}/include  ${dcmfg_SOURCE_DIR}/include ${dcmiod_SOURCE_DIR}/include ${dcmdata_SOURCE_DIR}/include ${ofstd_SOURCE_DIR}/include ${oflog_SOURCE_DIR}/include ${ZLIB_INCDIR})
+
+# recurse into subdirectories
+FOREACH(SUBDIR libsrc include)
+  ADD_SUBDIRECTORY(${SUBDIR})
+ENDFOREACH(SUBDIR)
diff --git a/dcmpmap/Makefile.in b/dcmpmap/Makefile.in
new file mode 100644
index 0000000..0a973a0
--- /dev/null
+++ b/dcmpmap/Makefile.in
@@ -0,0 +1,86 @@
+#
+#	Makefile for dcmpmaps
+#
+
+ at SET_MAKE@
+
+SHELL = /bin/sh
+VPATH = @srcdir@:@top_srcdir@/include:@top_srcdir@/@configdir@/include
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+configdir = @top_srcdir@/@configdir@
+
+include $(configdir)/@common_makefile@
+
+
+all: include-all libsrc-all tests-all
+
+install: install-doc install-support
+
+install-doc: docs-install
+
+install-data: data-install
+
+install-etc: etc-install
+
+install-include: include-install
+
+install-lib: libsrc-install install-include
+
+install-support: install-data install-etc
+
+
+include-all:
+	(cd include && $(MAKE) ARCH="$(ARCH)" all)
+
+libsrc-all: include-all
+	(cd libsrc && $(MAKE) ARCH="$(ARCH)" all)
+
+tests-all: libsrc-all
+	(cd tests && $(MAKE) ARCH="$(ARCH)" all)
+
+
+check: tests-all
+	(cd tests && $(MAKE) check)
+
+check-exhaustive: tests-all
+	(cd tests && $(MAKE) check-exhaustive)
+
+
+include-install:
+	(cd include && $(MAKE) ARCH="$(ARCH)" install)
+
+libsrc-install: libsrc-all
+	(cd libsrc && $(MAKE) ARCH="$(ARCH)" install)
+
+docs-install:
+	(cd docs && $(MAKE) install)
+
+data-install:
+	(cd data && $(MAKE) install)
+
+etc-install:
+	(cd etc && $(MAKE) install)
+
+
+clean:
+	(cd include && $(MAKE) clean)
+	(cd libsrc && $(MAKE) clean)
+	(cd tests && $(MAKE) clean)
+	(cd docs && $(MAKE) clean)
+	(cd data && $(MAKE) clean)
+	(cd etc && $(MAKE) clean)
+	rm -f $(TRASH)
+
+distclean:
+	(cd include && $(MAKE) distclean)
+	(cd libsrc && $(MAKE) distclean)
+	(cd tests && $(MAKE) distclean)
+	(cd docs && $(MAKE) distclean)
+	(cd data && $(MAKE) distclean)
+	(cd etc && $(MAKE) distclean)
+	rm -f $(DISTTRASH)
+
+dependencies:
+	(cd libsrc && touch $(DEP) && $(MAKE) dependencies)
+#	(cd tests && touch $(DEP) && $(MAKE) dependencies)
diff --git a/dcmpmap/configure b/dcmpmap/configure
new file mode 100755
index 0000000..3877a6a
--- /dev/null
+++ b/dcmpmap/configure
@@ -0,0 +1,53 @@
+#! /bin/sh
+
+parentdir=`pwd`
+thisdir=$parentdir
+
+# The following test constructs relative path from the module
+# directory to the configuration directory. If you know this path
+# you can substitute this with
+# configdir=<relative_path>
+# It is very important that the configdir path is relative.
+
+configdir="configdir"
+
+while test "$parentdir" != "/" -a "$configdir" = "configdir"; do
+	if test -d "$parentdir/config" ; then
+		configdir=$parentdir/config
+	else
+		parentdir=`echo $parentdir | sed 's/\/[^\/]*$//'`
+	fi
+done
+
+if test "$configdir" = "configdir" ; then
+	echo "Cannot find configure directory"
+	exit 1
+fi
+
+if test $# != 0;  then
+	case $1 in
+	-a)
+		shift
+		cd "$configdir"
+		echo "running configure in config-directory"
+		./configure $*
+		cd $thisdir
+		echo "running configure for this module"
+		sh "$configdir/confmod" --srcdir=. $*
+		;;
+	-c)
+		shift
+		cd "$configdir"
+		echo "running configure in config-directory"
+		./configure $*
+		;;
+	*)
+		echo "running configure for this module"
+		sh "$configdir/confmod" --srcdir=. $*
+		;;
+	esac
+else
+	echo "running configure for this module"
+	sh "$configdir/confmod" --srcdir=. $*
+fi
+
diff --git a/dcmpmap/data/Makefile.in b/dcmpmap/data/Makefile.in
new file mode 100644
index 0000000..fb38e30
--- /dev/null
+++ b/dcmpmap/data/Makefile.in
@@ -0,0 +1,23 @@
+#
+#	Makefile for dcmpmap/data
+#
+
+ at SET_MAKE@
+
+SHELL = /bin/sh
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+configdir = @top_srcdir@/@configdir@
+
+include $(configdir)/@common_makefile@
+
+
+all:
+
+install:
+
+clean:
+	rm -f $(TRASH)
+
+distclean:
+	rm -f $(DISTTRASH)
diff --git a/dcmpmap/docs/Makefile.in b/dcmpmap/docs/Makefile.in
new file mode 100644
index 0000000..80daade
--- /dev/null
+++ b/dcmpmap/docs/Makefile.in
@@ -0,0 +1,23 @@
+#
+#	Makefile for dcmpmap/docs
+#
+
+ at SET_MAKE@
+
+SHELL = /bin/sh
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+configdir = @top_srcdir@/@configdir@
+
+include $(configdir)/@common_makefile@
+
+
+all:
+
+install:
+
+clean:
+	rm -f $(TRASH)
+
+distclean:
+	rm -f $(DISTTRASH)
diff --git a/dcmpmap/docs/dcmpmap.dox b/dcmpmap/docs/dcmpmap.dox
new file mode 100644
index 0000000..0c8da07
--- /dev/null
+++ b/dcmpmap/docs/dcmpmap.dox
@@ -0,0 +1,527 @@
+/*!
+
+\page mod_dcmpmap dcmpmap: a library for working with parametric map objects
+
+This module contains classes to create, load, access and store DICOM Parametric
+Map objects, which have originally been introduced to the DICOM standard with
+<a href="ftp://medical.nema.org/medical/dicom/final/sup172_ft2.pdf">Supplement
+172</a> in 2014.
+
+In the standard, the data inside each Parametric Map object must rely on one of
+these data types:
+
+\li 16 bit unsigned integer
+\li 16 bit signed integer
+\li 32 bit floating point
+\li 64 bit floating point
+
+All of them are supported by the dcmpmap library.
+
+The main class of this module is:
+\li \b DPMParametricMapIOD
+
+This module makes heavy use of the \ref mod_dcmiod "dcmiod" module for managing
+common IOD attributes and the \ref mod_dcmfg "dcmfg" module for functional group
+support. Read the "Examples" sections for more explanations.
+
+\section dcmpmap_examples Examples
+
+The following two examples show:
+\li How to access and dump information (including the binary data values) from a
+Parametric Map object
+\li and how to use the API to create such an object yourself.
+
+\subsection example_dump Dumping information from Parametric Map
+
+The Parametric Map class uses a template in order to instantiate the correct
+pixel data type internally, and to offer a dedicated API for that type. Allowed
+types are Uint16, Sint16, Float32 and Float64.
+
+Since internally the data types are handled in a C++ Variant, the usual concept
+to "switch" between these types in code is to use a Visitor which overloads the
+operator "()" for each data type that can occur in the Variant. This concept is
+also demonstrated below where the type of pixel data is printed.
+
+The rest of the code uses the API of the \ref mod_dcmiod "dcmiod" and
+\ref mod_dcmfg "dcmfg" module in order to get basic information about Patient,
+Study, Series and Instance, as well as functional group information, especially
+the Real World Value Mapping defined in the file.
+
+\code
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+#include "dcmtk/dcmpmap/dpmparametricmapiod.h"
+
+static void dumpRWVM(const unsigned long frameNumber,
+                     FGInterface& fg)
+{
+  FGRealWorldValueMapping* rw = OFstatic_cast(FGRealWorldValueMapping*, fg.get(frameNumber, DcmFGTypes::EFG_REALWORLDVALUEMAPPING));
+  if (rw)
+  {
+    size_t numMappings = rw->getRealWorldValueMapping().size();
+    COUT << "  Number of Real World Value Mappings defined: " << numMappings << OFendl;
+    for (size_t m = 0; m < numMappings; m++)
+    {
+      FGRealWorldValueMapping::RWVMItem* item = rw->getRealWorldValueMapping()[m];
+      OFString label, expl;
+      item->getLUTLabel(label);
+      item->getLUTExplanation(expl);
+      COUT << "    RWVM Mapping #" << m << ":" << OFendl;
+      COUT << "      LUT Label: << " << label << OFendl;
+      COUT << "      LUT Explanation: " << expl << OFendl;
+      COUT << "      Measurement Units Code: " << item->getMeasurementUnitsCode().toString() << OFendl;
+      size_t numQuant = item->getEntireQuantityDefinitionSequence().size();
+      if (numQuant > 0)
+      {
+        COUT << "    Number of Quantities defined: " << numQuant << OFendl;
+        for (size_t q = 0; q < numQuant; q++)
+        {
+          ContentItemMacro* macro = item->getEntireQuantityDefinitionSequence()[q];
+          COUT << "      Quantity #" << q << ": " << macro->toString() << OFendl;
+        }
+      }
+    }
+  }
+  else
+  {
+    CERR << "  Error: No Real World Value Mappings defined for frame #" << frameNumber << OFendl;
+  }
+}
+
+class DumpFramesVisitor
+{
+public:
+
+  DumpFramesVisitor(DPMParametricMapIOD* map,
+                    const unsigned long numPerFrame)
+  : m_Map(map)
+  , m_numPerFrame(numPerFrame)
+  {
+  }
+
+  template<typename T>
+  OFBool operator()(DPMParametricMapIOD::Frames<T>& frames)
+  {
+    dumpDataType(frames);
+    for (unsigned long f = 0; f < m_Map->getNumberOfFrames(); f++)
+    {
+      COUT << "Dumping info of frame #" << f << ":" << OFendl;
+      FGInterface& fg = m_Map->getFunctionalGroups();
+      dumpRWVM(f, fg);
+      COUT << "Dumping data for frame #" << f << ": " << OFendl;
+      T* frame = frames.getFrame(f);
+      for (unsigned long p = 0; p < m_numPerFrame; p++)
+      {
+        COUT << frame[p] << " ";
+      }
+      COUT << OFendl << OFendl;
+    }
+    return 0;
+  }
+
+  OFBool operator()(OFCondition& cond)
+  {
+    // Avoid compiler warning
+    (void)cond;
+    CERR << "Type of data samples not supported" << OFendl;
+    return OFFalse;
+  }
+
+  OFBool dumpHeader(DPMParametricMapIOD::Frames<Float32>& frames)
+  {
+    // Avoid compiler warning
+    (void)frames;
+    COUT << "File has 32 Bit float data" << OFendl;
+    return OFFalse;
+  }
+
+  OFBool dumpHeader(DPMParametricMapIOD::Frames<Uint16>& frames)
+  {
+    // Avoid compiler warning
+    (void)frames;
+    COUT << "File has 16 Bit unsigned integer data" << OFendl;
+    return OFFalse;
+  }
+
+  OFBool dumpHeader(DPMParametricMapIOD::Frames<Sint16>& frames)
+  {
+    // Avoid compiler warning
+    (void)frames;
+    COUT << "File has 16 Bit signed integer data" << OFendl;
+    return OFFalse;
+  }
+
+  OFBool dumpHeader(DPMParametricMapIOD::Frames<Float64>& frames)
+  {
+    // Avoid compiler warning
+    (void)frames;
+    COUT << "File has 64 Bit float data" << OFendl;
+    return OFTrue;
+  }
+
+  template<typename T>
+  OFBool dumpDataType(DPMParametricMapIOD::Frames<T>& frames)
+  {
+    // Avoid compiler warning
+    (void)frames;
+    CERR << "Type of data samples not supported" << OFendl;
+    return OFFalse;
+  }
+
+  DPMParametricMapIOD* m_Map;
+  unsigned long m_numPerFrame;
+
+};
+
+
+static void dumpGeneral(DPMParametricMapIOD& map)
+{
+  OFString patName, patID, studyUID, studyDate, seriesUID, modality, sopUID;
+  map.getPatient().getPatientName(patName);
+  map.getPatient().getPatientID(patID);
+  map.getStudy().getStudyInstanceUID(studyUID);
+  map.getStudy().getStudyDate(studyDate);
+  map.getSeries().getSeriesInstanceUID(seriesUID);
+  map.getSeries().getModality(modality);
+  map.getSOPCommon().getSOPInstanceUID(sopUID);
+  COUT << "Patient Name       : " << patName << OFendl;
+  COUT << "Patient ID         : " << patID << OFendl;
+  COUT << "Study Instance UID : " << studyUID << OFendl;
+  COUT << "Study Date         : " << studyDate << OFendl;
+  COUT << "Series Instance UID: " << seriesUID << OFendl;
+  COUT << "SOP Instance UID   : " << sopUID << OFendl;
+  COUT << "---------------------------------------------------------------" << OFendl;
+  OFBool isPerFrame;
+  map.getFunctionalGroups().get(0, DcmFGTypes::EFG_REALWORLDVALUEMAPPING, isPerFrame);
+  if (isPerFrame)
+  {
+    COUT << "Real World Value Mapping: Defined per-frame" << OFendl;
+  }
+  else
+  {
+    COUT << "Real World Value Mapping: Defined shared (i.e. single definition for all frames):" << OFendl;
+  }
+  COUT << "---------------------------------------------------------------" << OFendl;
+}
+
+
+int main (int argc, char* argv[])
+{
+  // OFLog::configure(OFLogger::DEBUG_LOG_LEVEL);
+  OFString inputFile;
+  if (argc < 2)
+  {
+    CERR << "Usage: dump_pmp <input-file>" << std::endl;
+    return 1;
+  }
+  else
+  {
+    inputFile = argv[1];
+    if (!OFStandard::fileExists(inputFile))
+    {
+      CERR << "Input file " << inputFile << " does not exist " << OFendl;
+      return 1;
+    }
+  }
+
+  OFvariant<OFCondition,DPMParametricMapIOD*> result = DPMParametricMapIOD::loadFile(inputFile);
+  if (OFget<DPMParametricMapIOD*>(&result))
+  {
+    DPMParametricMapIOD* map = *OFget<DPMParametricMapIOD*>(&result);
+    dumpGeneral(*map);
+    COUT << "Dumping #" << map->getNumberOfFrames() << " frames of file " << inputFile << OFendl;
+    Uint16 rows, cols = 0;
+    map->getRows(rows);
+    map->getColumns(cols);
+    unsigned long numPerFrame = rows * cols;
+    DPMParametricMapIOD::FramesType frames = map->getFrames();
+    OFvisit<OFBool>(DumpFramesVisitor(map, numPerFrame), frames);
+  }
+  else
+  {
+    CERR << "Could not load parametric map: " << (*OFget<OFCondition>(&result)).text() << OFendl;
+    exit(1);
+  }
+  exit(0);
+}
+
+\endcode
+
+
+\subsection example_create Creation of Parametric Maps
+
+The Parametric Map class uses a template in order to instantiate the correct
+pixel data type internally, and to offer a dedicated API for that type. Allowed
+types are Uint16, Sint16, Float32 and Float64. The example below demonstrates
+that the API use is generally the same for all types.
+
+The procedure in the example (and most of it applies for the general case) is as
+follows:
+
+\li The main() routine calls test_pmap() four times, each time using a different
+Image Pixel Module as template parameter which makes sure that the right pixel
+data type is used within the created Parametric Map.
+\li test_pmap() demonstrates the overall steps to create the map:
+\li Create a new Parametric Map by calling DPMParametricMapIOD::create()
+(via create_pmap()), and then
+\li add shared functional groups,
+\li add dimensions,
+\li and add frames with the related per-frame functional groups to the object.
+\li Finally, general data regarding Patient and Study is set.
+\li Note that the order of these steps in test_pmap() does not matter.
+
+
+Per default, DPMParametricMapIOD::create() creates a new DICOM instance, within
+a brand-new DICOM Series that belongs to a brand-new DICOM Study. All minimal
+information for Patient, Study and Series will be set (e.g. Study, Series and
+SOP Instance UID as well as other information that is handed over to the
+create() call, like Series Number). Patient Name and ID are left empty per
+default.
+
+Of course, often you might want to put the new instance into an existing Series
+instead, or place the brand-new Series into an existing Study or at least assign
+it to an existing Patient. The easiest way to to do that is to use the call
+import() that imports Patient or even Study, Series and Frame of Reference
+information from an existing file, i.e. place it under an existing Patient,
+Study and/or Series.
+
+When adding information to the Parametric Map using the public API, some basic
+checks are usually performed on the data. Finally, when calling saveFile(), some
+further checks take place, e.g. validating the structure of the functional
+groups or making sure that all required element values are set.
+
+\code
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/dcmiod/iodutil.h"
+#include "dcmtk/dcmpmap/dpmparametricmapiod.h"
+#include "dcmtk/dcmfg/fgpixmsr.h"
+#include "dcmtk/dcmfg/fgplanpo.h"
+#include "dcmtk/dcmfg/fgplanor.h"
+#include "dcmtk/dcmfg/fgfracon.h"
+#include "dcmtk/dcmfg/fgframeanatomy.h"
+#include "dcmtk/dcmfg/fgidentpixeltransform.h"
+#include "dcmtk/dcmfg/fgframevoilut.h"
+#include "dcmtk/dcmfg/fgrealworldvaluemapping.h"
+#include "dcmtk/dcmfg/fgparametricmapframetype.h"
+
+const size_t NUM_FRAMES = 10;
+const Uint16 ROWS = 10;
+const Uint16 COLS = 10;
+const unsigned long NUM_VALUES_PER_FRAME = ROWS * COLS;
+
+
+// Set Patient and Study example data
+static void setGenericData(DPMParametricMapIOD& map)
+{
+  map.getPatient().setPatientName("Onken^Michael");
+  map.getPatient().setPatientID("007");
+  map.getStudy().setStudyDate("20160721");
+  map.getStudy().setStudyTime("111200");
+  map.getStudy().setStudyID("4711");
+}
+
+
+// Create Parametric Map
+template<typename ImagePixel>
+static OFvariant<OFCondition,DPMParametricMapIOD> create_pmap()
+{
+  return DPMParametricMapIOD::create<ImagePixel>
+  (
+    "MR",                 // Modality
+    "1",                  // Series Number
+    "1",                  // Instance Number
+    ROWS,
+    COLS,
+    IODEnhGeneralEquipmentModule::EquipmentInfo("Open Connections GmbH", "make_pmp", "SN_0815", "0.1"),
+    ContentIdentificationMacro("1", "PARAMAP_LABEL", "Example description from test program", "Onken^Michael"),
+    "VOLUME",             // Image Flavor
+    "MTT",                // Derived Pixel Contrast
+    DPMTypes::CQ_RESEARCH // Content Qualification
+  );
+}
+
+
+// Add those functional groups that are common for all frames
+static OFCondition addSharedFunctionalGroups(DPMParametricMapIOD& map)
+{
+  FGPixelMeasures pixelMeasures;
+  pixelMeasures.setPixelSpacing("1\\1");
+  pixelMeasures.setSliceThickness("0.1");
+  pixelMeasures.setSpacingBetweenSlices("0.1");
+  FGPlaneOrientationPatient planeOrientPatientFG;
+  planeOrientPatientFG.setImageOrientationPatient("1", "0", "0", "0", "1", "0");
+  FGFrameAnatomy frameAnaFG;
+  frameAnaFG.setLaterality(FGFrameAnatomy::LATERALITY_UNPAIRED);
+  frameAnaFG.getAnatomy().getAnatomicRegion().set("T-A0100", "SRT", "Brain");
+  FGIdentityPixelValueTransformation idTransFG;
+  FGParametricMapFrameType frameTypeFG;
+  frameTypeFG.setFrameType("DERIVED\\PRIMARY\\VOLUME\\MTT");
+
+  // Add groups to Parametric Map
+  OFCondition result;
+  if ((result = map.addForAllFrames(pixelMeasures)).good())
+  if ((result = map.addForAllFrames(planeOrientPatientFG)).good())
+  if ((result = map.addForAllFrames(frameAnaFG)).good())
+  if ((result = map.addForAllFrames(idTransFG)).good())
+    result = map.addForAllFrames(frameTypeFG);
+
+  return result;
+}
+
+
+// Add a single dimension for demonstration purposes based on "Image Position Patient"
+static OFCondition addDimensions(DPMParametricMapIOD& map)
+{
+  IODMultiframeDimensionModule& mod = map.getIODMultiframeDimensionModule();
+  OFString dimUID = DcmIODUtil::createUID(0);
+  OFCondition result = mod.addDimensionIndex(DCM_ImagePositionPatient, dimUID, DCM_RealWorldValueMappingSequence, "Frame position");
+  return result;
+}
+
+
+// Add one frame to parametric map. Frame number is used to compute some
+// varying example data values differing from frame to frame
+template <typename PixelType>
+static OFCondition addFrame(DPMParametricMapIOD& map,
+                            const unsigned long frameNo)
+{
+  // Create example data
+
+  OFVector<PixelType> data(NUM_VALUES_PER_FRAME);
+  for (size_t n=0; n < data.size(); ++n)
+  {
+    data[n] = (n*frameNo+n) + (0.1 * (frameNo % 10));
+  }
+
+  Uint16 rows, cols;
+  OFCondition cond = map.getImagePixel().getRows(rows);
+  cond = map.getImagePixel().getColumns(cols);
+
+  // Create functional groups
+  OFVector<FGBase*> groups;
+  OFunique_ptr<FGPlanePosPatient> fgPlanePos(new FGPlanePosPatient);
+  OFunique_ptr<FGFrameContent > fgFracon(new FGFrameContent);
+  OFunique_ptr<FGRealWorldValueMapping> fgRVWM(new FGRealWorldValueMapping());
+  FGRealWorldValueMapping::RWVMItem* rvwmItemSimple = new FGRealWorldValueMapping::RWVMItem();
+  if (!fgPlanePos  || !fgFracon || !fgRVWM || !rvwmItemSimple )
+    return EC_MemoryExhausted;
+
+  // Fill in functional group values
+
+  // Real World Value Mapping
+  rvwmItemSimple->setRealWorldValueSlope(10);
+  rvwmItemSimple->setRealWorldValueIntercept(0);
+  rvwmItemSimple->setDoubleFloatRealWorldValueFirstValueMapped(0.12345);
+  rvwmItemSimple->setDoubleFloatRealWorldValueLastValueMapped(98.7654);
+  rvwmItemSimple->getMeasurementUnitsCode().set("{counts}/s", "UCUM", "Counts per second");
+  rvwmItemSimple->setLUTExplanation("We are mapping trash to junk.");
+  rvwmItemSimple->setLUTLabel("Just testing");
+  CodeSequenceMacro* qCodeName = new CodeSequenceMacro("G-C1C6", "SRT", "Quantity");
+  CodeSequenceMacro* qSpec = new CodeSequenceMacro("110805", "SRT", "T2 Weighted MR Signal Intensity");
+  ContentItemMacro* quantity = new ContentItemMacro;
+  if (!quantity || !qSpec || !quantity)
+    return EC_MemoryExhausted;
+  quantity->getEntireConceptNameCodeSequence().push_back(qCodeName);
+  quantity->getEntireConceptCodeSequence().push_back(qSpec);
+  rvwmItemSimple->getEntireQuantityDefinitionSequence().push_back(quantity);
+  quantity->setValueType(ContentItemMacro::VT_CODE);
+  fgRVWM->getRealWorldValueMapping().push_back(rvwmItemSimple);
+
+  // Plane Position
+  OFStringStream ss;
+  ss << frameNo;
+  OFSTRINGSTREAM_GETOFSTRING(ss, framestr) // convert number to string
+  fgPlanePos->setImagePositionPatient("0", "0", framestr);
+
+  // Frame Content
+  OFCondition result = fgFracon->setDimensionIndexValues(frameNo+1 /* value within dimension */, 0 /* first dimension */);
+
+  // Add frame wit related groups
+  if (result.good())
+  {
+    // Add frame
+    groups.push_back(fgPlanePos.get());
+    groups.push_back(fgFracon.get());
+    groups.push_back(fgRVWM.get());
+    groups.push_back(fgPlanePos.get());
+    DPMParametricMapIOD::FramesType frames = map.getFrames();
+    result = OFget<DPMParametricMapIOD::Frames<PixelType> >(&frames)->addFrame(&*data.begin(), NUM_VALUES_PER_FRAME, groups);
+  }
+
+  return result;
+}
+
+
+// Main routine that creates Parametric Maps
+template<typename ImagePixel>
+static OFCondition test_pmap(const OFString& saveDestination)
+{
+  OFvariant<OFCondition,DPMParametricMapIOD> obj = create_pmap<ImagePixel>();
+  if (OFCondition* pCondition = OFget<OFCondition>(&obj))
+    return *pCondition;
+
+  DPMParametricMapIOD& map = *OFget<DPMParametricMapIOD>(&obj);
+
+  OFCondition result;
+  if ((result = addSharedFunctionalGroups(map)).good())
+  if ((result = addDimensions(map)).good())
+  {
+    // Add frames (parametric map data), and per-frame functional groups
+    for (unsigned long f = 0; result.good() && (f < NUM_FRAMES); f++)
+      result = addFrame<OFTypename ImagePixel::value_type>(map, f);
+  }
+
+  // Set some generic data (keep dciodvfy happy on DICOMDIR warnings)
+  if (result.good())
+  {
+    setGenericData(map);
+  }
+
+  // Save
+  if (result.good())
+  {
+    return map.saveFile(saveDestination.c_str());
+  }
+  else
+  {
+    return result;
+  }
+}
+
+
+int main (int argc, char* argv[])
+{
+  OFString outputDir;
+  if (argc < 2)
+  {
+    CERR << "Usage: make_pmp <output-dir>" << std::endl;
+    return 1;
+  }
+  else
+  {
+    outputDir = argv[1];
+    if (!OFStandard::dirExists(outputDir))
+    {
+      CERR << "Output directory " << outputDir << " does not exist " << OFendl;
+      return 1;
+    }
+  }
+
+  //OFLog::configure(OFLogger::DEBUG_LOG_LEVEL);
+
+  // Test all possible parametric map types (signed and unsigned integer, floating point
+  // and double floating point)
+
+  test_pmap<IODImagePixelModule<Uint16> >(outputDir + "/uint_paramap.dcm");
+  test_pmap<IODImagePixelModule<Sint16> >(outputDir + "/sint_paramap.dcm");
+  test_pmap<IODFloatingPointImagePixelModule>(outputDir + "/float_paramap.dcm");
+  test_pmap<IODDoubleFloatingPointImagePixelModule>(outputDir + "/double_paramap.dcm");
+
+  return 0;
+}
+
+\endcode
+
+*/
diff --git a/dcmpmap/etc/Makefile.in b/dcmpmap/etc/Makefile.in
new file mode 100644
index 0000000..31690d7
--- /dev/null
+++ b/dcmpmap/etc/Makefile.in
@@ -0,0 +1,23 @@
+#
+#	Makefile for dcmpmap/etc
+#
+
+ at SET_MAKE@
+
+SHELL = /bin/sh
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+configdir = @top_srcdir@/@configdir@
+
+include $(configdir)/@common_makefile@
+
+
+all:
+
+install:
+
+clean:
+	rm -f $(TRASH)
+
+distclean:
+	rm -f $(DISTTRASH)
diff --git a/dcmpmap/include/CMakeLists.txt b/dcmpmap/include/CMakeLists.txt
new file mode 100644
index 0000000..fc29ca7
--- /dev/null
+++ b/dcmpmap/include/CMakeLists.txt
@@ -0,0 +1,2 @@
+# declare installation files
+INSTALL(DIRECTORY dcmtk/dcmpmap DESTINATION ${DCMTK_INSTALL_INCDIR}/dcmtk COMPONENT include FILES_MATCHING PATTERN "*.h" PATTERN "CVS" EXCLUDE)
diff --git a/dcmpmap/include/Makefile.in b/dcmpmap/include/Makefile.in
new file mode 100644
index 0000000..37af703
--- /dev/null
+++ b/dcmpmap/include/Makefile.in
@@ -0,0 +1,27 @@
+#
+#	Makefile for dcmpmap/include
+#
+
+ at SET_MAKE@
+
+SHELL = /bin/sh
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+configdir = @top_srcdir@/@configdir@
+
+include $(configdir)/@common_makefile@
+
+
+all:
+
+install:
+	$(configdir)/mkinstalldirs $(DESTDIR)$(includedir)/dcmtk/dcmpmap
+	for file in dcmtk/dcmpmap/*.h ; do \
+		$(INSTALL_DATA) $$file $(DESTDIR)$(includedir)/dcmtk/dcmpmap ;\
+	done
+
+clean:
+	rm -f $(TRASH)
+
+distclean:
+	rm -f $(DISTTRASH)
diff --git a/dcmpmap/include/dcmtk/dcmpmap/dpmdef.h b/dcmpmap/include/dcmtk/dcmpmap/dpmdef.h
new file mode 100644
index 0000000..82f89c0
--- /dev/null
+++ b/dcmpmap/include/dcmtk/dcmpmap/dpmdef.h
@@ -0,0 +1,37 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmpmap
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: Contains preprocessor definitions
+ *
+ */
+
+
+#ifndef DPMDEF_H
+#define DPMDEF_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/ofdefine.h"
+
+// definitions for DLL/shared library exports
+
+#ifdef dcmpmap_EXPORTS
+#define DCMTK_DCMPMAP_EXPORT DCMTK_DECL_EXPORT
+#else
+#define DCMTK_DCMPMAP_EXPORT DCMTK_DECL_IMPORT
+#endif
+
+#endif // DPMDEF_H
diff --git a/dcmpmap/include/dcmtk/dcmpmap/dpmmodparametricmapimage.h b/dcmpmap/include/dcmtk/dcmpmap/dpmmodparametricmapimage.h
new file mode 100644
index 0000000..0da18de
--- /dev/null
+++ b/dcmpmap/include/dcmtk/dcmpmap/dpmmodparametricmapimage.h
@@ -0,0 +1,304 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmpmap
+ *
+ *  Author: Jan Schlamelcher
+ *
+ *  Purpose: Class for managing the Parametric Map Image Module
+ *
+ */
+
+#ifndef DPMMODPARAMETRICMAPIMAGE_H
+#define DPMMODPARAMETRICMAPIMAGE_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/ofmem.h"
+#include "dcmtk/dcmiod/iodrules.h"
+#include "dcmtk/dcmiod/modbase.h"
+#include "dcmtk/dcmpmap/dpmdef.h"
+
+/** Class representing the Parametric Map Image Module:
+ *
+ *  ImageType: (CS, 2-n, 1)
+ *  SamplesPerPixel: (US, 1, 1)
+ *  PhotometricInterpretation: (CS, 1, 1)
+ *  BitsAllocated: (US, 1, 1)
+ *  BitsStored: (US, 1, 1C)
+ *  HighBit: (US, 1, 1C)
+ *  PresentationLUTShape: (CS, 1, 1)
+ *  LossyImageCompression: (CS, 1, 1)
+ *  LossyImageCompressionRatio: (DS, 1-n, 1C)
+ *  LossyImageCompressionMethod: (CS, 1-n, 1C)
+ *  BurnedInAnnotation: (CS, 1, 1)
+ *  RecognizableVisualFeatures: (CS, 1, 1)
+ *  ContentQualification: (CS, 1, 1)
+ */
+class DCMTK_DCMPMAP_EXPORT DPMParametricMapImageModule : public IODModule
+{
+public:
+  /** Constructor
+   *  @param  item The item to be used for data storage. If NULL, the
+   *          class creates an empty data container.
+   *  @param  rules The rule set for this class. If NULL, the class creates
+   *          one from scratch and adds its values.
+   */
+  DPMParametricMapImageModule(OFshared_ptr<DcmItem> item,
+                              OFshared_ptr<IODRules> rules);
+
+  /** Constructor
+   */
+  DPMParametricMapImageModule();
+
+  /** Destructor
+   */
+  virtual ~DPMParametricMapImageModule();
+
+  /** Resets rules to their original values
+   */
+  virtual void resetRules();
+
+  /** Get name of module ("DPMParametricMapImageModule")
+   *  @return Name of the module ("DPMParametricMapImageModule")
+   */
+  virtual OFString getName() const;
+
+  /** Read attributes from given item into this class
+   *  @param source  The source to read from
+   *  @param clearOldData If OFTrue, old data is cleared before reading. Otherwise
+   *         old data is overwritten (or amended)
+   *  @result EC_Normal if reading was successful, error otherwise
+   */
+  virtual OFCondition read(DcmItem& source,
+                           const OFBool clearOldData = OFTrue);
+
+  /** Write attributes from this class into given item
+   *  @param  destination The item to write to
+   *  @result EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition write(DcmItem& destination);
+
+  /** Get Image Type
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getImageType(OFString &value,
+                                   const signed long pos = 0) const;
+
+  /** Get Samples Per Pixel
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getSamplesPerPixel(Uint16 &value,
+                                         const signed long pos = 0) const;
+
+  /** Get Photometric Interpretation
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getPhotometricInterpretation(OFString &value,
+                                                   const signed long pos = 0) const;
+
+  /** Get Bits Allocated
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getBitsAllocated(Uint16 &value,
+                                       const signed long pos = 0) const;
+
+  /** Get Bits Stored
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getBitsStored(Uint16 &value,
+                                    const signed long pos = 0) const;
+
+  /** Get High Bit
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getHighBit(Uint16 &value,
+                                 const signed long pos = 0) const;
+
+  /** Get Presentation LUT Shape
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getPresentationLUTShape(OFString &value,
+                                              const signed long pos = 0) const;
+
+  /** Get Lossy Image Compression
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getLossyImageCompression(OFString &value,
+                                               const signed long pos = 0) const;
+
+  /** Get Lossy Image Compression Ratio
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getLossyImageCompressionRatio(OFString &value,
+                                                    const signed long pos = 0) const;
+
+  /** Get Lossy Image Compression Method
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getLossyImageCompressionMethod(OFString &value,
+                                                     const signed long pos = 0) const;
+
+  /** Get Burned In Annotation
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getBurnedInAnnotation(OFString &value,
+                                            const signed long pos = 0) const;
+
+  /** Get Recognizable Visual Features
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getRecognizableVisualFeatures(OFString &value,
+                                                    const signed long pos = 0) const;
+
+  /** Get Content Qualification
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getContentQualification(OFString &value,
+                                              const signed long pos = 0) const;
+
+  /** Set Image Type
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (2-n) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setImageType(const OFString &value,
+                                   const OFBool checkValue = OFTrue);
+
+  /** Set Samples Per Pixel
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (US) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setSamplesPerPixel(const Uint16 &value,
+                                         const OFBool checkValue = OFTrue);
+
+  /** Set Photometric Interpretation
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setPhotometricInterpretation(const OFString &value,
+                                                   const OFBool checkValue = OFTrue);
+
+  /** Set Bits Allocated
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (US) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setBitsAllocated(const Uint16 &value,
+                                       const OFBool checkValue = OFTrue);
+
+  /** Set Bits Stored
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (US) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setBitsStored(const Uint16 &value,
+                                    const OFBool checkValue = OFTrue);
+
+  /** Set High Bit
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (US) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setHighBit(const Uint16 &value,
+                                 const OFBool checkValue = OFTrue);
+
+  /** Set Presentation LUT Shape
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setPresentationLUTShape(const OFString &value,
+                                              const OFBool checkValue = OFTrue);
+
+  /** Set Lossy Image Compression
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setLossyImageCompression(const OFString &value,
+                                               const OFBool checkValue = OFTrue);
+
+  /** Set Lossy Image Compression Ratio
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (DS) and VM (1-n) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setLossyImageCompressionRatio(const OFString &value,
+                                                    const OFBool checkValue = OFTrue);
+
+  /** Set Lossy Image Compression Method
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (1-n) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setLossyImageCompressionMethod(const OFString &value,
+                                                     const OFBool checkValue = OFTrue);
+
+  /** Set Burned In Annotation
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setBurnedInAnnotation(const OFString &value,
+                                            const OFBool checkValue = OFTrue);
+
+  /** Set Recognizable Visual Features
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setRecognizableVisualFeatures(const OFString &value,
+                                                    const OFBool checkValue = OFTrue);
+
+  /** Set ContentQualification
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setContentQualification(const OFString &value,
+                                              const OFBool checkValue = OFTrue);
+
+private:
+  /// The name of this module ("DPMParametricMapImageModule")
+  static const OFString m_ModuleName;
+};
+
+#endif // DPMMODPARAMETRICMAPIMAGE_H
diff --git a/dcmpmap/include/dcmtk/dcmpmap/dpmmodparametricmapseries.h b/dcmpmap/include/dcmtk/dcmpmap/dpmmodparametricmapseries.h
new file mode 100644
index 0000000..1c8b1b6
--- /dev/null
+++ b/dcmpmap/include/dcmtk/dcmpmap/dpmmodparametricmapseries.h
@@ -0,0 +1,133 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmpmap
+ *
+ *  Author: Jan Schlamelcher
+ *
+ *  Purpose: Class for managing the Parametric Map Series Module
+ *
+ */
+
+#ifndef DPMMODPARAMETRICMAPSERIES_H
+#define DPMMODPARAMETRICMAPSERIES_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/ofmem.h"
+#include "dcmtk/dcmiod/iodrules.h"
+#include "dcmtk/dcmiod/modbase.h"
+#include "dcmtk/dcmpmap/dpmdef.h"
+#include "dcmtk/dcmiod/iodmacro.h"
+
+/** Class representing the Parametric Map Series Module:
+ *
+ *  Modality: (CS, 1, 1)
+ *  SeriesNumber: (IS, 1, 1)
+ *  ReferencedPerformedProcedureStepSequence: (SQ, 1, 1C)
+ */
+class DCMTK_DCMPMAP_EXPORT DPMParametricMapSeriesModule : public IODModule
+{
+public:
+  /** Constructor
+   *  @param  item The item to be used for data storage. If NULL, the
+   *          class creates an empty data container.
+   *  @param  rules The rule set for this class. If NULL, the class creates
+   *          one from scratch and adds its values.
+   */
+  DPMParametricMapSeriesModule(OFshared_ptr<DcmItem> item,
+                               OFshared_ptr<IODRules> rules);
+
+  /** Constructor
+   */
+  DPMParametricMapSeriesModule();
+
+  /** Destructor
+   */
+  virtual ~DPMParametricMapSeriesModule();
+
+  /** Resets rules to their original values
+   */
+  virtual void resetRules();
+
+  /** Get name of module ("DPMParametricMapSeriesModule")
+   *  @return Name of the module ("DPMParametricMapSeriesModule")
+   */
+  virtual OFString getName() const;
+
+  /** Read attributes from given item into this class
+   *  @param source  The source to read from
+   *  @param clearOldData If OFTrue, old data is cleared before reading. Otherwise
+   *         old data is overwritten (or amended)
+   *  @result EC_Normal if reading was successful, error otherwise
+   */
+  virtual OFCondition read(DcmItem& source,
+                           const OFBool clearOldData = OFTrue);
+
+  /** Write attributes from this class into given item
+   *  @param  destination The item to write to
+   *  @result EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition write(DcmItem& destination);
+
+  /** Get Modality
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getModality(OFString &value,
+                                  const signed long pos = 0) const;
+
+  /** Get Series Number
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getSeriesNumber(OFString &value,
+                                      const signed long pos = 0) const;
+
+  /** Get reference to the Referenced Performed Procedure Step Sequence
+   *  @return a reference to the Referenced Performed Procedure Step Sequence
+   */
+  virtual SOPInstanceReferenceMacro* getReferencedPerformedProcedureStepSequence();
+
+  /** Get a reference to the entire Referenced Performed Procedure Step Sequence, including items
+   *  exceeding the value multiplicity restriction of "1"
+   *  @return a reference to the entire Referenced Performed Procedure Step Sequence
+   */
+  virtual OFVector<SOPInstanceReferenceMacro>& getEntireReferencedPerformedProcedureStepSequence();
+
+  /** Set Modality
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setModality(const OFString &value,
+                                  const OFBool checkValue = OFTrue);
+
+  /** Set Series Number
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (IS) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setSeriesNumber(const OFString &value,
+                                      const OFBool checkValue = OFTrue);
+
+private:
+  /// The name of this module ("DPMParametricMapSeriesModule")
+  static const OFString m_ModuleName;
+
+  /// ReferencedPerformedProcedureStepSequence
+  OFVector<SOPInstanceReferenceMacro> m_ReferencedPerformedProcedureStepSequence;
+};
+
+#endif // DPMMODPARAMETRICMAPSERIES_H
diff --git a/dcmpmap/include/dcmtk/dcmpmap/dpmparametricmapbase.h b/dcmpmap/include/dcmtk/dcmpmap/dpmparametricmapbase.h
new file mode 100644
index 0000000..923d2d8
--- /dev/null
+++ b/dcmpmap/include/dcmtk/dcmpmap/dpmparametricmapbase.h
@@ -0,0 +1,249 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmpmap
+ *
+ *  Author: Jan Schlamelcher
+ *
+ *  Purpose: Generated base class representing the Parametric Map IOD
+ *
+ */
+
+#ifndef DPMPARAMETRICMAPBASE_H
+#define DPMPARAMETRICMAPBASE_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmfg/fginterface.h"
+#include "dcmtk/dcmfg/fgderimg.h"
+#include "dcmtk/dcmfg/fgfracon.h"
+#include "dcmtk/dcmfg/fgframeanatomy.h"
+#include "dcmtk/dcmfg/fgframevoilut.h"
+#include "dcmtk/dcmfg/fgidentpixeltransform.h"
+#include "dcmtk/dcmfg/fgparametricmapframetype.h"
+#include "dcmtk/dcmfg/fgpixmsr.h"
+#include "dcmtk/dcmfg/fgplanor.h"
+#include "dcmtk/dcmfg/fgplanpo.h"
+#include "dcmtk/dcmfg/fgrealworldvaluemapping.h"
+#include "dcmtk/dcmiod/iodimage.h"
+#include "dcmtk/dcmiod/modacquisitioncontext.h"
+#include "dcmtk/dcmiod/modcommoninstanceref.h"
+#include "dcmtk/dcmiod/modenhequipment.h"
+#include "dcmtk/dcmiod/modequipment.h"
+#include "dcmtk/dcmiod/modgeneralimage.h"
+#include "dcmtk/dcmiod/modgeneralseries.h"
+#include "dcmtk/dcmiod/modgeneralstudy.h"
+#include "dcmtk/dcmiod/modmultiframedimension.h"
+#include "dcmtk/dcmiod/modmultiframefg.h"
+#include "dcmtk/dcmiod/modpatient.h"
+#include "dcmtk/dcmiod/modpatientstudy.h"
+#include "dcmtk/dcmiod/modsopcommon.h"
+#include "dcmtk/dcmiod/modimagepixel.h"
+#include "dcmtk/dcmiod/modfloatingpointimagepixel.h"
+#include "dcmtk/dcmpmap/dpmmodparametricmapimage.h"
+#include "dcmtk/dcmpmap/dpmmodparametricmapseries.h"
+#include "dcmtk/dcmpmap/dpmdef.h"
+
+/** Class for managing the Parametric Map IOD attributes. Template parameter defines the type of pixel data
+ *  to use: Unsigned or signed 16 bit integer, or 32 bit floating point, or 64 bit floating point data.
+ */
+class DCMTK_DCMPMAP_EXPORT DPMParametricMapBase
+: public DcmIODImage
+<
+    IODImagePixelModule<Uint16>,
+    IODImagePixelModule<Sint16>,
+    IODFloatingPointImagePixelModule,
+    IODDoubleFloatingPointImagePixelModule
+>
+{
+
+public:
+
+  /** Virtual Destructor
+   */
+  virtual ~DPMParametricMapBase();
+
+  // -------------------- loading and saving ---------------------
+
+  /** Save current object to given filename
+   *  @param  filename The file to write to
+   *  @param  writeXfer The transfer syntax to be used
+   *  @return EC_Normal if writing was successful, error otherwise.
+   */
+  virtual OFCondition saveFile(const OFString& filename,
+                               const E_TransferSyntax writeXfer = EXS_LittleEndianExplicit);
+
+  /** Write current object to given item
+   *  @param  dataset The item to write to
+   *  @return EC_Normal if writing was successful, error otherwise.
+   */
+  OFCondition writeDataset(DcmItem& dataset);
+
+  /** Perform some basic checking. This method is also invoked when
+   *  writing the object to a DICOM dataset or file.
+   *  @return OFTrue, if no errors were found, OFFalse otherwise.
+   */
+  virtual OFBool check();
+
+  /** Get access to functional groups. This is meant for reading data from
+   *  functional groups that are not actively managed, i.e.\ made accessible by
+   *  DcmSegmentation. In rare cases, however, it makes sense to access it
+   *  for writing too, e.g.\ in order to add Stacks; use with care!
+   *  @return Reference to the functional groups
+   */
+  virtual FGInterface& getFunctionalGroups();
+
+  /** Get Patient Module
+   *  @return a reference to the IOD Patient Module
+   */
+  virtual IODPatientModule& getIODPatientModule();
+
+  /** Get General Study Module
+   *  @return a reference to the IOD General Study Module
+   */
+  virtual IODGeneralStudyModule& getIODGeneralStudyModule();
+
+  /** Get Patient Study Module
+   *  @return a reference to the IOD Patient Study Module
+   */
+  virtual IODPatientStudyModule& getIODPatientStudyModule();
+
+  /** Get General Series Module
+   *  @return a reference to the IOD General Series Module
+   */
+  virtual IODGeneralSeriesModule& getIODGeneralSeriesModule();
+
+  /** Get Parametric Map Series Module
+   *  @return a reference to the Parametric Map Series Module
+   */
+  virtual DPMParametricMapSeriesModule& getDPMParametricMapSeriesModule();
+
+  /** Get General Equipment Module
+   *  @return a reference to the General Equipment Module
+   */
+  virtual IODGeneralEquipmentModule& getIODGeneralEquipmentModule();
+
+  /** Get Enhanced General Equipment Module
+   *  @return a reference to the Enhanced General Equipment Module
+   */
+  virtual IODEnhGeneralEquipmentModule& getIODEnhGeneralEquipmentModule();
+
+  /** Get General Image Module
+   *  @return a reference to the General Image Module
+   */
+  virtual IODGeneralImageModule& getIODGeneralImageModule();
+
+  /** Get Parametric Map Image Module
+   *  @return a reference to the Parametric Map Image Module
+   */
+  virtual DPMParametricMapImageModule& getDPMParametricMapImageModule();
+
+  /** Get Multi-frame Functional Groups Module
+   *  @return a reference to the Multi-frame Functional Groups Module
+   */
+  virtual IODMultiFrameFGModule& getIODMultiFrameFGModule();
+
+  /** Get Multi-frame Dimension Module
+   *  @return a reference to the Multi-frame Dimension Module
+   */
+  virtual IODMultiframeDimensionModule& getIODMultiframeDimensionModule();
+
+  /** Get Acquisition Context Module
+   *  @return a reference to the Acquisition Context Module
+   */
+  virtual IODAcquisitionContextModule& getIODAcquisitionContextModule();
+
+  /** Get Common Instance Reference Module
+   *  @return a reference to the Common Instance Reference Module
+   */
+  virtual IODCommonInstanceReferenceModule& getIODCommonInstanceReferenceModule();
+
+  /** Get SOP Common Module
+   *  @return a reference to the SOP Common Module
+   */
+  virtual IODSOPCommonModule& getIODSOPCommonModule();
+
+protected:
+
+  /** Constructor; not public since object should be create via factory
+   *  method in derived class.
+   */
+  DPMParametricMapBase();
+
+   /** Constructor; not public since object should be create via factory
+    *  method in derived class.
+    */
+  template<typename ImagePixel>
+  DPMParametricMapBase(OFin_place_type_t(ImagePixel));
+
+  /** Read Parametric Map attributes (all those handled by this class)
+   *  from given item. Reads attributes from base class DcmIODCommon before.
+   *  The current content is deleted even if the reading process fails.
+   *  If the log stream is set and valid the reason for any error might be
+   *  obtained from the error/warning output.
+   *  @param  dataset  Reference to DICOM dataset from which the document
+   *          should be read
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition read(DcmItem &dataset);
+
+  /** Write current Parametric Map's attributes to DICOM dataset. Also
+   *  writes attributes of base class DcmIODCommon afterwards.
+   *  @param  dataset Reference to DICOM dataset to which the current document
+   *          should be written.  The dataset is not cleared before writing
+   *          to it!
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition write(DcmItem &dataset);
+
+  /** Clear (removes) all attributes handled by the modules of this IOD.
+   *  IOD Rules are not reset.
+   */
+  virtual void clearData();
+
+  /** Loads file
+   *  @param  dcmff The file format to load into
+   *  @param  filename The filename of the file to load
+   *  @param  dset Pointer to dataset after loading
+   *  @return EC_Normal if loading was successful, error otherwise
+   */
+  static OFCondition loadFile(DcmFileFormat& dcmff,
+                              const OFString& filename,
+                              DcmDataset*& dset);
+
+  /// Multi-frame Functional Groups high level interface
+  FGInterface m_FGInterface;
+
+  /// Parametric Map Series Module
+  DPMParametricMapSeriesModule m_DPMParametricMapSeriesModule;
+
+  /// Enhanced General Equipment Module
+  IODEnhGeneralEquipmentModule m_IODEnhGeneralEquipmentModule;
+
+  /// Parametric Map Image Module
+  DPMParametricMapImageModule m_DPMParametricMapImageModule;
+
+  /// Multi-frame Functional Groups Module
+  IODMultiFrameFGModule m_IODMultiFrameFGModule;
+
+  /// Multi-frame Dimension Module
+  IODMultiframeDimensionModule m_IODMultiframeDimensionModule;
+
+  /// Acquisition Context Module
+  IODAcquisitionContextModule m_IODAcquisitionContextModule;
+
+  /// Common Instance Reference Module
+  IODCommonInstanceReferenceModule m_IODCommonInstanceReferenceModule;
+
+};
+
+#endif // DPMPARAMETRICMAPBASE_H
diff --git a/dcmpmap/include/dcmtk/dcmpmap/dpmparametricmapiod.h b/dcmpmap/include/dcmtk/dcmpmap/dpmparametricmapiod.h
new file mode 100644
index 0000000..e774157
--- /dev/null
+++ b/dcmpmap/include/dcmtk/dcmpmap/dpmparametricmapiod.h
@@ -0,0 +1,306 @@
+/*
+ *
+ *  Copyright (C) 2017, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmpmap
+ *
+ *  Author: Michael Onken
+ *
+ *  Purpose: Class representing the Parametric Map IOD
+ *
+ */
+
+#ifndef DPMPARAMETRICMAPIOD_H
+#define DPMPARAMETRICMAPIOD_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmiod/modimagepixelbase.h"
+#include "dcmtk/dcmpmap/dpmparametricmapbase.h"
+#include "dcmtk/dcmpmap/dpmtypes.h"
+
+
+/** Class for managing the Parametric Map IOD attributes.
+ */
+class DCMTK_DCMPMAP_EXPORT DPMParametricMapIOD : public DPMParametricMapBase
+{
+public:
+
+  /** Inner class that offers typed interface to bulk data.
+   */
+  template<typename PixelType>
+  class DCMTK_DCMPMAP_EXPORT Frames
+  {
+    public:
+
+      /// Binary pixel type
+      typedef PixelType pixel_type;
+
+      /** Method that adds a frame to the Parametric Map using the underlying
+       *  binary data type.
+       *  @param  data The frame data
+       *  @param  numPixels The number of pixels (rows * columns) of the frame
+       *  @param  perFrameInformation The per-frame functional groups applying for
+       *  @return EC_Normal if adding was successful, error otherwise
+       */
+      OFCondition addFrame(PixelType* data,
+                           const size_t numPixels,
+                           const OFVector<FGBase*>& perFrameInformation);
+
+      /** Type-specific getFrame() method that returns Float32, Uint16, or whatever
+       *  is used in this Parametric Map.
+       *  @param  frameNumber The frame number to get, starting from 0
+       *  @return Pointer to typed pixel data
+       */
+      PixelType* getFrame(const size_t frameNumber);
+
+    private:
+
+      // Make sure the Parametric Map object (and no one else) can use the constructor below.
+      friend class DPMParametricMapIOD;
+
+      /** Create Frames object in DPMParametricMapIOD (see friend declaration above)
+       *  @param  map The map object that will contain the frames
+       */
+      Frames(DPMParametricMapIOD& map);
+
+      /// Reference to Parametric Map object in order to access its pixel data
+      DPMParametricMapIOD& m_Map;
+  };
+
+  /** Frames can contain Uint16, Sint16, Float32 or Float64 data, or nothing
+   *  at all (in that case OFCondition denotes a corresponding error)
+   */
+  typedef OFvariant
+  <
+    OFCondition,
+    Frames<Uint16>,
+    Frames<Sint16>,
+    Frames<Float32>,
+    Frames<Float64>
+  > FramesType;
+
+  /** Virtual Destructor, frees memory.
+   */
+  virtual ~DPMParametricMapIOD();
+
+  /** Create new Parametric Map object. Takes the minimum of required parameters.
+   *  Afterwards, additional setters() can be used to set optional data. Frames
+   *  and their related per-frame functional groups should be added using addFrame().
+   *  Shared functional groups should be added using addForAllFrames().
+   *  @param  modality The modality of this Parametric Map (series level attribute).
+   *          A list of Defined Terms can be found in the standard. Very often
+   *          "MR" is the right choice. Only if a mix of different modalities has been
+   *          use for creation "OT" should be used.
+   *  @param  seriesNumber A number identifying this series. If importPatientStudyFor()
+   *          is called later in order to put this Parametric Map into an existing Series,
+   *          the Series  Number will be taken over from the existing series instead.
+   *  @param  instanceNumber A number identifying this image
+   *  @param  rows The number of rows of all frames of the Parametric Map
+   *  @param  columns The number of columns of all frames of the Parametric Map
+   *  @param  equipmentInfo Information about the equipment creating thing Parametric Map
+   *  @param  contentIdentification General information about this content
+   *  @param  imageFlavor 3rd value of attribute Image Type. See standard for list of
+   *          applicable Defined Terms.
+   *  @param  derivedPixelContrast 4th value of attribute Image Type. See standard for list of
+   *          applicable Defined Terms.
+   *  @param  contentQualification Either one of CQ_PRODUCT, CQ_RESEARCH, CQ_SERVICE
+   *  @return Variant, either OFCondition with error code in case of error, Parametric
+   *          Map object in case of success
+   */
+  template<typename ImagePixel>
+  static OFvariant<OFCondition,DPMParametricMapIOD> create(const OFString& modality,
+                                                           const OFString& seriesNumber,
+                                                           const OFString& instanceNumber,
+                                                           const Uint16 rows,
+                                                           const Uint16 columns,
+                                                           const IODEnhGeneralEquipmentModule::EquipmentInfo& equipmentInfo,
+                                                           const ContentIdentificationMacro& contentIdentification,
+                                                           const OFString& imageFlavor,
+                                                           const OFString& derivedPixelContrast,
+                                                           const DPMTypes::ContentQualification& contentQualification);
+
+  /** Indicates whether or not the image contains sufficiently recognizable visual
+   *  features to allow the image or a reconstruction from a set of images to
+   *  identify the patient.
+   *  @param  yesOrNo  Must be related "YES" or "NO" types
+   *  @return EC_Normal if setting was successful, error otherwise
+   */
+
+  virtual OFCondition setRecognizableVisualFeatures(const DPMTypes::RecognizableVisibleFeatures yesOrNo);
+
+  /** Add a functional group for all frames
+   *  @param  group The group to be added as shared functional group
+   *  @return EC_Normal if adding was successful, error otherwise
+   */
+  virtual OFCondition addForAllFrames(const FGBase& group);
+
+  // -------------------- loading and saving ---------------------
+
+  /** Load Parametric Map object from file
+   *  @param  filename The file to read from
+   *  @return Variant, either the resulting Parametric Map object in case of success,
+   *          an OFCondition error code otherwise
+   */
+  static OFvariant<OFCondition,DPMParametricMapIOD*> loadFile(const OFString& filename);
+
+  /** Load Parametric Map object from dataset object.
+   *  @param  dataset The dataset to read from
+   *  @return Variant, either the resulting Parametric Map object in case of success,
+   *          an OFCondition error code otherwise
+   */
+  static OFvariant<OFCondition,DPMParametricMapIOD*> loadDataset(DcmDataset& dataset);
+
+  /** Read Parametric Map attributes (all those handled by this class)
+   *  from given item. Reads attributes from base class DcmIODCommon before.
+   *  The current content is deleted even if the reading process fails.
+   *  If the log stream is set and valid the reason for any error might be
+   *  obtained from the error/warning output.
+   *  @param  dataset  Reference to DICOM dataset from which the document
+   *          should be read
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition read(DcmItem &dataset);
+
+  /** Write current Parametric Map's attributes to DICOM dataset.
+   *  @param  dataset Reference to DICOM dataset to which the current document
+   *          should be written. The dataset is not cleared before writing
+   *          to it!
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition write(DcmItem &dataset);
+
+  // -------------------- access ---------------------
+
+  /** Get Recognizable Visual Features
+   *  @return Returns related YES or NO data type
+   */
+  virtual DPMTypes::RecognizableVisibleFeatures getRecognizableVisualFeatures();
+
+  /** Get Content Qualification
+   *  @return Returns either one of CQ_PRODUCT, CQ_RESEARCH, CQ_SERVICE or CQ_UNKNOWN
+   */
+  virtual DPMTypes::ContentQualification getContentQualification();
+
+  /** Get number of rows
+   *  @param  rows The number of rows (output)
+   *  @return EC_Normal if getting was successful, error otherwise
+   */
+  virtual OFCondition getRows(Uint16& rows);
+
+  /** Get number of cols
+   *  @param  cols The number of columns (output)
+   *  @return EC_Normal if getting was successful, error otherwise
+   */
+  virtual OFCondition getColumns(Uint16& cols);
+
+  /** Perform some basic checking. This method is also invoked when
+   *  writing the object to a DICOM dataset or file.
+   *  @return OFTrue, if no errors were found, OFFalse otherwise.
+   */
+  virtual OFBool check();
+
+  /** Get number of frames, based on the number of items in the shared
+   *  functional functional groups sequence (i.e.\ the attribute Number of
+   *  Frames) is not trusted after reading
+   *  @return The number of frames handled by this object
+   */
+  size_t getNumberOfFrames() const;
+
+  /** Get access to frame data
+   *  @return Class managing the frame data
+   */
+  FramesType getFrames();
+
+protected:
+
+  /** Write current generic Parametric Map's attributes to DICOM dataset, i.e.
+   *  those that are not directly pixel-related
+   *  @param  dataset Reference to DICOM dataset to which the current document
+   *          should be written. The dataset is not cleared before writing
+   *          to it.
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition writeGeneric(DcmItem &dataset);
+
+  /** Read Parametric Map's generic (not directly pixel-data related) attributes from
+   *  DICOM dataset.
+   *  @param  dataset Reference to DICOM dataset to read from.
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition readGeneric(DcmItem &dataset);
+
+  /** Decompress the given dataset if required. Only RLE compression is accepted
+   *  and decompressed by this tool. A warning is printed if the dataset has been compressed
+   *  before with another compression scheme and is handed into this method in uncompressed
+   *  format. Handing in any other compression but RLE will lead to an error.
+   *  @param  dset The dataset to be decompressed
+   *  @return EC_Normal if decompression worked (or dataset is already in uncompressed format)
+   *          IOD_EC_CannotDecompress otherwise
+   */
+  static OFCondition decompress(DcmDataset& dset);
+
+  /** Constructor
+   */
+  DPMParametricMapIOD();
+
+  /** Constructor, anonymous parameter is the image pixel module to be used
+   */
+  template<typename ImagePixel>
+  DPMParametricMapIOD(OFin_place_type_t(ImagePixel));
+
+private:
+
+  // Forward declarations
+  template<typename PixelType> class GetPixelDataVisitor;
+  struct SetImagePixelModuleVisitor;
+  struct WriteVisitor;
+  struct GetFramesVisitor;
+  struct ReadVisitor;
+  struct ReadFramesVisitor;
+
+  /** Initialize new Parametric Map object except directly pixel-related data
+   *  @param  modality The modality of this Parametric Map (series level attribute).
+   *          A list of Defined Terms can be found in the standard. Very often
+   *          "MR" is the right choice. Only if a mix of different modalities has been
+   *          use for creation "OT" should be used.
+   *  @param  seriesNumber A number identifying this series. If importPatientStudyFor()
+   *          is called later in order to put this Parametric Map into an existing Series,
+   *          the Series  Number will be taken over from the existing series instead.
+   *  @param  instanceNumber A number identifying this image
+   *  @param  equipmentInfo Information about the equipment creating thing Parametric Map
+   *  @param  contentIdentification General information about this content
+   *  @param  imageFlavor 3rd value of attribute Image Type. See standard for list of
+   *          applicable Defined Terms.
+   *  @param  derivedPixelContrast 4th value of attribute Image Type. See standard for list of
+   *          applicable Defined Terms.
+   *  @param  contentQualification Either one of CQ_PRODUCT, CQ_RESEARCH, CQ_SERVICE
+   *  @return EC_Normal in case of success, error otherwise
+   */
+  OFCondition init(const OFString& modality,
+                   const OFString& seriesNumber,
+                   const OFString& instanceNumber,
+                   const IODEnhGeneralEquipmentModule::EquipmentInfo& equipmentInfo,
+                   const ContentIdentificationMacro& contentIdentification,
+                   const OFString& imageFlavor,
+                   const OFString& derivedPixelContrast,
+                   const DPMTypes::ContentQualification& contentQualification);
+
+
+  /// Parametric Map Image Module's Content Identification
+  ContentIdentificationMacro m_ContentIdentification;
+
+  /// Binary frame data
+  OFVector<DcmIODTypes::Frame*> m_Frames;
+
+};
+
+#endif // DPMPARAMETRICMAPIOD_H
diff --git a/dcmpmap/include/dcmtk/dcmpmap/dpmtypes.h b/dcmpmap/include/dcmtk/dcmpmap/dpmtypes.h
new file mode 100644
index 0000000..9bc952d
--- /dev/null
+++ b/dcmpmap/include/dcmtk/dcmpmap/dpmtypes.h
@@ -0,0 +1,137 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmpmap
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: Class managing various parametric myps-typical types
+ *
+ */
+
+#ifndef DPMTYPES_H
+#define DPMTYPES_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/oflog/oflog.h"
+#include "dcmtk/dcmiod/iodmacro.h"
+#include "dcmtk/dcmpmap/dpmdef.h"
+
+// ----------------------------------------------------------------------------
+// Define the loggers for this module
+// ----------------------------------------------------------------------------
+
+extern DCMTK_DCMPMAP_EXPORT OFLogger DCM_dcmpmapLogger;
+
+#define DCMPMAP_TRACE(msg) OFLOG_TRACE(DCM_dcmpmapLogger, msg)
+#define DCMPMAP_DEBUG(msg) OFLOG_DEBUG(DCM_dcmpmapLogger, msg)
+#define DCMPMAP_INFO(msg)  OFLOG_INFO(DCM_dcmpmapLogger, msg)
+#define DCMPMAP_WARN(msg)  OFLOG_WARN(DCM_dcmpmapLogger, msg)
+#define DCMPMAP_ERROR(msg) OFLOG_ERROR(DCM_dcmpmapLogger, msg)
+#define DCMPMAP_FATAL(msg) OFLOG_FATAL(DCM_dcmpmapLogger, msg)
+
+// ----------------------------------------------------------------------------
+// Error constants
+// ----------------------------------------------------------------------------
+
+extern DCMTK_DCMPMAP_EXPORT   const OFConditionConst     DPM_InvalidDimensions;
+extern DCMTK_DCMPMAP_EXPORT   const OFConditionConst     DPM_InvalidAttributeValue;
+extern DCMTK_DCMPMAP_EXPORT   const OFConditionConst     DPM_InvalidPixelInfo;
+extern DCMTK_DCMPMAP_EXPORT   const OFConditionConst     DPM_InvalidPixelData;
+extern DCMTK_DCMPMAP_EXPORT   const OFConditionConst     DPM_NoPixelData;
+extern DCMTK_DCMPMAP_EXPORT   const OFConditionConst     DPM_InvalidSOPClass;
+
+/** General purpose class hiding global functions, constants and types in the
+ *  parametric map context from the global namespace.
+ */
+class DCMTK_DCMPMAP_EXPORT DPMTypes
+{
+  public:
+
+    /// Enum for attribute Content Qualification
+    enum ContentQualification
+    {
+      /// Unkonwn (e.g. not set)
+      CQ_UNKNOWN,
+      /// PRODUCT
+      CQ_PRODUCT,
+      /// RESEARCH
+      CQ_RESEARCH,
+      /// SERVICE
+      CQ_SERVICE
+    };
+
+    /// Enum for attribute Lossy Image Compression
+    enum LossyImageCompression
+    {
+      /// Unknown (e.g. not set)
+      COMP_UNKNOWN,
+      /// YES (lossy image compression used)
+      COMP_YES,
+      /// NO (no lossy image compression used)
+      COMP_NO
+    };
+
+
+    /// Enum for attribute Recognizable Visual Features
+    enum RecognizableVisibleFeatures
+    {
+      /// Unknown (e.g. not set)
+      RVF_UNKNOWN,
+      /// YES (recognizable visual features present)
+      RVF_YES,
+      /// NO (recognizable visual features not present)
+      RVF_NO
+    };
+
+    /** Convert Recognizable Visual Features enum to OFString
+     *  @param  rvf The enum to convert
+     *  @return String version of enum value
+     */
+    static OFString rvf2Str(const RecognizableVisibleFeatures rvf);
+
+    /** Convert OFString version of Recognizable Visual Features attribute
+     *  value to enum value
+     *  @param  rvf The OFString value to convert
+     *  @return The enum value of the string
+     */
+    static RecognizableVisibleFeatures str2Rvf(const OFString& rvf);
+
+    /** Convert Content Qualification enum to OFString
+     *  @param  cq The enum to convert
+     *  @return String version of enum value
+     */
+    static OFString cq2Str(const ContentQualification cq);
+
+    /** Convert OFString version of Content Qualification attribute
+     *  value to enum value
+     *  @param  cq The OFString value to convert
+     *  @return The enum value of the string
+     */
+    static ContentQualification str2Cq(const OFString& cq);
+
+    /** Check whether Recognizable Visual Features enum value is valid
+     *  @param  rvf Value to check
+     *  @return OFTrue if valid, OFFalse otherwise
+     */
+    static OFBool rvfValid(const RecognizableVisibleFeatures rvf);
+
+    /** Check whether Content Qualification enum value is valid
+     *  @param  cq Value to check
+     *  @return OFTrue if valid, OFFalse otherwise
+     */
+    static OFBool cqValid(const ContentQualification cq);
+
+};
+
+#endif // DPMTYPES_H
diff --git a/dcmpmap/libsrc/CMakeLists.txt b/dcmpmap/libsrc/CMakeLists.txt
new file mode 100644
index 0000000..4087463
--- /dev/null
+++ b/dcmpmap/libsrc/CMakeLists.txt
@@ -0,0 +1,4 @@
+# create library from source files
+DCMTK_ADD_LIBRARY(dcmpmap dpmtypes dpmmodparametricmapseries dpmmodparametricmapimage dpmparametricmapbase dpmparametricmapiod)
+
+DCMTK_TARGET_LINK_MODULES(dcmpmap dcmfg dcmiod dcmdata ofstd oflog)
diff --git a/dcmseg/libsrc/Makefile.dep b/dcmpmap/libsrc/Makefile.dep
similarity index 78%
copy from dcmseg/libsrc/Makefile.dep
copy to dcmpmap/libsrc/Makefile.dep
index a9ee8fb..a0c4bd7 100644
--- a/dcmseg/libsrc/Makefile.dep
+++ b/dcmpmap/libsrc/Makefile.dep
@@ -1,32 +1,102 @@
-segdoc.o: segdoc.cc ../../config/include/dcmtk/config/osconfig.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+dpmmodparametricmapimage.o: dpmmodparametricmapimage.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
- ../include/dcmtk/dcmseg/segdoc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
- ../../dcmiod/include/dcmtk/dcmiod/iodimage.h \
- ../../dcmiod/include/dcmtk/dcmiod/iodcommn.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
- ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
+ ../../dcmiod/include/dcmtk/dcmiod/cielabutil.h \
+ ../include/dcmtk/dcmpmap/dpmmodparametricmapimage.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
+ ../include/dcmtk/dcmpmap/dpmdef.h
+dpmmodparametricmapseries.o: dpmmodparametricmapseries.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
  ../../oflog/include/dcmtk/oflog/config/defines.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/tstring.h \
  ../../oflog/include/dcmtk/oflog/tchar.h \
  ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
@@ -44,39 +114,54 @@ segdoc.o: segdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
  ../../dcmiod/include/dcmtk/dcmiod/cielabutil.h \
- ../../dcmiod/include/dcmtk/dcmiod/modpatient.h \
+ ../include/dcmtk/dcmpmap/dpmmodparametricmapseries.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
+ ../include/dcmtk/dcmpmap/dpmdef.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
- ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
@@ -84,17 +169,12 @@ segdoc.o: segdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
@@ -119,41 +199,9 @@ segdoc.o: segdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
- ../../dcmiod/include/dcmtk/dcmiod/modpatientstudy.h \
- ../../ofstd/include/dcmtk/ofstd/ofoption.h \
- ../../ofstd/include/dcmtk/ofstd/ofalign.h \
- ../../dcmiod/include/dcmtk/dcmiod/modgeneralstudy.h \
- ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
- ../../dcmiod/include/dcmtk/dcmiod/modequipment.h \
- ../../dcmiod/include/dcmtk/dcmiod/modgeneralseries.h \
- ../../dcmiod/include/dcmtk/dcmiod/modfor.h \
- ../../dcmiod/include/dcmtk/dcmiod/modsopcommon.h \
- ../../dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h \
- ../../dcmiod/include/dcmtk/dcmiod/iodreferences.h \
- ../../dcmiod/include/dcmtk/dcmiod/modgeneralimage.h \
- ../../dcmiod/include/dcmtk/dcmiod/modimagepixel.h \
- ../../dcmiod/include/dcmtk/dcmiod/modsegmentationseries.h \
- ../../dcmiod/include/dcmtk/dcmiod/modenhequipment.h \
- ../../dcmiod/include/dcmtk/dcmiod/modmultiframefg.h \
- ../../dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h \
- ../../dcmfg/include/dcmtk/dcmfg/fginterface.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgtypes.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgdefine.h \
- ../../dcmfg/include/dcmtk/dcmfg/fg.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgbase.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgfracon.h \
- ../include/dcmtk/dcmseg/segtypes.h ../include/dcmtk/dcmseg/segdef.h \
- ../include/dcmtk/dcmseg/segment.h ../include/dcmtk/dcmseg/segutils.h \
- ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgseg.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgplanpo.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgplanor.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgfact.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgderimg.h
-segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+dpmparametricmapbase.o: dpmparametricmapbase.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -212,6 +260,8 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -219,8 +269,7 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
  ../../dcmiod/include/dcmtk/dcmiod/cielabutil.h \
- ../include/dcmtk/dcmseg/segment.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../include/dcmtk/dcmpmap/dpmtypes.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
@@ -244,11 +293,9 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -267,6 +314,7 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
@@ -276,14 +324,38 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
- ../include/dcmtk/dcmseg/segtypes.h ../include/dcmtk/dcmseg/segdef.h \
- ../include/dcmtk/dcmseg/segdoc.h \
+ ../include/dcmtk/dcmpmap/dpmdef.h \
+ ../include/dcmtk/dcmpmap/dpmparametricmapbase.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fginterface.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgtypes.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgdefine.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fg.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgbase.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgderimg.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgfracon.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgframeanatomy.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgframevoilut.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgidentpixeltransform.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgparametricmapframetype.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgpixmsr.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgplanor.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgplanpo.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodcontentitemmacro.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodimage.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvriant.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/variant.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/helpers.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/cnvrsn.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/vsprfw.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmiod/include/dcmtk/dcmiod/iodcommn.h \
  ../../dcmiod/include/dcmtk/dcmiod/modpatient.h \
  ../../dcmiod/include/dcmtk/dcmiod/modpatientstudy.h \
  ../../ofstd/include/dcmtk/ofstd/ofoption.h \
- ../../ofstd/include/dcmtk/ofstd/ofalign.h \
  ../../dcmiod/include/dcmtk/dcmiod/modgeneralstudy.h \
  ../../dcmiod/include/dcmtk/dcmiod/modequipment.h \
  ../../dcmiod/include/dcmtk/dcmiod/modgeneralseries.h \
@@ -292,35 +364,40 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodreferences.h \
  ../../dcmiod/include/dcmtk/dcmiod/modgeneralimage.h \
- ../../dcmiod/include/dcmtk/dcmiod/modimagepixel.h \
- ../../dcmiod/include/dcmtk/dcmiod/modsegmentationseries.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modimagepixelbase.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modacquisitioncontext.h \
  ../../dcmiod/include/dcmtk/dcmiod/modenhequipment.h \
- ../../dcmiod/include/dcmtk/dcmiod/modmultiframefg.h \
  ../../dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h \
- ../../dcmfg/include/dcmtk/dcmfg/fginterface.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgtypes.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgdefine.h \
- ../../dcmfg/include/dcmtk/dcmfg/fg.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgbase.h \
- ../../dcmfg/include/dcmtk/dcmfg/fgfracon.h
-segtypes.o: segtypes.cc ../../config/include/dcmtk/config/osconfig.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modmultiframefg.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modimagepixel.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modfloatingpointimagepixel.h \
+ ../include/dcmtk/dcmpmap/dpmmodparametricmapimage.h \
+ ../include/dcmtk/dcmpmap/dpmmodparametricmapseries.h
+dpmparametricmapiod.o: dpmparametricmapiod.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmpmap/dpmparametricmapiod.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modimagepixelbase.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
- ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
- ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
- ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -328,7 +405,6 @@ segtypes.o: segtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/config/defines.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
- ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/tstring.h \
  ../../oflog/include/dcmtk/oflog/tchar.h \
  ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
@@ -346,30 +422,29 @@ segtypes.o: segtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
- ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oflimits.h \
- ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
- ../../ofstd/include/dcmtk/ofstd/ofutil.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
  ../../dcmiod/include/dcmtk/dcmiod/cielabutil.h \
- ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
+ ../include/dcmtk/dcmpmap/dpmparametricmapbase.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fginterface.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
@@ -423,16 +498,69 @@ segtypes.o: segtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
- ../../ofstd/include/dcmtk/ofstd/ofmem.h \
- ../include/dcmtk/dcmseg/segtypes.h ../include/dcmtk/dcmseg/segdef.h
-segutils.o: segutils.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmseg/segutils.h ../include/dcmtk/dcmseg/segdef.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgtypes.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgdefine.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fg.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgbase.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgderimg.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgfracon.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgframeanatomy.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgframevoilut.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgidentpixeltransform.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgparametricmapframetype.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgpixmsr.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgplanor.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgplanpo.h \
+ ../../dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodcontentitemmacro.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodimage.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvriant.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/variant.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/helpers.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/cnvrsn.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/vsprfw.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../dcmiod/include/dcmtk/dcmiod/iodcommn.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modpatient.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modpatientstudy.h \
+ ../../ofstd/include/dcmtk/ofstd/ofoption.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modgeneralstudy.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modequipment.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modgeneralseries.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modfor.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modsopcommon.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodreferences.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modgeneralimage.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modacquisitioncontext.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modenhequipment.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modmultiframefg.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modimagepixel.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modfloatingpointimagepixel.h \
+ ../include/dcmtk/dcmpmap/dpmmodparametricmapimage.h \
+ ../include/dcmtk/dcmpmap/dpmdef.h \
+ ../include/dcmtk/dcmpmap/dpmmodparametricmapseries.h \
+ ../include/dcmtk/dcmpmap/dpmtypes.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+dpmtypes.o: dpmtypes.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../include/dcmtk/dcmseg/segtypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../include/dcmtk/dcmpmap/dpmtypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
@@ -440,10 +568,7 @@ segutils.o: segutils.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
- ../../ofstd/include/dcmtk/ofstd/oftypes.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../oflog/include/dcmtk/oflog/tstring.h \
- ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../oflog/include/dcmtk/oflog/tchar.h \
  ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
@@ -466,15 +591,12 @@ segutils.o: segutils.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -547,4 +669,5 @@ segutils.o: segutils.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/cielabutil.h \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
- ../../ofstd/include/dcmtk/ofstd/ofmem.h
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../include/dcmtk/dcmpmap/dpmdef.h
diff --git a/dcmsign/libsrc/Makefile.in b/dcmpmap/libsrc/Makefile.in
similarity index 65%
copy from dcmsign/libsrc/Makefile.in
copy to dcmpmap/libsrc/Makefile.in
index 0257401..5f72f74 100644
--- a/dcmsign/libsrc/Makefile.in
+++ b/dcmpmap/libsrc/Makefile.in
@@ -1,5 +1,5 @@
 #
-#	Makefile for dcmsign/libsrc
+#	Makefile for dcmpmap/libsrc
 #
 
 @SET_MAKE@
@@ -15,14 +15,19 @@ include $(configdir)/@common_makefile@
 ofstddir = $(top_srcdir)/../ofstd
 oflogdir = $(top_srcdir)/../oflog
 dcmdatadir = $(top_srcdir)/../dcmdata
+dcmioddir = $(top_srcdir)/../dcmiod
+dcmfgdir = $(top_srcdir)/../dcmfg
+
+LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include \
+	-I$(dcmdatadir)/include -I$(dcmioddir)/include \
+	-I$(dcmfgdir)/include
 
-LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/include
 LOCALDEFS =
 
-objs = dcsignat.o sicert.o sidsa.o simd5.o siprivat.o sirsa.o sisprof.o \
-	siautopr.o sicreapr.o simaccon.o sinullpr.o siripemd.o sisha1.o \
-	sitypes.o sicertvf.o sibrsapr.o
-library = libdcmdsig.$(LIBEXT)
+objs = dpmtypes.o dpmtypes.o dpmmodparametricmapseries.o dpmmodparametricmapimage.o dpmparametricmapbase.o dpmparametricmapiod.o
+
+
+library = libdcmpmap.$(LIBEXT)
 
 
 all: $(library)
@@ -46,6 +51,6 @@ distclean:
 
 
 dependencies:
-	$(CXX) -MM $(defines) $(includes) $(CPPFLAGS) $(CXXFLAGS) *.cc > $(DEP)
+	$(CXX) -MM $(defines) $(includes) $(CPPFLAGS) $(CXXFLAGS) *.cc  > $(DEP)
 
 include $(DEP)
diff --git a/dcmpmap/libsrc/dpmmodparametricmapimage.cc b/dcmpmap/libsrc/dpmmodparametricmapimage.cc
new file mode 100644
index 0000000..a22883a
--- /dev/null
+++ b/dcmpmap/libsrc/dpmmodparametricmapimage.cc
@@ -0,0 +1,289 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmpmap
+ *
+ *  Author: Jan Schlamelcher
+ *
+ *  Purpose: Class for managing the Parametric Map Image Module
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
+#include "dcmtk/dcmdata/dcvrcs.h"
+#include "dcmtk/dcmdata/dcvrds.h"
+#include "dcmtk/dcmiod/iodutil.h"
+#include "dcmtk/dcmpmap/dpmmodparametricmapimage.h"
+
+const OFString DPMParametricMapImageModule::m_ModuleName = "DPMParametricMapImageModule";
+
+DPMParametricMapImageModule::DPMParametricMapImageModule()
+: IODModule()
+{
+  resetRules();
+}
+
+DPMParametricMapImageModule::DPMParametricMapImageModule(OFshared_ptr<DcmItem> item,
+                                                         OFshared_ptr<IODRules> rules)
+: IODModule(item, rules)
+{
+  // reset element rules
+  resetRules();
+}
+
+DPMParametricMapImageModule::~DPMParametricMapImageModule()
+{
+
+}
+
+OFString DPMParametricMapImageModule::getName() const
+{
+  return m_ModuleName;
+}
+
+void DPMParametricMapImageModule::resetRules()
+{
+  // parameters are tag, VM, type. Overwrite old rules if any.
+  m_Rules->addRule(new IODRule(DCM_ImageType, "2-n","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_SamplesPerPixel, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_PhotometricInterpretation, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_BitsAllocated, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_BitsStored, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_HighBit, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_PresentationLUTShape, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_LossyImageCompression, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_LossyImageCompressionRatio, "1-n","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_LossyImageCompressionMethod, "1-n","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_BurnedInAnnotation, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_RecognizableVisualFeatures, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_ContentQualification, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+}
+
+OFCondition DPMParametricMapImageModule::read(DcmItem& source,
+                                              const OFBool clearOldData)
+{
+  if (clearOldData)
+    clearData();
+
+  IODComponent::read(source, OFFalse /* data already cleared */);
+
+  return EC_Normal;
+}
+
+OFCondition DPMParametricMapImageModule::write(DcmItem& destination)
+{
+  OFCondition result = EC_Normal;
+
+  result = IODComponent::write(destination);
+
+  return result;
+}
+
+OFCondition DPMParametricMapImageModule::getImageType(OFString &value,
+                                                      const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_ImageType, *m_Item, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getSamplesPerPixel(Uint16 &value,
+                                                            const signed long pos) const
+{
+  return m_Item->findAndGetUint16(DCM_SamplesPerPixel, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getPhotometricInterpretation(OFString &value,
+                                                                      const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_PhotometricInterpretation, *m_Item, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getBitsAllocated(Uint16 &value,
+                                                          const signed long pos) const
+{
+  return m_Item->findAndGetUint16(DCM_BitsAllocated, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getBitsStored(Uint16 &value,
+                                                       const signed long pos) const
+{
+  return m_Item->findAndGetUint16(DCM_BitsStored, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getHighBit(Uint16 &value,
+                                                    const signed long pos) const
+{
+  return m_Item->findAndGetUint16(DCM_HighBit, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getPresentationLUTShape(OFString &value,
+                                                                 const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_PresentationLUTShape, *m_Item, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getLossyImageCompression(OFString &value,
+                                                                  const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_LossyImageCompression, *m_Item, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getLossyImageCompressionRatio(OFString &value,
+                                                                       const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_LossyImageCompressionRatio, *m_Item, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getLossyImageCompressionMethod(OFString &value,
+                                                                        const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_LossyImageCompressionMethod, *m_Item, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getBurnedInAnnotation(OFString &value,
+                                                               const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_BurnedInAnnotation, *m_Item, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getRecognizableVisualFeatures(OFString &value,
+                                                                       const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_RecognizableVisualFeatures, *m_Item, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::getContentQualification(OFString &value,
+                                                                 const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_ContentQualification, *m_Item, value, pos);
+}
+
+OFCondition DPMParametricMapImageModule::setImageType(const OFString &value,
+                                                      const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "2-n") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_ImageType, value);
+  return result;
+}
+
+OFCondition DPMParametricMapImageModule::setSamplesPerPixel(const Uint16 &value,
+                                                            const OFBool checkValue)
+{
+  if (checkValue && (value != 1))
+    return IOD_EC_InvalidElementValue;
+
+  return m_Item->putAndInsertUint16(DCM_SamplesPerPixel, value);
+}
+
+OFCondition DPMParametricMapImageModule::setPhotometricInterpretation(const OFString &value,
+                                                                      const OFBool checkValue)
+{
+  if (checkValue && (value != "MONOCHROME2"))
+    return IOD_EC_InvalidElementValue;
+
+  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_PhotometricInterpretation, value);
+  return result;
+}
+
+OFCondition DPMParametricMapImageModule::setBitsAllocated(const Uint16 &value,
+                                                          const OFBool checkValue)
+{
+  if (checkValue && (value != 16) && (value != 32) && (value != 64))
+    return IOD_EC_InvalidElementValue;
+
+  return m_Item->putAndInsertUint16(DCM_BitsAllocated, value);
+}
+
+OFCondition DPMParametricMapImageModule::setBitsStored(const Uint16 &value,
+                                                       const OFBool checkValue)
+{
+  if (checkValue && (value != 16) && (value != 32) && (value != 64))
+    return IOD_EC_InvalidElementValue;
+
+  return m_Item->putAndInsertUint16(DCM_BitsStored, value);
+}
+
+OFCondition DPMParametricMapImageModule::setHighBit(const Uint16 &value,
+                                                    const OFBool checkValue)
+{
+  if (checkValue && (value != 15))
+    return IOD_EC_InvalidElementValue;
+
+  return m_Item->putAndInsertUint16(DCM_HighBit, value);
+}
+
+OFCondition DPMParametricMapImageModule::setPresentationLUTShape(const OFString &value,
+                                                                 const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_PresentationLUTShape, value);
+  return result;
+}
+
+OFCondition DPMParametricMapImageModule::setLossyImageCompression(const OFString &value,
+                                                                  const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_LossyImageCompression, value);
+  return result;
+}
+
+OFCondition DPMParametricMapImageModule::setLossyImageCompressionRatio(const OFString &value,
+                                                                       const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1-n") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_LossyImageCompressionRatio, value);
+  return result;
+}
+
+OFCondition DPMParametricMapImageModule::setLossyImageCompressionMethod(const OFString &value,
+                                                                        const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1-n") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_LossyImageCompressionMethod, value);
+  return result;
+}
+
+OFCondition DPMParametricMapImageModule::setBurnedInAnnotation(const OFString &value,
+                                                               const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_BurnedInAnnotation, value);
+  return result;
+}
+
+OFCondition DPMParametricMapImageModule::setRecognizableVisualFeatures(const OFString &value,
+                                                                       const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_RecognizableVisualFeatures, value);
+  return result;
+}
+
+OFCondition DPMParametricMapImageModule::setContentQualification(const OFString &value,
+                                                                 const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_ContentQualification, value);
+  return result;
+}
diff --git a/dcmpmap/libsrc/dpmmodparametricmapseries.cc b/dcmpmap/libsrc/dpmmodparametricmapseries.cc
new file mode 100644
index 0000000..cf65edc
--- /dev/null
+++ b/dcmpmap/libsrc/dpmmodparametricmapseries.cc
@@ -0,0 +1,124 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmpmap
+ *
+ *  Author: Jan Schlamelcher
+ *
+ *  Purpose: Class for managing the Parametric Map Series Module
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
+#include "dcmtk/dcmdata/dcvrcs.h"
+#include "dcmtk/dcmdata/dcvris.h"
+#include "dcmtk/dcmiod/iodutil.h"
+#include "dcmtk/dcmpmap/dpmmodparametricmapseries.h"
+
+const OFString DPMParametricMapSeriesModule::m_ModuleName = "DPMParametricMapSeriesModule";
+
+DPMParametricMapSeriesModule::DPMParametricMapSeriesModule()
+: IODModule()
+{
+  resetRules();
+}
+
+DPMParametricMapSeriesModule::DPMParametricMapSeriesModule(OFshared_ptr<DcmItem> item,
+                                                           OFshared_ptr<IODRules> rules)
+: IODModule(item, rules)
+{
+  // reset element rules
+  resetRules();
+}
+
+DPMParametricMapSeriesModule::~DPMParametricMapSeriesModule()
+{
+
+}
+
+OFString DPMParametricMapSeriesModule::getName() const
+{
+  return m_ModuleName;
+}
+
+void DPMParametricMapSeriesModule::resetRules()
+{
+  // parameters are tag, VM, type. Overwrite old rules if any.
+  m_Rules->addRule(new IODRule(DCM_Modality, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_SeriesNumber, "1","1", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_ReferencedPerformedProcedureStepSequence, "1","1C", getName(), DcmIODTypes::IE_SERIES), OFTrue);
+}
+
+OFCondition DPMParametricMapSeriesModule::read(DcmItem& source,
+                                               const OFBool clearOldData)
+{
+  if (clearOldData)
+    clearData();
+
+  IODComponent::read(source, OFFalse /* data already cleared */);
+  DcmIODUtil::readSubSequence(source, DCM_ReferencedPerformedProcedureStepSequence, m_ReferencedPerformedProcedureStepSequence, m_Rules->getByTag(DCM_ReferencedPerformedProcedureStepSequence));
+
+  return EC_Normal;
+}
+
+OFCondition DPMParametricMapSeriesModule::write(DcmItem& destination)
+{
+  OFCondition result = EC_Normal;
+
+  if(SOPInstanceReferenceMacro* pReferencedPerformedProcedureStepSequence = getReferencedPerformedProcedureStepSequence())
+    DcmIODUtil::writeSingleItem(result, DCM_ReferencedPerformedProcedureStepSequence, *pReferencedPerformedProcedureStepSequence, *m_Item, m_Rules->getByTag(DCM_ReferencedPerformedProcedureStepSequence));
+  result = IODComponent::write(destination);
+
+  return result;
+}
+
+OFCondition DPMParametricMapSeriesModule::getModality(OFString &value,
+                                                      const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_Modality, *m_Item, value, pos);
+}
+
+OFCondition DPMParametricMapSeriesModule::getSeriesNumber(OFString &value,
+                                                          const signed long pos) const
+{
+  return DcmIODUtil::getStringValueFromItem(DCM_SeriesNumber, *m_Item, value, pos);
+}
+
+SOPInstanceReferenceMacro* DPMParametricMapSeriesModule::getReferencedPerformedProcedureStepSequence()
+{
+  return m_ReferencedPerformedProcedureStepSequence.empty() ? OFnullptr : &*m_ReferencedPerformedProcedureStepSequence.begin();
+}
+
+OFVector<SOPInstanceReferenceMacro>& DPMParametricMapSeriesModule::getEntireReferencedPerformedProcedureStepSequence()
+{
+  return m_ReferencedPerformedProcedureStepSequence;
+}
+
+OFCondition DPMParametricMapSeriesModule::setModality(const OFString &value,
+                                                      const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_Modality, value);
+  return result;
+}
+
+OFCondition DPMParametricMapSeriesModule::setSeriesNumber(const OFString &value,
+                                                          const OFBool checkValue)
+{
+  OFCondition result = (checkValue) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+    result = m_Item->putAndInsertOFStringArray(DCM_SeriesNumber, value);
+  return result;
+}
diff --git a/dcmpmap/libsrc/dpmparametricmapbase.cc b/dcmpmap/libsrc/dpmparametricmapbase.cc
new file mode 100644
index 0000000..a1dc110
--- /dev/null
+++ b/dcmpmap/libsrc/dpmparametricmapbase.cc
@@ -0,0 +1,227 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmpmap
+ *
+ *  Author: Jan Schlamelcher
+ *
+ *  Purpose: Generated base class representing the Parametric Map IOD
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmiod/iodutil.h"
+#include "dcmtk/dcmpmap/dpmtypes.h"
+#include "dcmtk/dcmpmap/dpmparametricmapbase.h"
+
+
+DPMParametricMapBase::DPMParametricMapBase()
+: DPMParametricMapBase::IODImage()
+, m_DPMParametricMapSeriesModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_IODEnhGeneralEquipmentModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_DPMParametricMapImageModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_IODMultiFrameFGModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_IODMultiframeDimensionModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_IODAcquisitionContextModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_IODCommonInstanceReferenceModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+{
+}
+
+
+template<typename ImagePixel>
+DPMParametricMapBase::DPMParametricMapBase(OFin_place_type_t(ImagePixel))
+: DPMParametricMapBase::IODImage(OFin_place<ImagePixel>)
+, m_DPMParametricMapSeriesModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_IODEnhGeneralEquipmentModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_DPMParametricMapImageModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_IODMultiFrameFGModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_IODMultiframeDimensionModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_IODAcquisitionContextModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+, m_IODCommonInstanceReferenceModule(DPMParametricMapBase::IODImage::getData(), DPMParametricMapBase::IODImage::getRules())
+{
+}
+
+
+DPMParametricMapBase::~DPMParametricMapBase()
+{
+}
+
+
+void DPMParametricMapBase::clearData()
+{
+  DPMParametricMapBase::IODImage::clearData();
+}
+
+
+OFCondition DPMParametricMapBase::read(DcmItem& dataset)
+{
+  OFString sopClass;
+  if(DcmIODUtil::checkSOPClass(&dataset, UID_ParametricMapStorage, sopClass).bad())
+  {
+    DCMPMAP_ERROR("Given file does not seem to be a Parametric Map storage object since SOP class is: " << sopClass);
+    return IOD_EC_WrongSOPClass;
+  }
+
+  DPMParametricMapBase::IODImage::read(dataset);
+  m_DPMParametricMapSeriesModule.read(dataset);
+  m_IODEnhGeneralEquipmentModule.read(dataset);
+  m_DPMParametricMapImageModule.read(dataset);
+  m_IODMultiFrameFGModule.read(dataset);
+  m_FGInterface.read(dataset);
+  m_IODMultiframeDimensionModule.read(dataset);
+  m_IODAcquisitionContextModule.read(dataset);
+  m_IODCommonInstanceReferenceModule.read(dataset);
+
+  return EC_Normal;
+}
+
+
+OFCondition DPMParametricMapBase::saveFile(const OFString& filename,
+                                           const E_TransferSyntax writeXfer)
+{
+  DcmFileFormat dcmff;
+  OFCondition result;
+  if((result = write(*dcmff.getDataset())).good())
+    result = dcmff.saveFile(filename.c_str(), writeXfer);
+  if(result.bad())
+    DCMPMAP_ERROR("Cannot save Parametric Map object to file " << filename << ": " << result.text());
+  return result;
+}
+
+
+OFCondition DPMParametricMapBase::writeDataset(DcmItem& dataset)
+{
+  return write(dataset);
+}
+
+
+OFCondition DPMParametricMapBase::write(DcmItem& dataset)
+{
+  if(!check())
+    return IOD_EC_InvalidObject;
+
+  OFCondition result;
+  if((result = m_DPMParametricMapSeriesModule.write(dataset)).good())
+  if((result = m_IODEnhGeneralEquipmentModule.write(dataset)).good())
+  if((result = m_DPMParametricMapImageModule.write(dataset)).good())
+  if((result = m_IODMultiFrameFGModule.write(dataset)).good())
+  if((result = m_FGInterface.write(dataset)).good())
+  if((result = m_IODMultiframeDimensionModule.write(dataset)).good())
+  if((result = m_IODAcquisitionContextModule.write(dataset)).good())
+  if((result = m_IODCommonInstanceReferenceModule.write(dataset)).good())
+    return DPMParametricMapBase::IODImage::write(dataset);
+
+  return result;
+}
+
+
+OFBool DPMParametricMapBase::check()
+{
+  return m_FGInterface.check();
+}
+
+
+FGInterface& DPMParametricMapBase::getFunctionalGroups()
+{
+  return m_FGInterface;
+}
+
+
+IODPatientModule& DPMParametricMapBase::getIODPatientModule()
+{
+  return DPMParametricMapBase::IODImage::getPatient();
+}
+
+
+IODGeneralStudyModule& DPMParametricMapBase::getIODGeneralStudyModule()
+{
+  return DPMParametricMapBase::IODImage::getStudy();
+}
+
+
+IODPatientStudyModule& DPMParametricMapBase::getIODPatientStudyModule()
+{
+  return DPMParametricMapBase::IODImage::getPatientStudy();
+}
+
+
+IODGeneralSeriesModule& DPMParametricMapBase::getIODGeneralSeriesModule()
+{
+  return DPMParametricMapBase::IODImage::getSeries();
+}
+
+
+DPMParametricMapSeriesModule& DPMParametricMapBase::getDPMParametricMapSeriesModule()
+{
+  return m_DPMParametricMapSeriesModule;
+}
+
+
+IODGeneralEquipmentModule& DPMParametricMapBase::getIODGeneralEquipmentModule()
+{
+  return DPMParametricMapBase::IODImage::getEquipment();
+}
+
+
+IODEnhGeneralEquipmentModule& DPMParametricMapBase::getIODEnhGeneralEquipmentModule()
+{
+  return m_IODEnhGeneralEquipmentModule;
+}
+
+
+IODGeneralImageModule& DPMParametricMapBase::getIODGeneralImageModule()
+{
+  return DPMParametricMapBase::IODImage::getGeneralImage();
+}
+
+
+DPMParametricMapImageModule& DPMParametricMapBase::getDPMParametricMapImageModule()
+{
+  return m_DPMParametricMapImageModule;
+}
+
+
+IODMultiFrameFGModule& DPMParametricMapBase::getIODMultiFrameFGModule()
+{
+  return m_IODMultiFrameFGModule;
+}
+
+
+IODMultiframeDimensionModule& DPMParametricMapBase::getIODMultiframeDimensionModule()
+{
+  return m_IODMultiframeDimensionModule;
+}
+
+
+IODAcquisitionContextModule& DPMParametricMapBase::getIODAcquisitionContextModule()
+{
+  return m_IODAcquisitionContextModule;
+}
+
+
+IODCommonInstanceReferenceModule& DPMParametricMapBase::getIODCommonInstanceReferenceModule()
+{
+  return m_IODCommonInstanceReferenceModule;
+}
+
+
+IODSOPCommonModule& DPMParametricMapBase::getIODSOPCommonModule()
+{
+  return DPMParametricMapBase::IODImage::getSOPCommon();
+}
+
+
+template DCMTK_DCMPMAP_EXPORT DPMParametricMapBase::DPMParametricMapBase(OFin_place_type_t(IODImagePixelModule<Uint16>));
+template DCMTK_DCMPMAP_EXPORT DPMParametricMapBase::DPMParametricMapBase(OFin_place_type_t(IODImagePixelModule<Sint16>));
+template DCMTK_DCMPMAP_EXPORT DPMParametricMapBase::DPMParametricMapBase(OFin_place_type_t(IODFloatingPointImagePixelModule));
+template DCMTK_DCMPMAP_EXPORT DPMParametricMapBase::DPMParametricMapBase(OFin_place_type_t(IODDoubleFloatingPointImagePixelModule));
diff --git a/dcmpmap/libsrc/dpmparametricmapiod.cc b/dcmpmap/libsrc/dpmparametricmapiod.cc
new file mode 100644
index 0000000..fe4a368
--- /dev/null
+++ b/dcmpmap/libsrc/dpmparametricmapiod.cc
@@ -0,0 +1,1064 @@
+/*
+ *
+ *  Copyright (C) 2016-2017, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmpmap
+ *
+ *  Author: Michael Onken
+ *
+ *  Purpose: Class for managing the Parametric Map IOD
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmpmap/dpmparametricmapiod.h"
+#include "dcmtk/dcmiod/iodutil.h"
+
+// ----------------------------------------------------------------------------
+// Class SetImagePixelModuleVisitor:
+// Class for setting Image Pixel Module attributes based on pixel data type
+// ----------------------------------------------------------------------------
+
+struct DPMParametricMapIOD::SetImagePixelModuleVisitor
+{
+  SetImagePixelModuleVisitor(const Uint16 r,
+                             const Uint16 c)
+  : rows(r)
+  , cols(c)
+  {
+
+  }
+
+  template<typename T>
+  OFCondition operator()( T& t )
+  {
+    if ( (rows == 0) || (cols == 0) )
+    {
+      DCMPMAP_ERROR("Rows/Cols must be non-zero but are : " << rows << "/" << cols);
+      return DPM_InvalidDimensions;
+    }
+
+    t.setRows(rows);
+    t.setColumns(cols);
+    setSpecificValues(t);
+
+    return EC_Normal;
+  }
+
+  template<typename T>
+  void setSpecificValues(IODImagePixelModule<T>& p)
+  {
+    p.setBitsAllocated(16);
+    p.setBitsStored(16);
+    p.setHighBit(15);
+    p.setSamplesPerPixel(1);
+    p.setPhotometricInterpretation("MONOCHROME2");
+    p.setPixelRepresentation(OFis_signed<T>::value ? 1 : 0);
+  }
+
+  void setSpecificValues(IODFloatingPointImagePixelModule& p)
+  {
+    // Avoid compiler warning about unused parameter "p"
+    (void)p;
+    // No specific values for 32 bit floating point data to be set
+  }
+
+  void setSpecificValues(IODDoubleFloatingPointImagePixelModule& p)
+  {
+    // Avoid compiler warning about unused parameter "p"
+    (void)p;
+    // No specific values for 64 bit floating point data to be set
+  }
+  // Members
+  const Uint16 rows;
+  const Uint16 cols;
+};
+
+
+struct DPMParametricMapIOD::ReadVisitor
+{
+  // Inner class that implements the specializations for different
+  // pixel data types
+  template<typename T>
+  class DcmElementOf;
+
+  ReadVisitor(DcmItem& srcItem,
+              DPMParametricMapIOD& m)
+  : item(srcItem)
+  , map(m)
+  {
+    // Nothing to do
+  }
+
+  OFCondition operator()(OFmonostate)
+  {
+    return DPM_InvalidPixelData;
+  }
+
+  template<typename ImagePixel>
+  OFCondition operator()(ImagePixel& pixel)
+  {
+    OFCondition result = map.readGeneric(item);
+    if (result.good())
+    {
+      Uint16 rows, cols, numFrames;
+      size_t numBytesFrame = 0;
+      rows = cols = numFrames = 0;
+      map.getRows(rows);
+      map.getColumns(cols);
+      numFrames = DcmIODUtil::limitMaxFrames(map.getFunctionalGroups().getNumberOfFrames(),
+                                             "Functional groups implicate more than 65535 frames, only 65535 will be used");
+      if (!rows || !cols || !numFrames)
+      {
+        DCMPMAP_ERROR("Rows (" << rows << "), Columns (" << cols << ") and Number of Frames (" << numFrames << ") must not be 0");
+        return DPM_InvalidPixelInfo;
+      }
+      numBytesFrame = rows * cols * sizeof(typename ImagePixel::value_type);
+      result = readSpecific(pixel, numFrames, numBytesFrame);
+    }
+    return result;
+  }
+
+  template<typename T>
+  OFCondition readSpecific(IODImagePixelModule<T>& p,
+                           const Uint16 numFrames,
+                           const size_t numBytesFrame)
+  {
+    // Avoid compiler warning about unused parameter
+    (void)p;
+    unsigned long numTotalWords = 0;
+    const Uint16* pixData = NULL;
+    if (item.findAndGetUint16Array(DCM_PixelData, pixData, &numTotalWords).good())
+    {
+      if (numTotalWords == numBytesFrame * numFrames / 2 /* we compare to num words not num bytes */)
+      {
+        for (Uint16 n = 0; n < numFrames; n++)
+        {
+          DcmIODTypes::Frame* f = new DcmIODTypes::Frame;
+          if (f)
+          {
+            f->length = numBytesFrame;
+            f->pixData = new Uint8[f->length];
+            memcpy(f->pixData, pixData + n*numBytesFrame/2, numBytesFrame);
+            map.m_Frames.push_back(f);
+          }
+          else
+          {
+            return EC_MemoryExhausted;
+          }
+        }
+      }
+      else
+      {
+        DCMPMAP_ERROR("Invalid number of pixels: Expected " << numBytesFrame * numFrames / 2 << " pixels but Pixel Data has " << numTotalWords << " pixels");
+        return DPM_InvalidPixelInfo;
+      }
+    }
+    else
+    {
+      DCMPMAP_ERROR("No Pixel Data element found");
+      return DPM_NoPixelData;
+    }
+    return EC_Normal;
+  }
+
+  OFCondition readSpecific(IODFloatingPointImagePixelModule& p,
+                           const Uint16 numFrames,
+                           const size_t numBytesFrame)
+  {
+    // Avoid compiler warning on unused parameter
+    (void)p;
+    unsigned long numTotalFloats = 0;
+    const Float32* pixData = NULL;
+    if (item.findAndGetFloat32Array(DCM_FloatPixelData, pixData, &numTotalFloats).good())
+    {
+      if (numTotalFloats == numBytesFrame * numFrames / 4 /* we compare to 32 bit floats not bytes */)
+      {
+        for (Uint16 n=0; n < numFrames; n++)
+        {
+          DcmIODTypes::Frame* f = new DcmIODTypes::Frame;
+          if (f)
+          {
+            f->length = numBytesFrame;
+            f->pixData = new Uint8[f->length];
+            memcpy(f->pixData, pixData + n*numBytesFrame/4, numBytesFrame);
+            map.m_Frames.push_back(f);
+          }
+          else
+          {
+            return EC_MemoryExhausted;
+          }
+        }
+      }
+      else
+      {
+        DCMPMAP_ERROR("Invalid number of pixels: Expected " << numBytesFrame * numFrames / 4 << " pixels but Float Pixel Data has " << numTotalFloats << " pixels");
+        return DPM_InvalidPixelInfo;
+      }
+    }
+    else
+    {
+      DCMPMAP_ERROR("No Float Pixel Data element found");
+      return DPM_NoPixelData;
+    }
+    return EC_Normal;
+  }
+
+  OFCondition readSpecific(IODDoubleFloatingPointImagePixelModule& p,
+                    const Uint16 numFrames,
+                    const size_t numBytesFrame)
+  {
+    // Avoid compiler warning on unused parameter
+    (void)p;
+    unsigned long numTotalFloats = 0;
+    const Float64* pixData = NULL;
+    if (item.findAndGetFloat64Array(DCM_DoubleFloatPixelData, pixData, &numTotalFloats).good())
+    {
+      if (numTotalFloats == numBytesFrame * numFrames / 8 /* we compare to 64 bit floats not bytes */)
+      {
+        for (Uint16 n=0; n < numFrames; n++)
+        {
+          DcmIODTypes::Frame* f = new DcmIODTypes::Frame;
+          if (f)
+          {
+            f->length = numBytesFrame;
+            f->pixData = new Uint8[f->length];
+            memcpy(f->pixData, pixData + n*numBytesFrame/8, numBytesFrame);
+            map.m_Frames.push_back(f);
+          }
+          else
+          {
+            return EC_MemoryExhausted;
+          }
+        }
+      }
+      else
+      {
+        DCMPMAP_ERROR("Invalid number of pixels: Expected " << numBytesFrame * numFrames / 8 << " pixels but Double Float Pixel Data has " << numTotalFloats << " pixels");
+        return DPM_InvalidPixelInfo;
+      }
+    }
+    else
+    {
+      DCMPMAP_ERROR("No Double Float Pixel Data element found");
+      return DPM_NoPixelData;
+    }
+    return EC_Normal;
+  }
+
+  // Members, i.e. parameters to operator()
+  DcmItem& item;
+  DPMParametricMapIOD& map;
+};
+
+
+
+// ----------------------------------------------------------------------------
+// Class WriteVisitor:
+// Class for adding DICOM pixel data bulk element based on type pixel data type
+// ----------------------------------------------------------------------------
+
+// Generic implementation, template specialization is done in inner
+// DcmElementOf class
+struct DPMParametricMapIOD::WriteVisitor
+{
+  // Inner class that implements the specializations for different
+  // pixel data types
+  template<typename T>
+  class DcmElementOf;
+
+  // Constructor, sets parameters the visitor works on in operator()
+  WriteVisitor(DcmItem& i,
+               DPMParametricMapIOD& m)
+  : item(i)
+  , map(m)
+  {
+    // Nothing else to do
+  }
+
+  //
+  OFCondition operator()(OFmonostate)
+  {
+    DCMPMAP_ERROR("Could not write pixel data: Invalid pixel data type, only 16 bit integer as well as 32 and 64 bit float data are handled");
+    return DPM_NoPixelData;
+  }
+
+  template<typename ImagePixel>
+  OFCondition operator()(ImagePixel& pixel)
+  {
+    // Avoid compiler warning about unused parameter "pixel"
+    (void)pixel;
+    // Input data is checked before
+    Uint16 rows = 0;
+    Uint16 cols = 0;
+    map.getRows(rows);
+    map.getColumns(cols);
+    const size_t numFrames = map.m_Frames.size();
+    const size_t numBytesFrame = map.m_Frames[0]->length;
+    const size_t numPixelsFrame = rows * cols;
+    // Creates the correct pixel data element, based on the image pixel module used.
+    // I.e. For integer data, the "Pixel Data" element is used, i.e. the DcmElement type
+    // instantiated by DcmElementOf is of DCMTK type DcmOtherByteOtherWord while for
+    // IODFloatingPointImagePixelModule which has floating point pixel data, DcmFloatingPointSingle
+    // is used.
+    DcmElementOf<ImagePixel> element;
+    // copy all frames into map's frame structure
+    if (OFTypename ImagePixel::value_type* ptr = element.getData(numBytesFrame * numFrames))
+    {
+      for (size_t f = 0; f < numFrames; ++f)
+      {
+        memcpy(ptr, map.m_Frames[f]->pixData, numBytesFrame);
+        ptr += numPixelsFrame;
+      }
+      OFCondition result = element.put(item);
+      // Write generic (i.e. non pixel data-specific attributes)
+      return result.good() ? map.writeGeneric(item) : result;
+    }
+    return EC_MemoryExhausted;
+  }
+
+  // Members, i.e. parameters to operator()
+  DcmItem& item;
+  DPMParametricMapIOD& map;
+};
+
+
+// ----------------------------------------------------------------------------
+// Class WriteVisitor:DcmElementOf<IODImagePixelModule<PixelType> >:
+// Offers creation and insertion for Pixel Data element as used for
+// int-based pixel data. So far, Uint8, Sint8, Uint16 and Sint16 pixel
+// data is supported (relates to OB/OW data type for DICOM Pixel data)
+// ----------------------------------------------------------------------------
+
+template<typename PixelType>
+class DPMParametricMapIOD::WriteVisitor::DcmElementOf<IODImagePixelModule<PixelType> >
+{
+public:
+
+  DcmElementOf()
+  : m_pElement(new DcmOtherByteOtherWord(DCM_PixelData))
+  {
+    // Nothing else to do
+  }
+
+  PixelType* getData(const size_t count);
+
+  OFCondition put(DcmItem& itemPara)
+  {
+    OFCondition result = itemPara.insert(m_pElement.get(), OFTrue);
+    if (result.good())
+      m_pElement.release();
+    return result;
+  }
+
+private:
+
+  OFunique_ptr<DcmOtherByteOtherWord> m_pElement;
+};
+
+
+template<>
+Uint8* DPMParametricMapIOD::WriteVisitor::DcmElementOf<IODImagePixelModule<Uint8> >::getData(const size_t size)
+{
+  if (m_pElement)
+  if (m_pElement->setVR(EVR_OB).good())
+  {
+    Uint8* result;
+    if (m_pElement->createUint8Array(size, result).good())
+      return result;
+  }
+  return OFnullptr;
+}
+
+
+template<>
+Sint8* DPMParametricMapIOD::WriteVisitor::DcmElementOf<IODImagePixelModule<Sint8> >::getData(const size_t size)
+{
+  if (m_pElement)
+  if (m_pElement->setVR(EVR_OB).good())
+  {
+    Uint8* result;
+    if (m_pElement->createUint8Array(size, result).good())
+      return OFreinterpret_cast(Sint8*, result);
+  }
+  return OFnullptr;
+}
+
+
+template<>
+Uint16* DPMParametricMapIOD::WriteVisitor::DcmElementOf<IODImagePixelModule<Uint16> >::getData(const size_t size /* num total pixels */)
+{
+  if (m_pElement)
+  if (m_pElement->setVR(EVR_OW).good())
+  {
+    Uint16* result;
+    if (m_pElement->createUint16Array(size / 2, result).good())
+      return result;
+  }
+  return OFnullptr;
+}
+
+
+template<>
+Sint16* DPMParametricMapIOD::WriteVisitor::DcmElementOf<IODImagePixelModule<Sint16> >::getData(const size_t size)
+{
+  if (m_pElement)
+  if (m_pElement->setVR(EVR_OW).good())
+  {
+    Uint16* result;
+    if (m_pElement->createUint16Array(size / 2, result).good())
+      return OFreinterpret_cast(Sint16*, result);
+  }
+  return OFnullptr;
+}
+
+
+// ----------------------------------------------------------------------------
+// Class WriteVisitor:DcmElementOf<IODImagePixelModule<IODFloatingPointImagePixelModule> >:
+// Offers creation and insertion for Pixel Data element as used for
+// 32 bit float-based pixel data as used in Parametric Map IOD
+// ----------------------------------------------------------------------------
+
+template<>
+class DPMParametricMapIOD::WriteVisitor::DcmElementOf<IODFloatingPointImagePixelModule>
+{
+public:
+  DcmElementOf()
+  : m_pElement(new DcmFloatingPointSingleAlloc(DCM_FloatPixelData))
+  {
+
+  }
+
+  Float32* getData(const size_t size)
+  {
+    if (m_pElement)
+    {
+      Float32* result;
+      if (m_pElement->createFloat32Array(size, result).good())
+        return result;
+    }
+    return OFnullptr;
+  }
+
+  OFCondition put(DcmItem& itemPara)
+  {
+    OFCondition result = itemPara.insert(m_pElement.get(), OFTrue);
+    if (result.good())
+      m_pElement.release();
+    return result;
+  }
+
+private:
+
+  struct DcmFloatingPointSingleAlloc : DcmFloatingPointSingle
+  {
+    DcmFloatingPointSingleAlloc(const DcmTagKey& tag)
+    : DcmFloatingPointSingle(tag)
+    {
+
+    }
+
+    OFCondition createFloat32Array(const size_t size,
+                                   Float32*& result)
+    {
+       OFCondition status = createEmptyValue(size);
+       result = OFreinterpret_cast(Float32*, getValue());
+       return status;
+    }
+  };
+
+  OFunique_ptr<DcmFloatingPointSingleAlloc> m_pElement;
+};
+
+
+// ----------------------------------------------------------------------------
+// Class WriteVisitor:DcmElementOf<IODImagePixelModule<IODFloatingPointImagePixelModule> >:
+// Offers creation and insertion for Pixel Data element as used for
+// 64 bit float-based pixel data as used in Parametric Map IOD.
+// ----------------------------------------------------------------------------
+
+template<>
+class DPMParametricMapIOD::WriteVisitor::DcmElementOf<IODDoubleFloatingPointImagePixelModule>
+{
+public:
+  DcmElementOf()
+  : m_pElement(new DcmFloatingPointDoubleAlloc(DCM_DoubleFloatPixelData))
+  {
+
+  }
+
+  Float64* getData(const size_t size)
+  {
+    if (m_pElement)
+    {
+      Float64* result;
+      if (m_pElement->createFloat64Array(size, result).good())
+        return result;
+    }
+    return OFnullptr;
+  }
+
+  OFCondition put(DcmItem& itemPara)
+  {
+    OFCondition result = itemPara.insert(m_pElement.get(), OFTrue);
+    if (result.good())
+      m_pElement.release();
+    return result;
+  }
+
+private:
+
+  struct DcmFloatingPointDoubleAlloc : DcmFloatingPointDouble
+  {
+    DcmFloatingPointDoubleAlloc(const DcmTagKey& tag)
+    : DcmFloatingPointDouble(tag)
+    {
+
+    }
+
+    OFCondition createFloat64Array(const size_t size, Float64*& result)
+    {
+       OFCondition status = createEmptyValue(size);
+       result = OFreinterpret_cast(Float64*, getValue());
+       return status;
+    }
+  };
+
+  OFunique_ptr<DcmFloatingPointDoubleAlloc> m_pElement;
+};
+
+
+// Helper "class" that returns Frames offering API to the pixel's frame bulk
+// data by offering the dedicated data type, e.g. Float32 instead of the
+// internally stored generic Uint8 array.
+//
+struct DPMParametricMapIOD::GetFramesVisitor
+{
+  GetFramesVisitor(DPMParametricMapIOD& m)
+  : map(m)
+  {
+
+  }
+
+  OFCondition operator()(OFmonostate)
+  {
+    return DPM_InvalidPixelData;
+  }
+
+  template<typename ImagePixel>
+  Frames<OFTypename ImagePixel::value_type> operator()(ImagePixel&)
+  {
+    return Frames<OFTypename ImagePixel::value_type>(map);
+  }
+
+  DPMParametricMapIOD& map;
+};
+
+
+/** Helper "class" that returns Frames offering API to the pixel's frame bulk
+ *  data by offering the dedicated data type, e.g. Float32 instead of the
+ *  internally stored generic Uint8 array.
+ */
+struct DPMParametricMapIOD::ReadFramesVisitor
+{
+  ReadFramesVisitor(DcmItem& i,
+                    DPMParametricMapIOD& m)
+  : map(m), item(i)
+  {
+    // Nothing else to do
+  }
+
+  OFCondition operator()(OFmonostate)
+  {
+    return DPM_InvalidPixelData;
+  }
+
+  template<typename ImagePixel>
+  OFCondition operator()(ImagePixel&)
+  {
+    return Frames<OFTypename ImagePixel::value_type>(map);
+  }
+
+  // Members, i.e. parameters to operator()
+  DPMParametricMapIOD& map;
+  DcmItem& item;
+};
+
+
+
+template<typename PixelType>
+DPMParametricMapIOD::Frames<PixelType>::Frames(DPMParametricMapIOD& map)
+: m_Map(map)
+{
+
+}
+
+
+template<typename PixelType>
+OFCondition DPMParametricMapIOD::Frames<PixelType>::addFrame(PixelType* data,
+                                                             const size_t numPixels,
+                                                             const OFVector<FGBase*>& perFrameInformation)
+{
+  OFCondition result;
+  if (data && numPixels)
+  {
+    if (!perFrameInformation.empty())
+    {
+      OFunique_ptr<DcmIODTypes::Frame> f(new DcmIODTypes::Frame);
+      if (f)
+      {
+        f->length = numPixels * sizeof(PixelType);
+        f->pixData = new Uint8[f->length];
+        memcpy(f->pixData, data, f->length);
+        m_Map.m_Frames.push_back(f.release());
+        OFVector<FGBase*>::const_iterator fg = perFrameInformation.begin();
+        while ( result.good() && (fg != perFrameInformation.end()) )
+        {
+          result = m_Map.m_FGInterface.addPerFrame(m_Map.m_Frames.size(), **fg);
+          if (result.bad())
+          {
+            DCMPMAP_ERROR("Could not add functional group: " << DcmFGTypes::FGType2OFString((*fg)->getType()));
+            break;
+          }
+          ++fg;
+        }
+      }
+    }
+  }
+  // Clean up if necessary
+  if (result.bad())
+    m_Map.m_FGInterface.deleteFrame(m_Map.m_Frames.size());
+  return result;
+}
+
+
+template<typename PixelType>
+PixelType* DPMParametricMapIOD::Frames<PixelType>::getFrame(const size_t frameNumber)
+{
+  if (frameNumber < m_Map.m_Frames.size())
+  {
+    return (PixelType*)(m_Map.m_Frames[frameNumber]->pixData);
+  }
+  return NULL;
+}
+
+
+// Protected constructor
+DPMParametricMapIOD::DPMParametricMapIOD()
+: DPMParametricMapBase()
+, m_ContentIdentification()
+, m_Frames()
+{
+}
+
+
+// Protected constructor
+template<typename ImagePixel>
+DPMParametricMapIOD::DPMParametricMapIOD(OFin_place_type_t(ImagePixel))
+: DPMParametricMapBase(OFin_place<ImagePixel>)
+, m_ContentIdentification()
+, m_Frames()
+{
+}
+
+
+// Static method used to create a new Parametric Map IOD object
+template<typename ImagePixel>
+OFvariant<OFCondition,DPMParametricMapIOD> DPMParametricMapIOD::create(const OFString& modality,
+                                                                       const OFString& seriesNumber,
+                                                                       const OFString& instanceNumber,
+                                                                       const Uint16 rows,
+                                                                       const Uint16 columns,
+                                                                       const IODEnhGeneralEquipmentModule::EquipmentInfo& equipmentInfo,
+                                                                       const ContentIdentificationMacro& contentIdentification,
+                                                                       const OFString& imageFlavor,
+                                                                       const OFString& derivedPixelContrast,
+                                                                       const DPMTypes::ContentQualification& contentQualification)
+{
+  DPMParametricMapIOD map(OFin_place<ImagePixel>);
+
+  OFCondition status = SetImagePixelModuleVisitor(rows, columns)(*OFget<ImagePixel>(&map.getImagePixel()));
+  if (status.bad())
+    return status;
+
+  status = map.init
+  (
+    modality,
+    seriesNumber,
+    instanceNumber,
+    equipmentInfo,
+    contentIdentification,
+    imageFlavor,
+    derivedPixelContrast,
+    contentQualification
+  );
+
+  if(status.bad())
+    return status;
+
+  return map;
+}
+
+
+OFCondition DPMParametricMapIOD::init(const OFString& modality,
+                                      const OFString& seriesNumber,
+                                      const OFString& instanceNumber,
+                                      const IODEnhGeneralEquipmentModule::EquipmentInfo& equipmentInfo,
+                                      const ContentIdentificationMacro& contentIdentification,
+                                      const OFString& imageFlavor,
+                                      const OFString& derivedPixelContrast,
+                                      const DPMTypes::ContentQualification& contentQualification)
+{
+  if (!equipmentInfo.isDataComplete())
+  {
+    DCMPMAP_ERROR("Equipment info incomplete");
+    return DPM_InvalidAttributeValue;
+  }
+
+  OFCondition status = OFconst_cast(ContentIdentificationMacro*, &contentIdentification)->check();
+  if (status.bad())
+  {
+    DCMPMAP_ERROR("Content identification is invalid: " << status.text());
+    return DPM_InvalidAttributeValue;
+  }
+
+  status = OFconst_cast(ContentIdentificationMacro*, &contentIdentification)->check();
+  if (imageFlavor.empty() || derivedPixelContrast.empty())
+  {
+    DCMPMAP_ERROR
+    (
+      "Image Type value 3 (Image Flavor) and 4 (Derived Pixel Contrast) must be set but are "
+      << imageFlavor << "/" << derivedPixelContrast
+    );
+    return DPM_InvalidAttributeValue;
+  }
+
+  if (!DPMTypes::cqValid(contentQualification))
+  {
+    DCMPMAP_ERROR("Content Qualification not set");
+    return DPM_InvalidAttributeValue;
+  }
+
+  // All data is valid, copy to object
+  status = getIODEnhGeneralEquipmentModule().set(equipmentInfo);
+  if (status.bad())
+  {
+    DCMPMAP_ERROR("Error setting equipment info: " << status.text());
+    return DPM_InvalidAttributeValue;
+  }
+
+  m_ContentIdentification = contentIdentification;
+  OFStringStream ss;
+  ss << "DERIVED\\PRIMARY\\" << imageFlavor << "\\" << derivedPixelContrast;
+  OFSTRINGSTREAM_GETOFSTRING(ss, imgType);
+
+  status = getIODGeneralImageModule().setImageType(imgType);
+  if (status.bad())
+  {
+    DCMPMAP_ERROR("Error setting Image Type: " << status.text());
+    return DPM_InvalidAttributeValue;
+  }
+
+  status = m_DPMParametricMapSeriesModule.setModality(modality);
+  if (status.bad())
+  {
+
+    DCMPMAP_ERROR("Could not set modality value \"" << modality << "\": " << status.text());
+    return DPM_InvalidAttributeValue;
+  }
+
+  status = m_DPMParametricMapSeriesModule.setSeriesNumber(seriesNumber);
+  if (status.bad())
+  {
+    DCMPMAP_ERROR("Could not set Series Number: " << status.text());
+    return DPM_InvalidAttributeValue;
+  }
+
+  status = m_IODMultiFrameFGModule.setInstanceNumber(instanceNumber);
+  if (status.bad())
+    return status;
+
+  m_DPMParametricMapImageModule.setContentQualification(DPMTypes::cq2Str(contentQualification));
+  m_DPMParametricMapImageModule.setRecognizableVisualFeatures("YES");
+  m_DPMParametricMapImageModule.setBurnedInAnnotation("NO");
+  m_DPMParametricMapImageModule.setLossyImageCompression("00");
+  m_DPMParametricMapImageModule.setPresentationLUTShape("IDENTITY");
+  getSOPCommon().setSOPClassUID(UID_ParametricMapStorage);
+  DcmIODUtil::setContentDateAndTimeNow(m_IODMultiFrameFGModule);
+
+  return EC_Normal;
+}
+
+
+OFCondition DPMParametricMapIOD::read(DcmItem& dataset)
+{
+  return OFvisit<OFCondition>(ReadVisitor(dataset,*this),getImagePixel());
+
+}
+
+
+OFCondition DPMParametricMapIOD::write(DcmItem& dataset)
+{
+  if (!check())
+    return DPM_InvalidAttributeValue;
+  return OFvisit<OFCondition>(WriteVisitor(dataset,*this),getImagePixel());
+}
+
+
+OFvariant<OFCondition,DPMParametricMapIOD*> DPMParametricMapIOD::loadDataset(DcmDataset& dataset)
+{
+  OFString sopClass;
+  DPMParametricMapIOD *map = NULL;
+  if (dataset.findAndGetOFStringArray(DCM_SOPClassUID, sopClass).good())
+  {
+    if (sopClass == UID_ParametricMapStorage)
+    {
+      DcmElement *elem = NULL;
+      if (dataset.findAndGetElement(DCM_PixelData, elem).good())
+      {
+        Uint16 pr = 0;
+        if (dataset.findAndGetUint16(DCM_PixelRepresentation, pr).good())
+        {
+          if (pr == 0)
+          {
+            map = new DPMParametricMapIOD(OFin_place<IODImagePixelModule<Uint16> >);
+          }
+          else
+          {
+            map = new DPMParametricMapIOD(OFin_place<IODImagePixelModule<Sint16> >);
+          }
+        }
+        else
+        {
+          DCMPMAP_WARN("Pixel Data element found but no Pixel Representation set, assuming 16 bit unsigned integer data");
+          map = new DPMParametricMapIOD(OFin_place<IODImagePixelModule<Uint16> >);
+        }
+      }
+      else if (dataset.findAndGetElement(DCM_FloatPixelData, elem).good())
+      {
+        map = new DPMParametricMapIOD(OFin_place<IODFloatingPointImagePixelModule>);
+      }
+      else if (dataset.findAndGetElement(DCM_DoubleFloatPixelData, elem).good())
+      {
+        map = new DPMParametricMapIOD(OFin_place<IODDoubleFloatingPointImagePixelModule>);
+      }
+      else
+      {
+        return DPM_NoPixelData;
+      }
+      if (map == NULL)
+      {
+        return EC_MemoryExhausted;
+      }
+    }
+    else
+    {
+      DCMPMAP_ERROR("Invalid SOP Class: " << sopClass << ", only Parametric Map Storage (1.2.840.10008.5.1.4.1.1.30) supported");
+      return DPM_InvalidSOPClass;
+    }
+  }
+  OFCondition result = OFvisit<OFCondition>(ReadVisitor(dataset, *map), map->getImagePixel());
+  if (result.good())
+    return map;
+  else
+    return result;
+}
+
+
+OFvariant<OFCondition,DPMParametricMapIOD*> DPMParametricMapIOD::loadFile(const OFString& filename)
+{
+  DcmFileFormat dcmff;
+  OFCondition cond = dcmff.loadFile(filename.c_str());
+  OFvariant<OFCondition,DPMParametricMapIOD*> result;
+  if (cond.good())
+  {
+     result = loadDataset( *(dcmff.getDataset()) );
+     return result;
+  }
+  else
+  {
+    return cond;
+  }
+}
+
+
+DPMParametricMapIOD::~DPMParametricMapIOD()
+{
+  DcmIODUtil::freeContainer(m_Frames);
+  // nothing else to do for now
+}
+
+
+OFCondition DPMParametricMapIOD::addForAllFrames(const FGBase& group)
+{
+  return m_FGInterface.addShared(group);
+}
+
+
+OFBool DPMParametricMapIOD::check()
+{
+  OFString val;
+  m_DPMParametricMapImageModule.getRecognizableVisualFeatures(val);
+  if (DPMTypes::rvfValid(DPMTypes::str2Rvf(val)))
+  {
+    m_DPMParametricMapImageModule.getContentQualification(val);
+    if (DPMTypes::cqValid(DPMTypes::str2Cq(val)))
+    {
+      if (!m_Frames.empty())
+      {
+        return OFTrue;
+      }
+      else
+      {
+        DCMPMAP_ERROR("No frame data defined in Parametric Map");
+      }
+    }
+    else
+    {
+      DCMPMAP_ERROR("Invalid value for Recognizable Visual Features: " << val);
+    }
+  }
+  else
+  {
+    DCMPMAP_ERROR("Invalid value for Content Qualification" << val);
+  }
+  return OFFalse;
+}
+
+
+OFCondition DPMParametricMapIOD::getColumns(Uint16& cols)
+{
+  return getImagePixel().getColumns(cols);
+}
+
+
+OFCondition DPMParametricMapIOD::getRows(Uint16& rows)
+{
+  return getImagePixel().getRows(rows);
+}
+
+
+size_t DPMParametricMapIOD::getNumberOfFrames() const
+{
+  return OFconst_cast(DPMParametricMapIOD*,this)->m_FGInterface.getNumberOfFrames();
+}
+
+
+OFCondition DPMParametricMapIOD::setRecognizableVisualFeatures(const DPMTypes::RecognizableVisibleFeatures yesOrNo)
+{
+  return DPMTypes::rvfValid(yesOrNo)
+  ?
+    m_DPMParametricMapImageModule.setRecognizableVisualFeatures(DPMTypes::rvf2Str(yesOrNo))
+  :
+    DPM_InvalidAttributeValue
+  ;
+}
+
+
+OFCondition DPMParametricMapIOD::readGeneric(DcmItem& dataset)
+{
+  OFCondition result = DPMParametricMapBase::read(dataset);
+  if (result.good())
+    result = m_ContentIdentification.read(dataset);
+  return result;
+}
+
+
+OFCondition DPMParametricMapIOD::writeGeneric(DcmItem& dataset)
+{
+  getFrameOfReference().ensureFrameOfReferenceUID();
+  m_IODMultiFrameFGModule.setNumberOfFrames(DcmIODUtil::limitMaxFrames(m_Frames.size(), "Maximum number of frames exceeded, will write 65535"));
+  OFCondition result = m_ContentIdentification.write(dataset);
+  if (result.good())
+  {
+    result = DPMParametricMapBase::write(dataset);
+  }
+  return result;
+}
+
+
+DPMTypes::ContentQualification DPMParametricMapIOD::getContentQualification()
+{
+  OFString val;
+  m_DPMParametricMapImageModule.getContentQualification(val);
+  return DPMTypes::str2Cq(val);
+}
+
+
+DPMTypes::RecognizableVisibleFeatures DPMParametricMapIOD::getRecognizableVisualFeatures()
+{
+  OFString val;
+  DPMParametricMapIOD::m_DPMParametricMapImageModule.getRecognizableVisualFeatures(val);
+  return DPMTypes::str2Rvf(val);
+}
+
+
+DPMParametricMapIOD::FramesType DPMParametricMapIOD::getFrames()
+{
+  return OFvisit<FramesType>(GetFramesVisitor(*this),getImagePixel());
+}
+
+
+OFCondition DPMParametricMapIOD::decompress(DcmDataset& dset)
+{
+  DcmXfer xfer = dset.getOriginalXfer();
+  OFCondition result;
+  // If the original transfer syntax could have been lossy, print warning
+  if (dset.hasRepresentation(EXS_LittleEndianExplicit, NULL))
+  {
+    if ( xfer.isEncapsulated() && (xfer.getXfer() != EXS_RLELossless) && (xfer.getXfer() != EXS_DeflatedLittleEndianExplicit) )
+    {
+      DCMPMAP_WARN("Dataset has been compressed using a (possibly) lossy compression scheme (ignored)");
+    }
+  }
+  // If the original transfer is encapsulated and we do not already have an uncompressed version, decompress or reject the file
+  else if (xfer.isEncapsulated())
+  {
+    // RLE compression is fine (truly lossless). Deflated is handled internally by DCMTK.
+    if (xfer.getXfer() == EXS_RLELossless)
+    {
+      DCMPMAP_DEBUG("DICOM file is RLE-compressed, converting to uncompressed transfer syntax first");
+      result = DcmIODUtil::decompress(dset);
+    }
+    else // We do not accept any transfer syntax that could be lossy compressed
+    {
+      DCMPMAP_ERROR("Transfer syntax " << DcmXfer(xfer).getXferName() << " uses lossy compression, not supported for Parametric Map objects!");
+      result = IOD_EC_CannotDecompress;
+    }
+  }
+  return result;
+}
+
+// Explicit instantiations using all permitted Parametric Map data types
+template class DPMParametricMapIOD::Frames<Uint16>;
+template class DPMParametricMapIOD::Frames<Sint16>;
+template class DPMParametricMapIOD::Frames<Float32>;
+template class DPMParametricMapIOD::Frames<Float64>;
+
+// Helper macro to not to write the same thing multiple times
+#define INSTANTIATE_CREATE(T) template DCMTK_DCMPMAP_EXPORT OFvariant<OFCondition,DPMParametricMapIOD>\
+DPMParametricMapIOD::create<T >(const OFString& modality,\
+                                const OFString& seriesNumber,\
+                                const OFString& instanceNumber,\
+                                const Uint16 rows,\
+                                const Uint16 columns,\
+                                const IODEnhGeneralEquipmentModule::EquipmentInfo& equipmentInfo,\
+                                const ContentIdentificationMacro& contentIdentification,\
+                                const OFString& imageFlavor,\
+                                const OFString& derivedPixelContrast,\
+                                const DPMTypes::ContentQualification& contentQualification)
+
+// Instantiate all four permitted create() methods
+INSTANTIATE_CREATE(IODImagePixelModule<Uint16>);
+INSTANTIATE_CREATE(IODImagePixelModule<Sint16>);
+INSTANTIATE_CREATE(IODFloatingPointImagePixelModule);
+INSTANTIATE_CREATE(IODDoubleFloatingPointImagePixelModule);
diff --git a/dcmpmap/libsrc/dpmtypes.cc b/dcmpmap/libsrc/dpmtypes.cc
new file mode 100644
index 0000000..cce411c
--- /dev/null
+++ b/dcmpmap/libsrc/dpmtypes.cc
@@ -0,0 +1,111 @@
+/*
+ *
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmpmap
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: Class for managing common paramatric map specific types.
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmdata/dcerror.h"
+#include "dcmtk/dcmpmap/dpmtypes.h"
+
+OFLogger DCM_dcmpmapLogger = OFLog::getLogger("dcmtk.dcmpmap");
+
+/*---------------------------------*
+ *  constant definitions
+ *---------------------------------*/
+
+// conditions
+makeOFConditionConst(DPM_InvalidDimensions,      OFM_dcmpmap, 1, OF_error, "Invalid Dimensions");
+makeOFConditionConst(DPM_InvalidAttributeValue,  OFM_dcmpmap, 2, OF_error, "Invalid Attribute Value");
+makeOFConditionConst(DPM_InvalidPixelInfo,       OFM_dcmpmap, 3, OF_error, "Invalid information in pixel data or related attributes");
+makeOFConditionConst(DPM_InvalidPixelData,       OFM_dcmpmap, 4, OF_error, "Invalid pixel data");
+makeOFConditionConst(DPM_NoPixelData,            OFM_dcmpmap, 5, OF_error, "No pixel data found");
+makeOFConditionConst(DPM_InvalidSOPClass,        OFM_dcmpmap, 6, OF_error, "SOP Class not supported");
+
+OFString DPMTypes::rvf2Str(const RecognizableVisibleFeatures rvf)
+{
+  switch (rvf)
+  {
+    case RVF_NO: return "NO";
+    case RVF_YES: return "YES";
+    default: return "";
+  }
+}
+
+DPMTypes::RecognizableVisibleFeatures DPMTypes::str2Rvf(const OFString& rvf)
+{
+  if (rvf == "NO")
+    return RVF_NO;
+  if (rvf == "YES")
+    return RVF_YES;
+  else
+    return RVF_UNKNOWN;
+}
+
+
+OFString DPMTypes::cq2Str(const DPMTypes::ContentQualification cq)
+{
+   switch (cq)
+  {
+    case CQ_PRODUCT:  return "PRODUCT";
+    case CQ_RESEARCH: return "RESEARCH";
+    case CQ_SERVICE:  return "SERVICE";
+    case CQ_UNKNOWN:  return "";
+  }
+  return "";
+}
+
+
+DPMTypes::ContentQualification DPMTypes::str2Cq(const OFString& cq)
+{
+  if (cq == "PRODUCT")
+    return CQ_PRODUCT;
+  if (cq == "RESEARCH")
+    return CQ_RESEARCH;
+  if (cq == "SERVICE")
+    return CQ_SERVICE;
+  else
+    return CQ_UNKNOWN;
+}
+
+
+
+OFBool DPMTypes::cqValid(const DPMTypes::ContentQualification cq)
+{
+   switch (cq)
+  {
+    case CQ_PRODUCT:
+    case CQ_RESEARCH:
+    case CQ_SERVICE:  return OFTrue;
+    case CQ_UNKNOWN:  return OFFalse;
+  }
+  return OFFalse;
+}
+
+
+OFBool DPMTypes::rvfValid(const DPMTypes::RecognizableVisibleFeatures rvf)
+{
+  switch (rvf)
+  {
+    case RVF_NO: return OFTrue;
+    case RVF_YES: return OFTrue;
+    case RVF_UNKNOWN: return OFFalse;
+  }
+  return OFFalse;
+}
+
diff --git a/dcmpmap/tests/Makefile.in b/dcmpmap/tests/Makefile.in
new file mode 100644
index 0000000..ff99234
--- /dev/null
+++ b/dcmpmap/tests/Makefile.in
@@ -0,0 +1,29 @@
+#
+#	Makefile for dcmpmap/tests
+#
+
+ at SET_MAKE@
+
+SHELL = /bin/sh
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+configdir = @top_srcdir@/@configdir@
+
+include $(configdir)/@common_makefile@
+
+
+all:
+
+check:
+
+check-exhaustive:
+
+install:
+
+clean:
+	rm -f $(TRASH)
+
+distclean:
+	rm -f $(DISTTRASH)
+
+dependencies:
diff --git a/dcmpstat/apps/Makefile.dep b/dcmpstat/apps/Makefile.dep
index c76e103..14c170d 100644
--- a/dcmpstat/apps/Makefile.dep
+++ b/dcmpstat/apps/Makefile.dep
@@ -352,11 +352,16 @@ dcmp2pgm.o: dcmp2pgm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmpstat/dvpsdal.h ../include/dcmtk/dcmpstat/dvpssvl.h \
  ../include/dcmtk/dcmpstat/dvpspl.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h \
+ ../../ofstd/include/dcmtk/ofstd/ofoption.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
  ../../dcmnet/include/dcmtk/dcmnet/dndefine.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcspchrs.h \
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/qrdefine.h \
@@ -510,11 +515,16 @@ dcmprscp.o: dcmprscp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmpstat/dvpsdal.h ../include/dcmtk/dcmpstat/dvpssvl.h \
  ../include/dcmtk/dcmpstat/dvpspl.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h \
+ ../../ofstd/include/dcmtk/ofstd/ofoption.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
  ../../dcmnet/include/dcmtk/dcmnet/dndefine.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcspchrs.h \
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/qrdefine.h \
@@ -664,8 +674,13 @@ dcmprscu.o: dcmprscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmpstat/dvpsdal.h ../include/dcmtk/dcmpstat/dvpssvl.h \
  ../include/dcmtk/dcmpstat/dvpspl.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h \
+ ../../ofstd/include/dcmtk/ofstd/ofoption.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcspchrs.h \
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/qrdefine.h \
@@ -1082,11 +1097,16 @@ dcmpsprt.o: dcmpsprt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmpstat/dvpsdal.h ../include/dcmtk/dcmpstat/dvpssvl.h \
  ../include/dcmtk/dcmpstat/dvpspl.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h \
+ ../../ofstd/include/dcmtk/ofstd/ofoption.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
  ../../dcmnet/include/dcmtk/dcmnet/dndefine.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcspchrs.h \
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/qrdefine.h \
diff --git a/dcmpstat/apps/Makefile.in b/dcmpstat/apps/Makefile.in
index f17db0a..eaade7c 100644
--- a/dcmpstat/apps/Makefile.in
+++ b/dcmpstat/apps/Makefile.in
@@ -75,10 +75,10 @@ LIBDIRS = -L$(top_srcdir)/libsrc $(dcmpstatlibdir) $(dcmqrdblibdir) $(dcmnetlibd
 LOCALLIBS = $(dcmpstatlib) $(dcmsignlib) $(dcmsrlib) $(dcmimagelib) $(dcmimglelib) \
 	$(dcmqrdblib) $(dcmnetlib) $(dcmtlslib) $(dcmdatalib) $(ofloglib) $(ofstdlib) \
 	$(TIFFLIBS) $(PNGLIBS) $(XMLLIBS) $(ZLIBLIBS) $(TCPWRAPPERLIBS) $(OPENSSLLIBS) \
-	$(ICONVLIBS)
+	$(CHARCONVLIBS)
 DCMMKLUT_LIBS = $(dcmimglelib) $(dcmdatalib) $(ofloglib) $(ofstdlib) $(XMLLIBS) $(ZLIBLIBS) \
-	$(ICONVLIBS)
-DCMMKCRV_LIBS = $(dcmdatalib) $(ofloglib) $(ofstdlib) $(XMLLIBS) $(ZLIBLIBS) $(ICONVLIBS)
+	$(CHARCONVLIBS)
+DCMMKCRV_LIBS = $(dcmdatalib) $(ofloglib) $(ofstdlib) $(XMLLIBS) $(ZLIBLIBS) $(CHARCONVLIBS)
 
 objs = dcmpsmk.o dcmp2pgm.o dcmmklut.o dcmmkcrv.o dcmpssnd.o dcmpsrcv.o dcmpsprt.o dcmprscu.o \
 	dcmprscp.o dcmpschk.o
diff --git a/dcmpstat/apps/dcmprscu.cc b/dcmpstat/apps/dcmprscu.cc
index 96bd146..bccc9ef 100644
--- a/dcmpstat/apps/dcmprscu.cc
+++ b/dcmpstat/apps/dcmprscu.cc
@@ -564,9 +564,13 @@ static OFCondition updateJobList(
     {
       currentName = dp->d_name;
 #endif
-      if ((prefix == currentName.substr(0, prefixSize)) &&
-          (currentName.size() > postfixSize) &&
-          (postfix == currentName.substr(currentName.size()-postfixSize)))
+      if
+      (
+        currentName.size() > (prefixSize + postfixSize) &&
+        prefix == currentName.substr(0, prefixSize) &&
+        postfix == currentName.substr(currentName.size()-postfixSize) &&
+        currentName.find_first_not_of("1234567890",prefixSize) == (currentName.size() - postfixSize)
+      )
       {
         // name matches pattern
         jobName = spoolFolder;
diff --git a/dcmpstat/apps/dcmpsrcv.cc b/dcmpstat/apps/dcmpsrcv.cc
index acb984c..ad558df 100644
--- a/dcmpstat/apps/dcmpsrcv.cc
+++ b/dcmpstat/apps/dcmpsrcv.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1999-2014, OFFIS e.V.
+ *  Copyright (C) 1999-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -300,7 +300,7 @@ static associationType negotiateAssociation(
         /*  accept any of the storage syntaxes */
         cond = ASC_acceptContextsWithPreferredTransferSyntaxes(
           (*assoc)->params,
-          dcmAllStorageSOPClassUIDs, numberOfAllDcmStorageSOPClassUIDs,
+          dcmAllStorageSOPClassUIDs, numberOfDcmAllStorageSOPClassUIDs,
           (const char**)transferSyntaxes, numTransferSyntaxes);
         errorCond(cond, "Cannot accept presentation contexts:");
       }
diff --git a/dcmpstat/docs/dcmp2pgm.man b/dcmpstat/docs/dcmp2pgm.man
index 21c0371..36f1a77 100644
--- a/dcmpstat/docs/dcmp2pgm.man
+++ b/dcmpstat/docs/dcmp2pgm.man
@@ -91,6 +91,22 @@ bitmap-out   output DICOM image or PGM bitmap
          save presentation state to file
 \endverbatim
 
+\section notes NOTES
+
+\subsection limitations Limitations
+
+Please note that the \b dcmp2pgm tool does not render all aspects that are
+defined by the Grayscale Softcopy Presentation State (GSPS) object but only
+those that are supported by the underlying DCMTK classes.  In particular,
+textual and graphical annotations will not be visible in the output image.
+The reason is that these aspects of a GSPS object are typically rendered by
+DICOMscope, the graphical user interface that is put on top of the related
+DCMTK classes and written in Java.
+
+Also concepts that were introduced after the initial definition of the GSPS
+IOD (see Supplement 33) are ignored.  This includes Supplement 120 with its
+extended features like e.g. Compound Graphics.
+
 \section logging LOGGING
 
 The level of logging output of the various command line tools and underlying
@@ -154,6 +170,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 1998-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1998-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmpstat/libsrc/Makefile.dep b/dcmpstat/libsrc/Makefile.dep
index cd8e037..af477de 100644
--- a/dcmpstat/libsrc/Makefile.dep
+++ b/dcmpstat/libsrc/Makefile.dep
@@ -252,11 +252,16 @@ dviface.o: dviface.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmpstat/dvpsdal.h ../include/dcmtk/dcmpstat/dvpssvl.h \
  ../include/dcmtk/dcmpstat/dvpspl.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h \
+ ../../ofstd/include/dcmtk/ofstd/ofoption.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
  ../../dcmnet/include/dcmtk/dcmnet/dndefine.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcspchrs.h \
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/qrdefine.h \
@@ -329,7 +334,6 @@ dviface.o: dviface.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrimgse.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrwavvl.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrwavch.h \
- ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrrtpl.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrctpl.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrsoprf.h \
@@ -3146,6 +3150,11 @@ dvpsprt.o: dvpsprt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmpstat/dvpsdal.h ../include/dcmtk/dcmpstat/dvpssvl.h \
  ../include/dcmtk/dcmpstat/dvpspl.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h \
+ ../../ofstd/include/dcmtk/ofstd/ofoption.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcspchrs.h \
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/qrdefine.h \
@@ -3728,6 +3737,11 @@ dvpsspl.o: dvpsspl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmpstat/dvpsib.h ../include/dcmtk/dcmpstat/dviface.h \
  ../include/dcmtk/dcmpstat/dvpscf.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h \
+ ../../ofstd/include/dcmtk/ofstd/ofoption.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcspchrs.h \
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h \
  ../../dcmqrdb/include/dcmtk/dcmqrdb/qrdefine.h \
diff --git a/dcmpstat/libsrc/dviface.cc b/dcmpstat/libsrc/dviface.cc
index 5f81d37..c7f44bc 100644
--- a/dcmpstat/libsrc/dviface.cc
+++ b/dcmpstat/libsrc/dviface.cc
@@ -1357,18 +1357,22 @@ OFBool DVInterface::createIndexCache()
                         if (!series->List.isElem(record.SOPInstanceUID))
                         {
                             DVPSInstanceType type = DVPSI_image;
-                            if (record.Modality != NULL)
-                            {
-                                if (strcmp(record.Modality, "PR") == 0)
-                                    type = DVPSI_presentationState;
-                                if (strcmp(record.Modality, "SR") == 0)
-                                    type = DVPSI_structuredReport;
-                                else if (strcmp(record.Modality, "HC") == 0)
-                                    type =DVPSI_hardcopyGrayscale;
-                                else if (strcmp(record.Modality, "STORED_PRINT") == 0)
-                                    type = DVPSI_storedPrint;
-                            }
-                            series->List.addItem(record.SOPInstanceUID, counter, record.hstat, type, record.ImageSize, record.filename);
+                            if (DSRTypes::sopClassUIDToDocumentType(record.SOPClassUID) != DSRTypes::DT_invalid)
+                                type = DVPSI_structuredReport;
+                            else if (strcmp(record.Modality, "PR") == 0)
+                                type = DVPSI_presentationState;
+                            else if (strcmp(record.Modality, "SR") == 0)
+                                type = DVPSI_structuredReport;
+                            else if (strcmp(record.Modality, "HC") == 0)
+                                type =DVPSI_hardcopyGrayscale;
+                            else if (strcmp(record.Modality, "STORED_PRINT") == 0)
+                                type = DVPSI_storedPrint;
+                            series->List.addItem(record.SOPInstanceUID,
+                                                 counter,
+                                                 OFstatic_cast(DVIFhierarchyStatus, record.hstat),
+                                                 type,
+                                                 record.ImageSize,
+                                                 record.filename);
                             if (series->Type == DVPSI_image)
                                 series->Type = type;                // series contains only one type of instances
                         }
@@ -1677,7 +1681,7 @@ OFCondition DVInterface::selectInstance(const char *instanceUID, const char *sop
                             {
                                 if (sopClassUID == NULL)
                                     return EC_Normal;
-                                else if ((idxRec.SOPClassUID != NULL) && (strcmp(sopClassUID, idxRec.SOPClassUID) == 0))
+                                else if (strcmp(sopClassUID, idxRec.SOPClassUID) == 0)
                                     return EC_Normal;
                             }
                         }
@@ -1953,7 +1957,9 @@ OFCondition DVInterface::instanceReviewed(int pos)
     lockDatabase();
     OFBool wasNew = newInstancesReceived();
     if (pHandle == NULL) return EC_IllegalCall;
+    pHandle->DB_unlock();
     OFCondition result = pHandle->instanceReviewed(pos);
+    pHandle->DB_lock(OFFalse);
     if (!wasNew) resetDatabaseReferenceTime();
     releaseDatabase();
     return result;
@@ -1985,11 +1991,8 @@ int DVInterface::findStudyIdx(StudyDescRecord *study,
         int i = 0;
         for (i = 0; i < PSTAT_MAXSTUDYCOUNT; i++)
         {
-            if ((study[i].StudyInstanceUID != NULL) &&
-                (strcmp(uid, study[i].StudyInstanceUID) == 0))
-            {
+            if (strcmp(uid, study[i].StudyInstanceUID) == 0)
                 return i;
-            }
         }
     }
     return -1;
@@ -2136,8 +2139,7 @@ OFCondition DVInterface::deleteInstance(const char *studyUID,
                     int i = 0;
                     for (i = 0; i < PSTAT_MAXSTUDYCOUNT; i++)
                     {
-                        if ((study_desc[i].StudyInstanceUID != NULL) &&
-                            (strcmp(studyUID, study_desc[i].StudyInstanceUID) != 0))
+                        if (strcmp(studyUID, study_desc[i].StudyInstanceUID) != 0)
                         {
                             if (study_desc[i].NumberofRegistratedImages > 0)
                             {
@@ -4080,7 +4082,7 @@ OFBool DVInterface::verifyUserPassword(const char * /*userID*/, const char * /*p
 
     /* attempt to load the private key with the given password*/
     EVP_PKEY *pkey = NULL;
-    BIO *in = BIO_new(BIO_s_file_internal());
+    BIO *in = BIO_new(BIO_s_file());
     if (in)
     {
       if (BIO_read_filename(in, filename.c_str()) > 0)
diff --git a/dcmpstat/libsrc/dvpshlp.cc b/dcmpstat/libsrc/dvpshlp.cc
index 735a613..252ba2f 100644
--- a/dcmpstat/libsrc/dvpshlp.cc
+++ b/dcmpstat/libsrc/dvpshlp.cc
@@ -60,7 +60,7 @@ OFCondition DVPSHelper::loadFileFormat(const char *filename,
                                        DcmFileFormat *&fileformat)
 {
     fileformat = new DcmFileFormat;
-    OFCondition result =  fileformat->loadFile(filename);
+    OFCondition result =  fileformat->loadFile(OFFilename(filename,OFTrue));
 
     if (result.bad())
     {
diff --git a/dcmpstat/libsrc/dvpstat.cc b/dcmpstat/libsrc/dvpstat.cc
index 6006203..37225d6 100644
--- a/dcmpstat/libsrc/dvpstat.cc
+++ b/dcmpstat/libsrc/dvpstat.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2010, OFFIS e.V.
+ *  Copyright (C) 1998-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -1346,9 +1346,9 @@ Uint16 DVPresentationState::findOverlayGroup(Uint16 currentGroup)
     if (allocated[(Uint16)(group - 0x6000) >> 1] == 2) return currentGroup;
   }
   // find a free group
-  for (i=0; i<16; i++) if (allocated[i]==0) return 0x6000+(i<<1);
+  for (i=0; i<16; i++) if (allocated[i]==0) return OFstatic_cast(Uint16, 0x6000+(i<<1));
   // find a group not used in the presentation state
-  for (i=0; i<16; i++) if (allocated[i]<2) return 0x6000+(i<<1);
+  for (i=0; i<16; i++) if (allocated[i]<2) return OFstatic_cast(Uint16, 0x6000+(i<<1));
   // not found.
   return 0;
 }
diff --git a/dcmpstat/tests/Makefile.dep b/dcmpstat/tests/Makefile.dep
index 3bceee7..d3b45e0 100644
--- a/dcmpstat/tests/Makefile.dep
+++ b/dcmpstat/tests/Makefile.dep
@@ -44,13 +44,13 @@ msgserv.o: msgserv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcmtrans.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcmlayer.h \
  ../../dcmnet/include/dcmtk/dcmnet/dndefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
- ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../dcmnet/include/dcmtk/dcmnet/extneg.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
diff --git a/dcmpstat/tests/Makefile.in b/dcmpstat/tests/Makefile.in
index 44bf997..3049c87 100644
--- a/dcmpstat/tests/Makefile.in
+++ b/dcmpstat/tests/Makefile.in
@@ -33,7 +33,7 @@ LIBDIRS = -L$(top_srcdir)/libsrc -L$(dcmnetdir)/libsrc -L$(ofstddir)/libsrc \
 	-L$(dcmimagedir)/libsrc -L$(dcmsrdir)/libsrc
 LOCALLIBS = -ldcmpstat -ldcmdsig -ldcmsr -ldcmimage -ldcmimgle -ldcmqrdb -ldcmnet \
 	-ldcmtls -ldcmdata -loflog -lofstd $(TIFFLIBS) $(PNGLIBS) $(XMLLIBS) $(ZLIBLIBS) \
-	$(TCPWRAPPERLIBS) $(OPENSSLLIBS) $(ICONVLIBS)
+	$(TCPWRAPPERLIBS) $(OPENSSLLIBS) $(CHARCONVLIBS)
 
 objs = msgserv.o
 progs = msgserv
diff --git a/dcmqrdb/apps/Makefile.dep b/dcmqrdb/apps/Makefile.dep
index 708bae4..387deb2 100644
--- a/dcmqrdb/apps/Makefile.dep
+++ b/dcmqrdb/apps/Makefile.dep
@@ -150,7 +150,11 @@ dcmqrscp.o: dcmqrscp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofgrp.h \
  ../../ofstd/include/dcmtk/ofstd/ofpwd.h \
  ../include/dcmtk/dcmqrdb/dcmqrdbi.h ../include/dcmtk/dcmqrdb/dcmqrdba.h \
- ../../ofstd/include/dcmtk/ofstd/offname.h
+ ../../ofstd/include/dcmtk/ofstd/offname.h \
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h
 dcmqrti.o: dcmqrti.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/dcmqrdb/dcmqrtis.h \
diff --git a/dcmqrdb/apps/Makefile.in b/dcmqrdb/apps/Makefile.in
index 460de75..f46abf7 100644
--- a/dcmqrdb/apps/Makefile.in
+++ b/dcmqrdb/apps/Makefile.in
@@ -36,7 +36,7 @@ LOCALINCLUDES = $(dcmnetinc) $(dcmdatainc) $(ofstdinc) $(ofloginc)
 LIBDIRS = -L$(top_srcdir)/libsrc $(dcmnetlibdir) $(dcmdatalibdir) \
 	$(ofstdlibdir) $(ofloglibdir)
 LOCALLIBS = -ldcmqrdb $(dcmnetlib) $(dcmdatalib) $(ofstdlib) $(ofloglib) \
-	$(ZLIBLIBS) $(TCPWRAPPERLIBS) $(ICONVLIBS)
+	$(ZLIBLIBS) $(TCPWRAPPERLIBS) $(CHARCONVLIBS)
 
 objs = dcmqrscp.o dcmqrti.o dcmqridx.o
 progs = dcmqrscp dcmqrti dcmqridx
diff --git a/dcmqrdb/apps/dcmqrscp.cc b/dcmqrdb/apps/dcmqrscp.cc
index f3677e4..37104da 100644
--- a/dcmqrdb/apps/dcmqrscp.cc
+++ b/dcmqrdb/apps/dcmqrscp.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2014, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -77,7 +77,10 @@ END_EXTERN_C
 #endif
 
 #ifdef WITH_ZLIB
-#include <zlib.h>        /* for zlibVersion() */
+#include <zlib.h>                      /* for zlibVersion() */
+#endif
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+#include "dcmtk/ofstd/ofchrenc.h"      /* for OFCharacterEncoding */
 #endif
 
 #ifndef OFFIS_CONSOLE_APPLICATION
@@ -197,6 +200,9 @@ main(int argc, char *argv[])
       cmd.addOption("--prefer-mpeg2-high",      "+xh",       "prefer MPEG2 Main Profile @ High Level TS");
       cmd.addOption("--prefer-mpeg4",           "+xn",       "prefer MPEG4 AVC/H.264 HP / Level 4.1 TS");
       cmd.addOption("--prefer-mpeg4-bd",        "+xl",       "prefer MPEG4 AVC/H.264 BD-compatible TS");
+      cmd.addOption("--prefer-mpeg4-2-2d",      "+x2",       "prefer MPEG4 AVC/H.264 HP / Level 4.2 TS (2D)");
+      cmd.addOption("--prefer-mpeg4-2-3d",      "+x3",       "prefer MPEG4 AVC/H.264 HP / Level 4.2 TS (3D)");
+      cmd.addOption("--prefer-mpeg4-2-st",      "+xo",       "prefer MPEG4 AVC/H.264 Stereo / Level 4.2 TS");
       cmd.addOption("--prefer-rle",             "+xr",       "prefer RLE lossless TS");
 #ifdef WITH_ZLIB
       cmd.addOption("--prefer-deflated",        "+xd",       "prefer deflated expl. VR little endian TS");
@@ -217,10 +223,13 @@ main(int argc, char *argv[])
       cmd.addOption("--propose-j2k-lossy",      "-xw",       "propose JPEG 2000 lossy TS\nand all uncompressed transfer syntaxes");
       cmd.addOption("--propose-jls-lossless",   "-xt",       "propose JPEG-LS lossless TS\nand all uncompressed transfer syntaxes");
       cmd.addOption("--propose-jls-lossy",      "-xu",       "propose JPEG-LS lossy TS\nand all uncompressed transfer syntaxes");
-      cmd.addOption("--propose-mpeg2",          "-xm",       "propose MPEG2 Main Profile @ Main Level TS only");
-      cmd.addOption("--propose-mpeg2-high",     "-xh",       "propose MPEG2 Main Profile @ High Level TS only");
-      cmd.addOption("--propose-mpeg4",          "-xn",       "propose MPEG4 AVC/H.264 HP / Level 4.1 TS only");
-      cmd.addOption("--propose-mpeg4-bd",       "-xl",       "propose MPEG4 AVC/H.264 BD-compatible TS only");
+      cmd.addOption("--propose-mpeg2",          "-xm",       "propose MPEG2 Main Profile @ Main Level TS");
+      cmd.addOption("--propose-mpeg2-high",     "-xh",       "propose MPEG2 Main Profile @ High Level TS");
+      cmd.addOption("--propose-mpeg4",          "-xn",       "propose MPEG4 AVC/H.264 HP / Level 4.1 TS");
+      cmd.addOption("--propose-mpeg4-bd",       "-xl",       "propose MPEG4 AVC/H.264 BD-compatible TS");
+      cmd.addOption("--propose-mpeg4-2-2d",     "-x2",       "propose MPEG4 AVC/H.264 HP / Level 4.2 TS (2D)");
+      cmd.addOption("--propose-mpeg4-2-3d",     "-x3",       "propose MPEG4 AVC/H.264 HP / Level 4.2 TS (3D)");
+      cmd.addOption("--propose-mpeg4-2-st",     "-xo",       "propose MPEG4 AVC/H.264 Stereo / Level 4.2 TS");
       cmd.addOption("--propose-rle",            "-xr",       "propose RLE lossless TS\nand all uncompressed transfer syntaxes");
 #ifdef WITH_ZLIB
       cmd.addOption("--propose-deflated",       "-xd",       "propose deflated expl. VR little endian TS\nand all uncompressed transfer syntaxes");
@@ -291,6 +300,28 @@ main(int argc, char *argv[])
                                                             "0=uncompressed, 1=fastest, 9=best compression");
 #endif
 
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    cmd.addSubGroup("specific character set:");
+      cmd.addOption("--use-request-charset",    "+Cr",    "try to convert all element values that are\n"
+                                                          "affected by Specific Character Set (0008,0005)\n"
+                                                          "to the one specified in the request data set,\n"
+                                                          "fall back to the one specified via\n"
+                                                          "--convert-to-xxx if that is not possible\n"
+                                                          "(default, unless overridden by config file)");
+      cmd.addOption("--override-charset",       "-Cr",    "convert affected element values to the character\n"
+                                                          "set specified via --convert-to-xxx, ignoring\n"
+                                                          "the one specified in the request");
+      cmd.addOption("--convert-to-ascii",       "+A7",    "convert affected element values to 7-bit ASCII\n"
+                                                          "(default, unless overridden by config file)");
+      cmd.addOption("--convert-to-utf8",        "+U8",    "convert affected element values to UTF-8");
+      cmd.addOption("--convert-to-latin1",      "+L1",    "convert affected element values to ISO 8859-1");
+      cmd.addOption("--convert-to-charset",     "+C",  1, "[c]harset: string",
+                                                          "convert affected element values to the character\n"
+                                                          "set specified by the DICOM defined term c");
+      cmd.addOption("--transliterate",          "-Ct",    "try to approximate characters that cannot be\nrepresented through similar looking characters");
+      cmd.addOption("--discard-illegal",        "-Cd",    "discard characters that cannot be represented\nin destination character set");
+#endif
+
     /* evaluate command line */
     prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION);
     if (app.parseCommandLine(cmd, argc, argv))
@@ -302,7 +333,7 @@ main(int argc, char *argv[])
         {
           app.printHeader(OFTrue /*print host identifier*/);
           COUT << OFendl << "External libraries used:";
-#if !defined(WITH_ZLIB) && !defined(WITH_TCPWRAPPER)
+#if !defined(WITH_ZLIB) && !defined(WITH_TCPWRAPPER) && !defined(DCMTK_ENABLE_CHARSET_CONVERSION)
           COUT << " none" << OFendl;
 #else
           COUT << OFendl;
@@ -313,6 +344,9 @@ main(int argc, char *argv[])
 #ifdef WITH_TCPWRAPPER
           COUT << "- LIBWRAP" << OFendl;
 #endif
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+          COUT << "- " << OFCharacterEncoding::getLibraryVersionString() << OFendl;
+#endif
           return 0;
         }
       }
@@ -380,6 +414,9 @@ main(int argc, char *argv[])
       if (cmd.findOption("--prefer-mpeg2-high")) options.networkTransferSyntax_ = EXS_MPEG2MainProfileAtHighLevel;
       if (cmd.findOption("--prefer-mpeg4")) options.networkTransferSyntax_ = EXS_MPEG4HighProfileLevel4_1;
       if (cmd.findOption("--prefer-mpeg4-bd")) options.networkTransferSyntax_ = EXS_MPEG4BDcompatibleHighProfileLevel4_1;
+      if (cmd.findOption("--prefer-mpeg4-2-2d")) options.networkTransferSyntax_ = EXS_MPEG4HighProfileLevel4_2_For2DVideo;
+      if (cmd.findOption("--prefer-mpeg4-2-3d")) options.networkTransferSyntax_ = EXS_MPEG4HighProfileLevel4_2_For3DVideo;
+      if (cmd.findOption("--prefer-mpeg4-2-st")) options.networkTransferSyntax_ = EXS_MPEG4StereoHighProfileLevel4_2;
       if (cmd.findOption("--prefer-rle")) options.networkTransferSyntax_ = EXS_RLELossless;
 #ifdef WITH_ZLIB
       if (cmd.findOption("--prefer-deflated")) options.networkTransferSyntax_ = EXS_DeflatedLittleEndianExplicit;
@@ -405,6 +442,9 @@ main(int argc, char *argv[])
       if (cmd.findOption("--propose-mpeg2-high")) options.networkTransferSyntaxOut_ = EXS_MPEG2MainProfileAtHighLevel;
       if (cmd.findOption("--propose-mpeg4")) options.networkTransferSyntaxOut_ = EXS_MPEG4HighProfileLevel4_1;
       if (cmd.findOption("--propose-mpeg4-bd")) options.networkTransferSyntaxOut_ = EXS_MPEG4BDcompatibleHighProfileLevel4_1;
+      if (cmd.findOption("--propose-mpeg4-2-2d")) options.networkTransferSyntaxOut_ = EXS_MPEG4HighProfileLevel4_2_For2DVideo;
+      if (cmd.findOption("--propose-mpeg4-2-3d")) options.networkTransferSyntaxOut_ = EXS_MPEG4HighProfileLevel4_2_For3DVideo;
+      if (cmd.findOption("--propose-mpeg4-2-st")) options.networkTransferSyntaxOut_ = EXS_MPEG4StereoHighProfileLevel4_2;
       if (cmd.findOption("--propose-rle")) options.networkTransferSyntaxOut_ = EXS_RLELossless;
 #ifdef WITH_ZLIB
       if (cmd.findOption("--propose-deflated")) options.networkTransferSyntaxOut_ = EXS_DeflatedLittleEndianExplicit;
@@ -480,6 +520,9 @@ main(int argc, char *argv[])
         app.checkConflict("--write-xfer-little", "--prefer-mpeg2-high", options.networkTransferSyntax_ == EXS_MPEG2MainProfileAtHighLevel);
         app.checkConflict("--write-xfer-little", "--prefer-mpeg4", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_1);
         app.checkConflict("--write-xfer-little", "--prefer-mpeg4-bd", options.networkTransferSyntax_ == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+        app.checkConflict("--write-xfer-little", "--prefer-mpeg4-2-2d", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+        app.checkConflict("--write-xfer-little", "--prefer-mpeg4-2-3d", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+        app.checkConflict("--write-xfer-little", "--prefer-mpeg4-2-st", options.networkTransferSyntax_ == EXS_MPEG4StereoHighProfileLevel4_2);
         app.checkConflict("--write-xfer-little", "--prefer-rle", options.networkTransferSyntax_ == EXS_RLELossless);
         // we don't have to check a conflict for --prefer-deflated because we can always convert that to uncompressed.
 #endif
@@ -500,6 +543,9 @@ main(int argc, char *argv[])
         app.checkConflict("--write-xfer-big", "--prefer-mpeg2-high", options.networkTransferSyntax_ == EXS_MPEG2MainProfileAtHighLevel);
         app.checkConflict("--write-xfer-big", "--prefer-mpeg4", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_1);
         app.checkConflict("--write-xfer-big", "--prefer-mpeg4-bd", options.networkTransferSyntax_ == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+        app.checkConflict("--write-xfer-big", "--prefer-mpeg4-2-2d", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+        app.checkConflict("--write-xfer-big", "--prefer-mpeg4-2-3d", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+        app.checkConflict("--write-xfer-big", "--prefer-mpeg4-2-st", options.networkTransferSyntax_ == EXS_MPEG4StereoHighProfileLevel4_2);
         app.checkConflict("--write-xfer-big", "--prefer-rle", options.networkTransferSyntax_ == EXS_RLELossless);
         // we don't have to check a conflict for --prefer-deflated because we can always convert that to uncompressed.
 #endif
@@ -520,6 +566,9 @@ main(int argc, char *argv[])
         app.checkConflict("--write-xfer-implicit", "--prefer-mpeg2-high", options.networkTransferSyntax_ == EXS_MPEG2MainProfileAtHighLevel);
         app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_1);
         app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-bd", options.networkTransferSyntax_ == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+        app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-2-2d", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+        app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-2-3d", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+        app.checkConflict("--write-xfer-implicit", "--prefer-mpeg4-2-st", options.networkTransferSyntax_ == EXS_MPEG4StereoHighProfileLevel4_2);
         app.checkConflict("--write-xfer-implicit", "--prefer-rle", options.networkTransferSyntax_ == EXS_RLELossless);
         // we don't have to check a conflict for --prefer-deflated because we can always convert that to uncompressed.
 #endif
@@ -541,6 +590,9 @@ main(int argc, char *argv[])
         app.checkConflict("--write-xfer-deflated", "--prefer-mpeg2-high", options.networkTransferSyntax_ == EXS_MPEG2MainProfileAtHighLevel);
         app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_1);
         app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-bd", options.networkTransferSyntax_ == EXS_MPEG4BDcompatibleHighProfileLevel4_1);
+        app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-2-2d", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_2_For2DVideo);
+        app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-2-3d", options.networkTransferSyntax_ == EXS_MPEG4HighProfileLevel4_2_For3DVideo);
+        app.checkConflict("--write-xfer-deflated", "--prefer-mpeg4-2-st", options.networkTransferSyntax_ == EXS_MPEG4StereoHighProfileLevel4_2);
         app.checkConflict("--write-xfer-deflated", "--prefer-rle", options.networkTransferSyntax_ == EXS_RLELossless);
 #endif
         options.writeTransferSyntax_ = EXS_DeflatedLittleEndianExplicit;
@@ -643,6 +695,35 @@ main(int argc, char *argv[])
     }
     if (overrideMaxPDU > 0) options.maxPDU_ = overrideMaxPDU;
 
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    /* character set conversion options */
+    DcmQueryRetrieveCharacterSetOptions& characterSetOptions = config.getCharacterSetOptions();
+    if (!(characterSetOptions.flags & DcmQueryRetrieveCharacterSetOptions::Configured))
+      characterSetOptions.flags = DcmQueryRetrieveCharacterSetOptions::Configured | DcmQueryRetrieveCharacterSetOptions::Fallback;
+    cmd.beginOptionBlock();
+    if (cmd.findOption("--use-request-charset")) {
+      characterSetOptions.flags &= ~DcmQueryRetrieveCharacterSetOptions::Override;
+    }
+    if (cmd.findOption("--override-charset")) {
+      characterSetOptions.flags |= DcmQueryRetrieveCharacterSetOptions::Override;
+    }
+    cmd.endOptionBlock();
+
+    cmd.beginOptionBlock();
+    if (cmd.findOption("--convert-to-utf8")) characterSetOptions.characterSet = "ISO_IR 192";
+    if (cmd.findOption("--convert-to-latin1")) characterSetOptions.characterSet = "ISO_IR 100";
+    if (cmd.findOption("--convert-to-ascii")) characterSetOptions.characterSet = "";
+    if (cmd.findOption("--convert-to-charset")) app.checkValue(cmd.getValue(characterSetOptions.characterSet));
+    cmd.endOptionBlock();
+
+    if (cmd.findOption("--transliterate")) {
+      characterSetOptions.conversionFlags |= DCMTypes::CF_transliterate;
+    }
+    if (cmd.findOption("--discard-illegal")) {
+      characterSetOptions.conversionFlags |= DCMTypes::CF_discardIllegal;
+    }
+#endif // DCMTK_ENABLE_CHARSET_CONVERSION
+
     /* make sure data dictionary is loaded */
     if (!dcmDataDict.isDictionaryLoaded()) {
       OFLOG_WARN(dcmqrscpLogger, "no data dictionary loaded, check environment variable: "
diff --git a/dcmqrdb/docs/dcmqrcnf.txt b/dcmqrdb/docs/dcmqrcnf.txt
index 0ff2dae..37eb07b 100644
--- a/dcmqrdb/docs/dcmqrcnf.txt
+++ b/dcmqrdb/docs/dcmqrcnf.txt
@@ -30,22 +30,34 @@ value list.
 
 The Global Parameter part knows of the following keywords:
 
-NetworkTCPPort  - integer value
-MaxPDUSize      - integer value
-MaxAssociations - integer value
-UserName        - string value
-GroupName       - string value
+NetworkTCPPort       - integer value
+MaxPDUSize           - integer value
+MaxAssociations      - integer value
+SpecificCharacterSet - comma separated list of string options
+UserName             - string value
+GroupName            - string value
 
 There are default values for all these keywords hardcoded in the configuration 
 module.
 
 Example:
 
-NetworkTCPPort  = 104
-MaxPDUSize      = 8192
-MaxAssociations = 20
-UserName        = (do not change user)
-GroupName       = (do not change group)
+NetworkTCPPort       = 104
+MaxPDUSize           = 8192
+MaxAssociations      = 20
+SpecificCharacterSet = fallback
+UserName             = (do not change user)
+GroupName            = (do not change group)
+
+Available options for specific character sets are:
+
+  "<character set>" - a character set, e.g. "ISO_IR 192" for UTF-8
+  fallback          - retry with another character set if conversion failed
+  override          - override the response character set with the given one
+                      (otherwise the given character set will act as fall back
+                      if enabled)
+  transliterate     - enable transliteration of unsupported characters
+  discard           - discard unsupported characters
 
 NOTE: You must have root privileges to bind port 104 for DICOM association 
 requests on Unix/Linux/Posix platforms as this is a privileged port number 
diff --git a/dcmqrdb/docs/dcmqrscp.man b/dcmqrdb/docs/dcmqrscp.man
index 8150a6b..4857262 100644
--- a/dcmqrdb/docs/dcmqrscp.man
+++ b/dcmqrdb/docs/dcmqrscp.man
@@ -228,6 +228,15 @@ preferred network transfer syntaxes (incoming associations):
   +xl   --prefer-mpeg4-bd
           prefer MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS
 
+  +x2   --prefer-mpeg4-2-2d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos
+
+  +x3   --prefer-mpeg4-2-3d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos
+
+  +xo   --prefer-mpeg4-2-st
+          prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS
+
   +xr   --prefer-rle
           prefer RLE lossless TS
 
@@ -292,6 +301,15 @@ proposed transmission transfer syntaxes (outgoing associations):
   -xl   --propose-mpeg4-bd
           propose MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS only
 
+  -x2   --propose-mpeg4-2-2d
+          propose MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos only
+
+  -x3   --propose-mpeg4-2-3d
+          propose MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos only
+
+  -xo   --propose-mpeg4-2-st
+          propose MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS only
+
   -xr   --propose-rle
           propose RLE lossless TS
           and all uncompressed transfer syntaxes
@@ -429,6 +447,42 @@ deflate compression level (only with --propose-deflated or
 
   +cl   --compression-level  [l]evel: integer (default: 6)
           0=uncompressed, 1=fastest, 9=best compression
+
+specific character set:
+  +Cr   --use-request-charset
+          try to convert all element values that are
+          affected by Specific Character Set (0008,0005)
+          to the one specified in the request data set,
+          fall back to the one specified via
+          --convert-to-xxx if that is not possible
+          (default, unless overridden by config file)
+
+  -Cr   --override-charset
+          convert affected element values to the character
+          set specified via --convert-to-xxx, ignoring
+          the one specified in the request
+
+  +A7   --convert-to-ascii
+          convert affected element values to 7-bit ASCII
+          (default, unless overridden by config file)
+
+  +U8   --convert-to-utf8
+          convert affected element values to UTF-8
+
+  +L1   --convert-to-latin1
+          convert affected element values to ISO 8859-1
+
+  +C    --convert-to-charset  [c]harset: string
+          convert affected element values to the character
+          set specified by the DICOM defined term c
+
+  -Ct   --transliterate
+          try to approximate characters that cannot be
+          represented through similar looking characters
+
+  -Cd   --discard-illegal
+          discard characters that cannot be represented
+          in destination character set
 \endverbatim
 
 \section notes NOTES
@@ -479,12 +533,14 @@ DigitalIntraOralXRayImageStorageForPresentation      1.2.840.10008.5.1.4.1.1.1.3
 DigitalIntraOralXRayImageStorageForProcessing        1.2.840.10008.5.1.4.1.1.1.3.1
 CTImageStorage                                       1.2.840.10008.5.1.4.1.1.2
 EnhancedCTImageStorage                               1.2.840.10008.5.1.4.1.1.2.1
+LegacyConvertedEnhancedCTImageStorage                1.2.840.10008.5.1.4.1.1.2.2
 RETIRED_UltrasoundMultiframeImageStorage             1.2.840.10008.5.1.4.1.1.3
 UltrasoundMultiframeImageStorage                     1.2.840.10008.5.1.4.1.1.3.1
 MRImageStorage                                       1.2.840.10008.5.1.4.1.1.4
 EnhancedMRImageStorage                               1.2.840.10008.5.1.4.1.1.4.1
 MRSpectroscopyStorage                                1.2.840.10008.5.1.4.1.1.4.2
 EnhancedMRColorImageStorage                          1.2.840.10008.5.1.4.1.1.4.3
+LegacyConvertedEnhancedMRImageStorage                1.2.840.10008.5.1.4.1.1.4.4
 RETIRED_NuclearMedicineImageStorage                  1.2.840.10008.5.1.4.1.1.5
 RETIRED_UltrasoundImageStorage                       1.2.840.10008.5.1.4.1.1.6
 UltrasoundImageStorage                               1.2.840.10008.5.1.4.1.1.6.1
@@ -571,6 +627,7 @@ ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
 PositronEmissionTomographyImageStorage               1.2.840.10008.5.1.4.1.1.128
+LegacyConvertedEnhancedPETImageStorage               1.2.840.10008.5.1.4.1.1.128.1
 RETIRED_StandalonePETCurveStorage                    1.2.840.10008.5.1.4.1.1.129
 EnhancedPETImageStorage                              1.2.840.10008.5.1.4.1.1.130
 BasicStructuredDisplayStorage                        1.2.840.10008.5.1.4.1.1.131
@@ -584,9 +641,6 @@ RTTreatmentSummaryRecordStorage                      1.2.840.10008.5.1.4.1.1.481
 RTIonPlanStorage                                     1.2.840.10008.5.1.4.1.1.481.8
 RTIonBeamsTreatmentRecordStorage                     1.2.840.10008.5.1.4.1.1.481.9
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
-GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
-ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
-ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
 \endverbatim
 
 The \b dcmqrscp application will propose presentation contexts for all of the
@@ -617,6 +671,9 @@ MPEG2MainProfileAtMainLevelTransferSyntax            1.2.840.10008.1.2.4.100
 MPEG2MainProfileAtHighLevelTransferSyntax            1.2.840.10008.1.2.4.101
 MPEG4HighProfileLevel4_1TransferSyntax               1.2.840.10008.1.2.4.102
 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
+MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
+MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
+MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 \endverbatim
 
@@ -759,6 +816,7 @@ RadiopharmaceuticalRadiationDoseSRStorage            1.2.840.10008.5.1.4.1.1.88.
 ColonCADSRStorage                                    1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.70
 AcquisitionContextSRStorage                          1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                         1.2.840.10008.5.1.4.1.1.88.72
 ContentAssessmentResultsStorage                      1.2.840.10008.5.1.4.1.1.90.1
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
@@ -767,6 +825,8 @@ LegacyConvertedEnhancedPETImageStorage               1.2.840.10008.5.1.4.1.1.128
 RETIRED_StandalonePETCurveStorage                    1.2.840.10008.5.1.4.1.1.129
 EnhancedPETImageStorage                              1.2.840.10008.5.1.4.1.1.130
 BasicStructuredDisplayStorage                        1.2.840.10008.5.1.4.1.1.131
+CTDefinedProcedureProtocolStorage                    1.2.840.10008.5.1.4.1.1.200.1
+CTPerformedProcedureProtocolStorage                  1.2.840.10008.5.1.4.1.1.200.2
 RTImageStorage                                       1.2.840.10008.5.1.4.1.1.481.1
 RTDoseStorage                                        1.2.840.10008.5.1.4.1.1.481.2
 RTStructureSetStorage                                1.2.840.10008.5.1.4.1.1.481.3
@@ -788,9 +848,6 @@ DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601
 DRAFT_RTBeamsDeliveryInstructionStorage              1.2.840.10008.5.1.4.34.1
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
 RTBrachyApplicationSetupDeliveryInstructionStorage   1.2.840.10008.5.1.4.34.10
-GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
-ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
-ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
 
 PrivateShutdownSOPClass                              1.2.276.0.7230010.3.4.1915765545.18030.917282194.0
 \endverbatim
@@ -827,6 +884,9 @@ MPEG2MainProfileAtMainLevelTransferSyntax            1.2.840.10008.1.2.4.100
 MPEG2MainProfileAtHighLevelTransferSyntax            1.2.840.10008.1.2.4.101
 MPEG4HighProfileLevel4_1TransferSyntax               1.2.840.10008.1.2.4.102
 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
+MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
+MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
+MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 \endverbatim
 
@@ -973,6 +1033,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 1993-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1993-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmqrdb/etc/dcmqrscp.cfg b/dcmqrdb/etc/dcmqrscp.cfg
index 9b9b94c..ad16b0e 100644
--- a/dcmqrdb/etc/dcmqrscp.cfg
+++ b/dcmqrdb/etc/dcmqrscp.cfg
@@ -10,6 +10,16 @@
 NetworkTCPPort  = 104
 MaxPDUSize      = 16384
 MaxAssociations = 16
+
+#
+# Default settings for specific character set behavior:
+# SpecificCharacterSet = fallback
+
+#
+# Uncomment to override response character set with UTF-8 and enable
+# transliteration and discarding of unsupported characters:
+# SpecificCharacterSet = "ISO_IR 192", override, discard, transliterate
+
 #
 # UserName      = <not used>
 # GroupName     = <not used>
diff --git a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcbf.h b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcbf.h
index cf420c9..3a1fa00 100644
--- a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcbf.h
+++ b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcbf.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2011, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,6 +28,7 @@
 
 class DcmQueryRetrieveDatabaseHandle;
 class DcmQueryRetrieveOptions;
+class DcmQueryRetrieveCharacterSetOptions;
 
 /** this class maintains the context information that is passed to the
  *  callback function called by DIMSE_findProvider.
@@ -43,11 +44,13 @@ public:
     DcmQueryRetrieveFindContext(
       DcmQueryRetrieveDatabaseHandle& handle,
       const DcmQueryRetrieveOptions& options,
-      DIC_US priorStat)
+      DIC_US priorStat,
+      const DcmQueryRetrieveCharacterSetOptions& characterSetOptions)
     : dbHandle(handle)
     , options_(options)
     , priorStatus(priorStat)
     , ourAETitle()
+    , characterSetOptions(characterSetOptions)
     {
     }
 
@@ -89,6 +92,9 @@ private:
     /// our current title
     OFString ourAETitle;
 
+    /// Specific Character Set related options
+    const DcmQueryRetrieveCharacterSetOptions& characterSetOptions;
+
 };
 
 #endif
diff --git a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcnf.h b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcnf.h
index fd23d2e..9284d68 100644
--- a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcnf.h
+++ b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcnf.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2011, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -39,6 +39,76 @@ extern DCMTK_DCMQRDB_EXPORT OFLogger DCM_dcmqrdbLogger;
 #define DCMQRDB_ERROR(msg) OFLOG_ERROR(DCM_dcmqrdbLogger, msg)
 #define DCMQRDB_FATAL(msg) OFLOG_FATAL(DCM_dcmqrdbLogger, msg)
 
+/** this class describes configuration settings regarding character set handling
+ */
+struct DCMTK_DCMQRDB_EXPORT DcmQueryRetrieveCharacterSetOptions
+{
+    /** Flags for controlling the application behavior regarding character set
+     *  conversion. Might be used for global and for per peer configuration.
+     */
+    enum Flags
+    {
+        /** Activate options for Specific Character Set.
+         *  If this flag is not set, all other flags and the given string for
+         *  Specific Character Set will be ignored, e.g. using the global
+         *  settings instead of peer specific ones.
+         */
+        Configured = 0x01,
+
+        /** Always respond using the given character set, ignoring the
+         *  character set of the request.
+         *  If this flag is not set, the response will be created to the
+         *  character set of the request (if possible).
+         */
+        Override   = 0x02,
+
+        /** Fall back to another character set.
+         *  If this flag is set, the application will try to recover from a
+         *  conversion failure:
+         *    - If 'Override' is set, the application will try to convert
+         *      the response to the character set of the request if conversion
+         *      to the given character set failed.
+         *    - If 'Override' is not set, the application will try to convert
+         *      the response to the given character set if conversion to the
+         *      character set of the response failed.
+         *  If this flag is not set, the response will be left as-is, i.e.
+         *  like it is stored in the index file, if conversion to another
+         *  character set failed.
+         *  @note The fall back conversion might also fail, in which case
+         *    the response will still be left as-is, even if a fall back
+         *    option was given.
+         */
+        Fallback   = 0x04
+    };
+
+    /** Constructor, will construct an object that is marked as
+     *  "not configured".
+     */
+    DcmQueryRetrieveCharacterSetOptions();
+
+    /** extract arguments from the config file.
+     *  @param mnemonic the name of the current option
+     *  @param valueptr the argument(s)
+     *  @return OFTrue if the given name value pair referred to a character
+     *    set option and was 'consumed', OFFalse if it should be handled
+     *    elsewhere.
+     */
+    OFBool parseOptions(const char* mnemonic, char* valueptr);
+
+    /// the given character set
+    OFString characterSet;
+
+    /** determine semantics of the character set value
+     *  @see DcmQueryRetrieveCharacterSet::Flags
+     */
+    unsigned flags;
+
+    /** special character set conversion flags.
+     *  @see OFCharacterEncoding::ConversionFlags
+     */
+    unsigned conversionFlags;
+};
+
 /** this class describes configuration settings for the quota of a storage area
  */
 struct DCMTK_DCMQRDB_EXPORT DcmQueryRetrieveConfigQuota
@@ -314,8 +384,24 @@ public:
    */
   const char *getGroupName() const;
 
+  /*
+   *  get Character Set Options
+   *  Input :
+   *  Return : Character Set Options
+   */
+  const DcmQueryRetrieveCharacterSetOptions& getCharacterSetOptions() const;
+
+  /*
+   *  get Character Set Options
+   *  Input :
+   *  Return : Character Set Options
+   */
+  DcmQueryRetrieveCharacterSetOptions& getCharacterSetOptions();
+
 private:
 
+  friend class DcmQueryRetrieveCharacterSetOptions;
+
   const char* vendorForPeerAETitle(const char *peerAETitle) const;
 
   int countCtnTitles() const;
@@ -434,6 +520,7 @@ private:
   int networkTCPPort_;
   Uint32 maxPDUSize_;
   int maxAssociations_;
+  DcmQueryRetrieveCharacterSetOptions characterSetOptions_;
   DcmQueryRetrieveConfigConfiguration CNF_Config;   /* configuration file contents */
   DcmQueryRetrieveConfigHostTable CNF_HETable;      /* HostEntries Table */
   DcmQueryRetrieveConfigHostTable CNF_VendorTable;  /* Vendor Table */
diff --git a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h
index 7b9e502..b84892c 100644
--- a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h
+++ b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2011, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,6 +33,7 @@
 
 class DcmDataset;
 class DcmQueryRetrieveDatabaseStatus;
+struct DcmQueryRetrieveCharacterSetOptions;
 
 #ifndef MAXPATHLEN
 #define MAXPATHLEN 1024
@@ -114,11 +115,13 @@ public:
    *    PENDING if more FIND responses will be generated or SUCCESS if no more
    *    FIND responses will be generated (SUCCESS indicates the completion of
    *    a operation), or another status code upon failure.
+   *  @param characterSetOptions the character set options for response conversion etc.
    *  @return EC_Normal upon normal completion, or some other OFCondition code upon failure.
    */
   virtual OFCondition nextFindResponse(
       DcmDataset **findResponseIdentifiers,
-      DcmQueryRetrieveDatabaseStatus *status) = 0;
+      DcmQueryRetrieveDatabaseStatus *status,
+      const DcmQueryRetrieveCharacterSetOptions& characterSetOptions) = 0;
 
   /** cancel the ongoing FIND request, stop and reset every running operation
    *  associated with this request, delete existing temporary files.
diff --git a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h
index dca3a8b..ec0433c 100644
--- a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h
+++ b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2011, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -36,7 +36,16 @@ struct IdxRecord;
 struct DB_ElementList;
 class DcmQueryRetrieveConfig;
 
-#define DBINDEXFILE "index.dat"
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THE INDEX FILE STRUCTS IS MODIFIED */
+
+#define DBINDEXFILE  "index.dat"
+#define DBMAGIC      "QRDB"
+#define DBVERSION    4
+#define DBHEADERSIZE 6
+
+#if DBVERSION > 0xFF
+#error maximum database version reached, you have to invent a new mechanism
+#endif
 
 #ifndef _WIN32
 /* we lock image files on all platforms except Win32 where it does not work
@@ -157,40 +166,21 @@ public:
       const char *imageFileName,
       DcmQueryRetrieveDatabaseStatus  *status,
       OFBool     isNew = OFTrue );
-  
-  /** initiate FIND operation using the given SOP class UID (which identifies
-   *  the query model) and DICOM dataset containing find request identifiers. 
-   *  @param SOPClassUID SOP class UID of query service, identifies Q/R model
-   *  @param findRequestIdentifiers dataset containing request identifiers (i.e., the query)
-   *    The caller retains responsibility for destroying the 
-   *    findRequestIdentifiers when no longer needed.
-   *  @param status pointer to DB status object in which a DIMSE status code 
-   *    suitable for use with the C-FIND-RSP message is set. Status will be
-   *    PENDING if any FIND responses will be generated or SUCCESS if no FIND responses will
-   *    be generated (SUCCESS indicates the completion of a operation), or
-   *    another status code upon failure. 
-   *  @return EC_Normal upon normal completion, or some other OFCondition code upon failure.
+
+  /** @copydoc DcmQueryRetrieveDatabaseHandle::startFindRequest()
    */
   OFCondition startFindRequest(
       const char *SOPClassUID,
       DcmDataset *findRequestIdentifiers,
       DcmQueryRetrieveDatabaseStatus *status);     
-                
-  /** return the next available FIND response as a new DICOM dataset.
-   *  @param findResponseIdentifiers DICOM dataset returned in this parameter.
-   *    The caller is responsible for destroying the findResponseIdentifiers
-   *    when no longer needed.
-   *  @param status pointer to DB status object in which a DIMSE status code 
-   *    suitable for use with the C-FIND-RSP message is set. Status will be
-   *    PENDING if more FIND responses will be generated or SUCCESS if no more 
-   *    FIND responses will be generated (SUCCESS indicates the completion of 
-   *    a operation), or another status code upon failure. 
-   *  @return EC_Normal upon normal completion, or some other OFCondition code upon failure.
+
+  /** @copydoc DcmQueryRetrieveDatabaseHandle::nextFindResponse()
    */
   OFCondition nextFindResponse(
       DcmDataset **findResponseIdentifiers,
-      DcmQueryRetrieveDatabaseStatus *status);
-   
+      DcmQueryRetrieveDatabaseStatus *status,
+      const DcmQueryRetrieveCharacterSetOptions& characterSetOptions);
+
   /** cancel the ongoing FIND request, stop and reset every running operation
    *  associated with this request, delete existing temporary files.
    *  @param status pointer to DB status object in which a DIMSE status code 
@@ -346,17 +336,35 @@ public:
       
 private:
 
+  /** a private helper class that performs character set conversions on the fly
+   *  (if necessary) before matching.
+   */
+  class CharsetConsideringMatcher;
+
+  /** Determine if a character set is not compatible to UTF-8, i.e.\ if it is
+   *  not UTF-8 or ASCII.
+   *  @param characterSet the character set to inspect.
+   *  @return OFTrue if the character set is neither ASCII nor UTF-8, OFFalse
+   *    otherwise.
+   */
+  static OFBool isConversionToUTF8Necessary(const OFString& characterSet);
+
+  /** Determine if data in the source character set must be converted to
+   *  be compatible to the given destination character set.
+   *  @param sourceCharacterSet the character set the data is encoded in.
+   *  @param destinationCharacterSet the character set that is requested,
+   *    e.g. the character set that the SCU understands.
+   *  @return OFTrue if the source character set is not equal to and not a
+   *    subset of the destination character set, OFFalse otherwise.
+   */
+  static OFBool isConversionNecessary(const OFString& sourceCharacterSet,
+                                      const OFString& destinationCharacterSet);
+
   OFCondition removeDuplicateImage(
       const char *SOPInstanceUID, const char *StudyInstanceUID,
       StudyDescRecord *pStudyDesc, const char *newImageFileName);
   int deleteOldestStudy(StudyDescRecord *pStudyDesc);
   OFCondition deleteOldestImages(StudyDescRecord *pStudyDesc, int StudyNum, char *StudyUID, long RequiredSize);
-  int matchDate (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt);
-  int matchTime (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt);
-  int matchUID (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt);
-  int matchStrings (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt);
-  int matchOther (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt);
-  int dbmatch (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt);
   void makeResponseList(DB_Private_Handle *phandle, IdxRecord *idxRec);
   int matchStudyUIDInStudyDesc (StudyDescRecord *pStudyDesc, char *StudyUID, int maxStudiesAllowed);
   OFCondition checkupinStudyDesc(StudyDescRecord *pStudyDesc, char *StudyUID, long imageSize);
@@ -366,7 +374,8 @@ private:
       IdxRecord         *idxRec,
       DB_LEVEL          level,
       DB_LEVEL          infLevel,
-      int               *match);
+      int               *match,
+      CharsetConsideringMatcher& dbmatch);
 
   OFCondition testFindRequestList (
       DB_ElementList  *findRequestList,
diff --git a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h
index 956c1d9..e9a019a 100644
--- a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h
+++ b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2011, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -24,10 +24,12 @@
 
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
+#include "dcmtk/ofstd/ofoption.h"
 #include "dcmtk/dcmnet/dicom.h"
 #include "dcmtk/dcmdata/dcdatset.h"
 #include "dcmtk/dcmdata/dcuid.h"
 #include "dcmtk/dcmdata/dcdeftag.h"
+#include "dcmtk/dcmdata/dcspchrs.h"
 #include "dcmtk/dcmqrdb/dcmqrdbi.h"
 
 BEGIN_EXTERN_C
@@ -62,23 +64,6 @@ enum DB_QUERY_CLASS
     PATIENT_STUDY
 };
 
-/** types of database keys
- */
-enum DB_KEY_CLASS
-{
-    /// a date entry
-    DATE_CLASS,
-    /// a time entry
-    TIME_CLASS,
-    /// a UID entry
-    UID_CLASS,
-    /// a string entry
-    STRING_CLASS,
-    /// an entry not belonging to any other class
-    OTHER_CLASS
-};
-
-
 /** Level Strings
  */
 
@@ -102,13 +87,13 @@ enum DB_KEY_CLASS
 #define FL_MAX_LENGTH   32      /* FLoating point single */
 #define FD_MAX_LENGTH   64      /* Floating point Double */
 #define IS_MAX_LENGTH   96      /* Integer String        */
-#define LO_MAX_LENGTH   64      /* Long String           */
-#define LT_MAX_LENGTH   10240   /* Long Text             */
-#define PN_MAX_LENGTH   64      /* Person Name           */
-#define SH_MAX_LENGTH   16      /* Short String          */
+#define LO_MAX_LENGTH   256     /* Long String           */
+#define LT_MAX_LENGTH   40960   /* Long Text             */
+#define PN_MAX_LENGTH   256     /* Person Name           */
+#define SH_MAX_LENGTH   64      /* Short String          */
 #define SL_MAX_LENGTH   32      /* Signed Long           */
 #define SS_MAX_LENGTH   16      /* Signed Short          */
-#define ST_MAX_LENGTH   1024    /* Short Text            */
+#define ST_MAX_LENGTH   4096    /* Short Text            */
 #define TM_MAX_LENGTH   128     /* Time                  */
 #define UI_MAX_LENGTH   64      /* Unique Identifier     */
 #define UL_MAX_LENGTH   32      /* Unsigned Long         */
@@ -123,6 +108,34 @@ enum DB_KEY_CLASS
 #define SIZEOF_IDXRECORD        (sizeof (IdxRecord))
 #define SIZEOF_STUDYDESC        (sizeof (StudyDescRecord) * MAX_MAX_STUDIES)
 
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THESE STRUCTS IS MODIFIED */
+
+struct DCMTK_DCMQRDB_EXPORT DB_SerializedTagKey
+{
+    inline DB_SerializedTagKey() {}
+    inline DB_SerializedTagKey(const DcmTagKey& rhs) { *this = rhs; }
+    inline DB_SerializedTagKey& operator=(const DcmTagKey& tk) { key[0] = tk.getGroup(); key[1] = tk.getElement(); return *this; }
+    inline operator DcmTagKey() const { return DcmTagKey( key[0], key[1] ); }
+    inline bool operator==(const DB_SerializedTagKey& rhs) const { return key[0] == rhs.key[0] && key[1] == rhs.key[1]; }
+    Uint16 key[2];
+};
+
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THESE STRUCTS IS MODIFIED */
+
+struct DCMTK_DCMQRDB_EXPORT DB_SerializedCharPtr
+{
+    inline DB_SerializedCharPtr(char* p) { ptr.p = p; }
+    inline DB_SerializedCharPtr& operator=(char* p) { ptr.p = p; return *this; }
+    inline operator char*() const { return ptr.p; }
+    union
+    {
+        char* p;
+        Uint64 placeholder;
+    } ptr ;
+};
+
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THESE STRUCTS IS MODIFIED */
+
 /** this class provides a primitive interface for handling a flat DICOM element,
  *  similar to DcmElement, but only for use within the database module
  */
@@ -133,13 +146,13 @@ public:
     DB_SmallDcmElmt();
 
     /// pointer to the value field
-    char* PValueField ;
+    DB_SerializedCharPtr PValueField ;
 
     /// value length in bytes
     Uint32 ValueLength ;
 
     /// attribute tag
-    DcmTagKey XTag ;
+    DB_SerializedTagKey XTag ;
 
 private:
     /// private undefined copy constructor
@@ -148,13 +161,15 @@ private:
     DB_SmallDcmElmt& operator=(const DB_SmallDcmElmt& copy);
 };
 
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THESE STRUCTS IS MODIFIED */
+
 /** this class provides a primitive interface for handling a list of flat DICOM elements,
  *  similar to DcmItem, but only for use within the database module
  */
 struct DCMTK_DCMQRDB_EXPORT DB_ElementList
 {
     /// default constructor
-    DB_ElementList(): elem(), next(NULL) {}
+    DB_ElementList(): elem(), next(NULL), utf8Value() {}
 
     /// current list element
     DB_SmallDcmElmt elem ;
@@ -162,6 +177,9 @@ struct DCMTK_DCMQRDB_EXPORT DB_ElementList
     /// pointer to next in list
     struct DB_ElementList *next ;
 
+    /// UTF-8 cache
+    OFoptional<OFString> utf8Value ;
+
 private:
     /// private undefined copy constructor
     DB_ElementList(const DB_ElementList& copy);
@@ -169,6 +187,8 @@ private:
     DB_ElementList& operator=(const DB_ElementList& copy);
 };
 
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THESE STRUCTS IS MODIFIED */
+
 struct DCMTK_DCMQRDB_EXPORT DB_UidList
 {
     char *patient ;
@@ -178,27 +198,34 @@ struct DCMTK_DCMQRDB_EXPORT DB_UidList
     struct DB_UidList *next ;
 };
 
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THESE STRUCTS IS MODIFIED */
+
 struct DCMTK_DCMQRDB_EXPORT DB_CounterList
 {
     int idxCounter ;
     struct DB_CounterList *next ;
 };
 
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THESE STRUCTS IS MODIFIED */
+
 struct DCMTK_DCMQRDB_EXPORT DB_FindAttr
 {
     DcmTagKey tag ;
     DB_LEVEL level ;
     DB_KEY_TYPE keyAttr ;
-    DB_KEY_CLASS keyClass ;
 
     /* to passify some C++ compilers */
-    DB_FindAttr(const DcmTagKey& t, DB_LEVEL l, DB_KEY_TYPE kt, DB_KEY_CLASS kc)
-        : tag(t), level(l), keyAttr(kt), keyClass(kc) { }
+    DB_FindAttr(const DcmTagKey& t, DB_LEVEL l, DB_KEY_TYPE kt)
+        : tag(t), level(l), keyAttr(kt) { }
 };
 
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THESE STRUCTS IS MODIFIED */
+
 struct DCMTK_DCMQRDB_EXPORT DB_Private_Handle
 {
     int pidx ;
+    OFString findRequestCharacterSet ;
+    DcmSpecificCharacterSet findRequestConverter ;
     DB_ElementList *findRequestList ;
     DB_ElementList *findResponseList ;
     DB_LEVEL queryLevel ;
@@ -214,6 +241,8 @@ struct DCMTK_DCMQRDB_EXPORT DB_Private_Handle
 
     DB_Private_Handle()
     : pidx(0)
+    , findRequestCharacterSet()
+    , findRequestConverter()
     , findRequestList(NULL)
     , findResponseList(NULL)
     , queryLevel(STUDY_LEVEL)
@@ -230,6 +259,8 @@ struct DCMTK_DCMQRDB_EXPORT DB_Private_Handle
     }
 };
 
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THESE STRUCTS IS MODIFIED */
+
 /** this struct defines the structure of each "Study Record" in the index.dat
  *  file maintained by this module. A Study Record is a direct binary copy
  *  of an instance of this struct.
@@ -240,20 +271,22 @@ struct DCMTK_DCMQRDB_EXPORT StudyDescRecord
     char StudyInstanceUID [UI_MAX_LENGTH+1] ;
 
     /// combined size (in bytes) of all images of this study in the database
-    long StudySize ;
+    Uint32 StudySize ;
 
     /// timestamp for last update of this study. Format: output of time(2) converted to double.
     double LastRecordedDate ;
 
     /// number of images of this study in the database
-    int NumberofRegistratedImages ;
+    Uint32 NumberofRegistratedImages ;
 };
 
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THESE STRUCTS IS MODIFIED */
+
 struct DCMTK_DCMQRDB_EXPORT ImagesofStudyArray
 {
-    int idxCounter ;
+    Uint32 idxCounter ;
     double RecordedDate ;
-    long ImageSize ;
+    Uint32 ImageSize ;
 };
 
 
@@ -308,9 +341,12 @@ struct DCMTK_DCMQRDB_EXPORT ImagesofStudyArray
 #define RECORDIDX_OperatorsName                  38
 #define RECORDIDX_PerformingPhysicianName        39
 #define RECORDIDX_PresentationLabel              40
+#define RECORDIDX_IssuerOfPatientID              41
+#define RECORDIDX_SpecificCharacterSet           42
 
-#define NBPARAMETERS                             41
+#define NBPARAMETERS                             43
 
+/* ENSURE THAT DBVERSION IS INCREMENTED WHENEVER ONE OF THESE STRUCTS IS MODIFIED */
 
 /** this class manages an instance entry of the index file.
  *  Each instance/image record within the index.dat file is
@@ -324,7 +360,7 @@ struct DCMTK_DCMQRDB_EXPORT IdxRecord
     char    filename                        [DBC_MAXSTRING+1] ;
     char    SOPClassUID                     [UI_MAX_LENGTH+1] ;
     double  RecordedDate ;
-    int     ImageSize ;
+    Uint32  ImageSize ;
 
     DB_SmallDcmElmt param                   [NBPARAMETERS] ;
 
@@ -374,12 +410,17 @@ struct DCMTK_DCMQRDB_EXPORT IdxRecord
     char    OperatorsName                   [PN_MAX_LENGTH+1] ;
     char    PerformingPhysicianName         [PN_MAX_LENGTH+1] ;
     char    PresentationLabel               [CS_LABEL_MAX_LENGTH+1] ;
+    char    IssuerOfPatientID               [LO_MAX_LENGTH+1] ;
 
-    DVIFhierarchyStatus hstat;
+    char    hstat;
 
     // Not related to any particular DICOM attribute !
     char    InstanceDescription             [DESCRIPTION_MAX_LENGTH+1] ;
 
+    // Specific Character Set, support for VM ~ 8 (depending on the
+    // actual length of the used DTs)
+    char    SpecificCharacterSet            [CS_MAX_LENGTH*8+1] ;
+
 private:
     /* undefined */ IdxRecord(const IdxRecord& copy);
     /* undefined */ IdxRecord& operator=(const IdxRecord& copy);
diff --git a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrtis.h b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrtis.h
index 893ee3b..7583cd1 100644
--- a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrtis.h
+++ b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrtis.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2011, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -238,6 +238,7 @@ private:
     OFBool TI_dbReadable(const char *dbTitle);
     time_t TI_dbModifyTime(const char *dbTitle);
     OFCondition addPresentationContexts(T_ASC_Parameters *params);
+    void selectDestinationCharacterSet(OFString& destinationCharacterSet);
 
     OFBool findDBPeerTitles(
       const char *configFileName,
diff --git a/dcmqrdb/libsrc/Makefile.dep b/dcmqrdb/libsrc/Makefile.dep
index 77faaec..e10df3e 100644
--- a/dcmqrdb/libsrc/Makefile.dep
+++ b/dcmqrdb/libsrc/Makefile.dep
@@ -355,19 +355,25 @@ dcmqrcnf.o: dcmqrcnf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmqrdb/qrdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h
 dcmqrdbi.o: dcmqrdbi.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../include/dcmtk/dcmqrdb/dcmqrdbs.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/dcmqrdb/qrdefine.h ../include/dcmtk/dcmqrdb/dcmqrdbi.h \
- ../include/dcmtk/dcmqrdb/dcmqrdba.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmqrdb/dcmqrdbs.h ../include/dcmtk/dcmqrdb/qrdefine.h \
+ ../include/dcmtk/dcmqrdb/dcmqrdbi.h ../include/dcmtk/dcmqrdb/dcmqrdba.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -402,12 +408,7 @@ dcmqrdbi.o: dcmqrdbi.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/oflimits.h \
- ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
@@ -429,11 +430,20 @@ dcmqrdbi.o: dcmqrdbi.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offname.h \
  ../include/dcmtk/dcmqrdb/dcmqrcnf.h ../include/dcmtk/dcmqrdb/dcmqropt.h \
  ../include/dcmtk/dcmqrdb/dcmqridx.h \
+ ../../ofstd/include/dcmtk/ofstd/ofoption.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcspchrs.h \
+ ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../dcmnet/include/dcmtk/dcmnet/diutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcelem.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmatch.h
 dcmqrdbs.o: dcmqrdbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmqrdb/dcmqrdbs.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
diff --git a/dcmqrdb/libsrc/dcmqrcbf.cc b/dcmqrdb/libsrc/dcmqrcbf.cc
index 09a81c1..091e3d8 100644
--- a/dcmqrdb/libsrc/dcmqrcbf.cc
+++ b/dcmqrdb/libsrc/dcmqrcbf.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2010, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -60,7 +60,7 @@ void DcmQueryRetrieveFindContext::callbackHandler(
     }
 
     if (DICOM_PENDING_STATUS(dbStatus.status())) {
-        dbcond = dbHandle.nextFindResponse(responseIdentifiers, &dbStatus);
+        dbcond = dbHandle.nextFindResponse(responseIdentifiers, &dbStatus, characterSetOptions);
         if (dbcond.bad()) {
              DCMQRDB_ERROR("findSCP: Database: nextFindResponse Failed ("
                      << DU_cfindStatusString(dbStatus.status()) << "):");
diff --git a/dcmqrdb/libsrc/dcmqrcbm.cc b/dcmqrdb/libsrc/dcmqrcbm.cc
index 3d0a6cd..773e4be 100644
--- a/dcmqrdb/libsrc/dcmqrcbm.cc
+++ b/dcmqrdb/libsrc/dcmqrcbm.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2011, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -630,6 +630,21 @@ OFCondition DcmQueryRetrieveMoveContext::addAllStoragePresentationContexts(T_ASC
         transferSyntaxes[0] = UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax;
         numTransferSyntaxes = 1;
         break;
+      case EXS_MPEG4HighProfileLevel4_2_For2DVideo:
+        /* we only propose MPEG4 HP/L4.2 for 2D Videos since we don't want to decompress */
+        transferSyntaxes[0] = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax;
+        numTransferSyntaxes = 1;
+        break;
+      case EXS_MPEG4HighProfileLevel4_2_For3DVideo:
+        /* we only propose MPEG4 HP/L4.2 for 3D Videos since we don't want to decompress */
+        transferSyntaxes[0] = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax;
+        numTransferSyntaxes = 1;
+        break;
+      case EXS_MPEG4StereoHighProfileLevel4_2:
+        /* we only propose MPEG4 Stereo HP/L4.2 since we don't want to decompress */
+        transferSyntaxes[0] = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax;
+        numTransferSyntaxes = 1;
+        break;
       case EXS_RLELossless:
         /* we prefer RLE Lossless */
         transferSyntaxes[0] = UID_RLELosslessTransferSyntax;
diff --git a/dcmqrdb/libsrc/dcmqrcnf.cc b/dcmqrdb/libsrc/dcmqrcnf.cc
index c30424b..2a5a2b8 100644
--- a/dcmqrdb/libsrc/dcmqrcnf.cc
+++ b/dcmqrdb/libsrc/dcmqrcnf.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2011, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -31,6 +31,7 @@
 #include "dcmtk/ofstd/ofstdinc.h"
 #include "dcmtk/ofstd/ofcmdln.h"
 #include "dcmtk/ofstd/ofmap.h"
+#include "dcmtk/ofstd/ofchrenc.h"
 
 OFLogger DCM_dcmqrdbLogger = OFLog::getLogger("dcmtk.dcmqrdb");
 
@@ -62,6 +63,48 @@ static void freeConfigHostEntry(OFMap<const void *, OFBool> &pointersToFree, str
     free(entry->Peers);
 }
 
+DcmQueryRetrieveCharacterSetOptions::DcmQueryRetrieveCharacterSetOptions()
+: characterSet()
+, flags(0)
+, conversionFlags(0)
+{
+
+}
+
+OFBool DcmQueryRetrieveCharacterSetOptions::parseOptions(const char* mnemonic, char* valueptr)
+{
+    struct RAIIFree
+    {
+        RAIIFree(char* ptr) : ptr(ptr) {}
+        ~RAIIFree() {free(ptr);}
+        char* ptr;
+    };
+    if (strcmp(mnemonic,"SpecificCharacterSet") != 0)
+        return OFFalse;
+    characterSet.clear();
+    flags = Configured;
+    conversionFlags = 0;
+    for (char* c = DcmQueryRetrieveConfig::parsevalues(&valueptr); c;
+         c = DcmQueryRetrieveConfig::parsevalues(&valueptr)) {
+        // ensure free is called when this scope is left
+        RAIIFree cleanup(c);
+        if (!strcmp(c, "override")) {
+            flags |= Override;
+        } else if(!strcmp(c, "fallback")) {
+            flags |= Fallback;
+        } else if(!strcmp(c, "abort")) {
+            conversionFlags |= OFCharacterEncoding::AbortTranscodingOnIllegalSequence;
+        } else if(!strcmp(c, "discard")) {
+            conversionFlags |= OFCharacterEncoding::DiscardIllegalSequences;
+        } else if(!strcmp(c, "transliterate")) {
+            conversionFlags |= OFCharacterEncoding::TransliterateIllegalSequences;
+        } else {
+            characterSet = c;
+        }
+    }
+    return OFTrue;
+}
+
 DcmQueryRetrieveConfig::~DcmQueryRetrieveConfig()
 {
     // There can be more than one DcmQueryRetrieveConfigPeer which points to the
@@ -285,15 +328,14 @@ int DcmQueryRetrieveConfig::readConfigLines(FILE *cnffp)
    int  lineno = 0,       /* line counter */
         error = 0;        /* error flag */
    char rcline[512],      /* line in configuration file */
-        mnemonic[64],     /* mnemonic in line */
-        value[256],       /* parameter value */
+        mnemonic[512],    /* mnemonic in line */
+        value[512],       /* parameter value */
         *valueptr;        /* pointer to value list */
    char *c;
 
-   while (!feof(cnffp)) {
-      fgets(rcline, sizeof(rcline), cnffp); /* read line in configuration file */
+   // read all lines from configuration file
+   while (fgets(rcline, sizeof(rcline), cnffp)) {
       lineno++;
-      if (feof(cnffp)) continue;
       if (rcline[0] == '#' || rcline[0] == 10 || rcline[0] == 13)
          continue;        /* comment or blank line */
 
@@ -346,6 +388,10 @@ int DcmQueryRetrieveConfig::readConfigLines(FILE *cnffp)
       {
         // ignore this entry which was needed for ctndisp
       }
+      else if (characterSetOptions_.parseOptions(mnemonic, valueptr))
+      {
+        // already handled by parseOptions(), nothing else to do
+      }
       else if (!strcmp("HostTable", mnemonic)) {
          sscanf(valueptr, "%s", value);
          if (!strcmp("BEGIN", value)) {
@@ -357,7 +403,7 @@ int DcmQueryRetrieveConfig::readConfigLines(FILE *cnffp)
             error = 1;
          }
          else {
-            panic("Unknown HostTable status \"%s\" in configuartion file, line %d", value, lineno);
+            panic("Unknown HostTable status \"%s\" in configuration file, line %d", value, lineno);
             error = 1;
          }
       }
@@ -372,7 +418,7 @@ int DcmQueryRetrieveConfig::readConfigLines(FILE *cnffp)
             error = 1;
          }
          else {
-            panic("Unknown VendorTable status \"%s\" in configuartion file, line %d", value, lineno);
+            panic("Unknown VendorTable status \"%s\" in configuration file, line %d", value, lineno);
             error = 1;
          }
       }
@@ -387,7 +433,7 @@ int DcmQueryRetrieveConfig::readConfigLines(FILE *cnffp)
             error = 1;
          }
          else {
-            panic("Unknown AETable status \"%s\" in configuartion file, line %d", value, lineno);
+            panic("Unknown AETable status \"%s\" in configuration file, line %d", value, lineno);
             error = 1;
          }
       }
@@ -407,15 +453,14 @@ int DcmQueryRetrieveConfig::readHostTable(FILE *cnffp, int *lineno)
         end = 0,          /* end flag */
         noOfPeers;        /* number of peers for entry */
    char rcline[512],      /* line in configuration file */
-        mnemonic[64],     /* mnemonic in line */
-        value[256],       /* parameter value */
+        mnemonic[512],    /* mnemonic in line */
+        value[512],       /* parameter value */
         *lineptr;         /* pointer to line */
    DcmQueryRetrieveConfigHostEntry *helpentry;
 
-   while (!feof(cnffp)) {
-      fgets(rcline, sizeof(rcline), cnffp); /* read line in configuration file */
+   // read certain lines from configuration file
+   while (fgets(rcline, sizeof(rcline), cnffp)) {
       (*lineno)++;
-      if (feof(cnffp)) continue;
       if (rcline[0] == '#' || rcline[0] == 10 || rcline[0] == 13)
          continue;        /* comment or blank line */
 
@@ -463,15 +508,14 @@ int DcmQueryRetrieveConfig::readVendorTable(FILE *cnffp, int *lineno)
         end = 0,          /* end flag */
         noOfPeers;        /* number of peers for entry */
    char rcline[512],      /* line in configuration file */
-        mnemonic[64],     /* mnemonic in line */
-        value[256],       /* parameter value */
+        mnemonic[512],     /* mnemonic in line */
+        value[512],       /* parameter value */
         *lineptr;         /* pointer to line */
    DcmQueryRetrieveConfigHostEntry *helpentry;
 
-   while (!feof(cnffp)) {
-      fgets(rcline, sizeof(rcline), cnffp); /* read line in configuration file */
+   // read certain lines from configuration file
+   while (fgets(rcline, sizeof(rcline), cnffp)) {
       (*lineno)++;
-      if (feof(cnffp)) continue;
       if (rcline[0] == '#' || rcline[0] == 10 || rcline[0] == 13)
          continue;        /* comment or blank line */
 
@@ -519,15 +563,14 @@ int DcmQueryRetrieveConfig::readAETable(FILE *cnffp, int *lineno)
         end = 0,            /* end flag */
         noOfAEEntries = 0;  /* number of AE entries */
    char rcline[512],        /* line in configuration file */
-        mnemonic[64],       /* mnemonic in line */
-        value[256],         /* parameter value */
+        mnemonic[512],      /* mnemonic in line */
+        value[512],         /* parameter value */
         *lineptr;           /* pointer to line */
    DcmQueryRetrieveConfigAEEntry *helpentry;
 
-   while (!feof(cnffp)) {
-      fgets(rcline, sizeof(rcline), cnffp); /* read line in configuration file */
+   // read certain lines from configuration file
+   while (fgets(rcline, sizeof(rcline), cnffp)) {
       (*lineno)++;
-      if (feof(cnffp)) continue;
       if (rcline[0] == '#' || rcline[0] == 10 || rcline[0] == 13)
          continue;        /* comment or blank line */
 
@@ -576,7 +619,7 @@ DcmQueryRetrieveConfigQuota *DcmQueryRetrieveConfig::parseQuota(char **valuehand
 {
    int  studies;
    char *helpvalue,
-        helpval[20];
+        helpval[512];
    DcmQueryRetrieveConfigQuota *helpquota;
 
    if ((helpquota = (DcmQueryRetrieveConfigQuota *)malloc(sizeof(DcmQueryRetrieveConfigQuota))) == NULL)
@@ -597,7 +640,7 @@ DcmQueryRetrieveConfigPeer *DcmQueryRetrieveConfig::parsePeers(char **valuehandl
    char *valueptr = *valuehandle;
 
    helpvalue = parsevalues(valuehandle);
-   if (!strcmp("ANY", helpvalue)) {     /* keywork ANY used */
+   if (!strcmp("ANY", helpvalue)) {     /* keyword ANY used */
       free(helpvalue);
       *peers = -1;
       return((DcmQueryRetrieveConfigPeer *) 0);
@@ -1056,3 +1099,13 @@ const char *DcmQueryRetrieveConfig::getGroupName() const
 {
    return GroupName_.c_str();
 }
+
+const DcmQueryRetrieveCharacterSetOptions& DcmQueryRetrieveConfig::getCharacterSetOptions() const
+{
+   return characterSetOptions_;
+}
+
+DcmQueryRetrieveCharacterSetOptions& DcmQueryRetrieveConfig::getCharacterSetOptions()
+{
+   return characterSetOptions_;
+}
diff --git a/dcmqrdb/libsrc/dcmqrdbi.cc b/dcmqrdb/libsrc/dcmqrdbi.cc
index babcdac..072aaa6 100644
--- a/dcmqrdb/libsrc/dcmqrdbi.cc
+++ b/dcmqrdb/libsrc/dcmqrdbi.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2016, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -37,6 +37,7 @@ END_EXTERN_C
 #define INCLUDE_CCTYPE
 #define INCLUDE_CSTDARG
 #include "dcmtk/ofstd/ofstdinc.h"
+#include "dcmtk/ofstd/ofstd.h"
 
 #include "dcmtk/dcmqrdb/dcmqrdbs.h"
 #include "dcmtk/dcmqrdb/dcmqrdbi.h"
@@ -46,7 +47,7 @@ END_EXTERN_C
 #include "dcmtk/dcmqrdb/dcmqridx.h"
 #include "dcmtk/dcmnet/diutil.h"
 #include "dcmtk/dcmdata/dcfilefo.h"
-#include "dcmtk/ofstd/ofstd.h"
+#include "dcmtk/dcmdata/dcmatch.h"
 
 /* ========================= static data ========================= */
 
@@ -68,40 +69,41 @@ END_EXTERN_C
  ***/
 
 static const DB_FindAttr TbFindAttr [] = {
-        DB_FindAttr( DCM_PatientBirthDate,                      PATIENT_LEVEL,  OPTIONAL_KEY,   DATE_CLASS      ),
-        DB_FindAttr( DCM_PatientSex,                            PATIENT_LEVEL,  OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_PatientName,                           PATIENT_LEVEL,  REQUIRED_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_PatientID,                             PATIENT_LEVEL,  UNIQUE_KEY,     STRING_CLASS    ),
-        DB_FindAttr( DCM_PatientBirthTime,                      PATIENT_LEVEL,  OPTIONAL_KEY,   TIME_CLASS      ),
-        DB_FindAttr( DCM_OtherPatientIDs,                       PATIENT_LEVEL,  OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_OtherPatientNames,                     PATIENT_LEVEL,  OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_EthnicGroup,                           PATIENT_LEVEL,  OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_PatientComments,                       PATIENT_LEVEL,  OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_NumberOfPatientRelatedStudies,         PATIENT_LEVEL,  OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_NumberOfPatientRelatedSeries,          PATIENT_LEVEL,  OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_NumberOfPatientRelatedInstances,       PATIENT_LEVEL,  OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_StudyDate,                             STUDY_LEVEL,    REQUIRED_KEY,   DATE_CLASS      ),
-        DB_FindAttr( DCM_StudyTime,                             STUDY_LEVEL,    REQUIRED_KEY,   TIME_CLASS      ),
-        DB_FindAttr( DCM_StudyID,                               STUDY_LEVEL,    REQUIRED_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_AccessionNumber,                       STUDY_LEVEL,    REQUIRED_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_ReferringPhysicianName,                STUDY_LEVEL,    OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_StudyDescription,                      STUDY_LEVEL,    OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_NameOfPhysiciansReadingStudy,          STUDY_LEVEL,    OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_StudyInstanceUID,                      STUDY_LEVEL,    UNIQUE_KEY,     UID_CLASS       ),
-        DB_FindAttr( DCM_RETIRED_OtherStudyNumbers,             STUDY_LEVEL,    OPTIONAL_KEY,   OTHER_CLASS     ),
-        DB_FindAttr( DCM_AdmittingDiagnosesDescription,         STUDY_LEVEL,    OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_PatientAge,                            STUDY_LEVEL,    OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_PatientSize,                           STUDY_LEVEL,    OPTIONAL_KEY,   OTHER_CLASS     ),
-        DB_FindAttr( DCM_PatientWeight,                         STUDY_LEVEL,    OPTIONAL_KEY,   OTHER_CLASS     ),
-        DB_FindAttr( DCM_Occupation,                            STUDY_LEVEL,    OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_AdditionalPatientHistory,              STUDY_LEVEL,    OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_NumberOfStudyRelatedSeries,            STUDY_LEVEL,    OPTIONAL_KEY,   OTHER_CLASS     ),
-        DB_FindAttr( DCM_NumberOfStudyRelatedInstances,         STUDY_LEVEL,    OPTIONAL_KEY,   OTHER_CLASS     ),
-        DB_FindAttr( DCM_SeriesNumber,                          SERIE_LEVEL,    REQUIRED_KEY,   OTHER_CLASS     ),
-        DB_FindAttr( DCM_SeriesInstanceUID,                     SERIE_LEVEL,    UNIQUE_KEY,     UID_CLASS       ),
-        DB_FindAttr( DCM_Modality,                              SERIE_LEVEL,    OPTIONAL_KEY,   STRING_CLASS    ),
-        DB_FindAttr( DCM_InstanceNumber,                        IMAGE_LEVEL,    REQUIRED_KEY,   OTHER_CLASS     ),
-        DB_FindAttr( DCM_SOPInstanceUID,                        IMAGE_LEVEL,    UNIQUE_KEY,     UID_CLASS       )
+        DB_FindAttr( DCM_PatientBirthDate,                      PATIENT_LEVEL,  OPTIONAL_KEY ),
+        DB_FindAttr( DCM_PatientSex,                            PATIENT_LEVEL,  OPTIONAL_KEY ),
+        DB_FindAttr( DCM_PatientName,                           PATIENT_LEVEL,  REQUIRED_KEY ),
+        DB_FindAttr( DCM_PatientID,                             PATIENT_LEVEL,  UNIQUE_KEY   ),
+        DB_FindAttr( DCM_PatientBirthTime,                      PATIENT_LEVEL,  OPTIONAL_KEY ),
+        DB_FindAttr( DCM_OtherPatientIDs,                       PATIENT_LEVEL,  OPTIONAL_KEY ),
+        DB_FindAttr( DCM_OtherPatientNames,                     PATIENT_LEVEL,  OPTIONAL_KEY ),
+        DB_FindAttr( DCM_EthnicGroup,                           PATIENT_LEVEL,  OPTIONAL_KEY ),
+        DB_FindAttr( DCM_PatientComments,                       PATIENT_LEVEL,  OPTIONAL_KEY ),
+        DB_FindAttr( DCM_NumberOfPatientRelatedStudies,         PATIENT_LEVEL,  OPTIONAL_KEY ),
+        DB_FindAttr( DCM_NumberOfPatientRelatedSeries,          PATIENT_LEVEL,  OPTIONAL_KEY ),
+        DB_FindAttr( DCM_NumberOfPatientRelatedInstances,       PATIENT_LEVEL,  OPTIONAL_KEY ),
+        DB_FindAttr( DCM_IssuerOfPatientID,                     PATIENT_LEVEL,  OPTIONAL_KEY ),
+        DB_FindAttr( DCM_StudyDate,                             STUDY_LEVEL,    REQUIRED_KEY ),
+        DB_FindAttr( DCM_StudyTime,                             STUDY_LEVEL,    REQUIRED_KEY ),
+        DB_FindAttr( DCM_StudyID,                               STUDY_LEVEL,    REQUIRED_KEY ),
+        DB_FindAttr( DCM_AccessionNumber,                       STUDY_LEVEL,    REQUIRED_KEY ),
+        DB_FindAttr( DCM_ReferringPhysicianName,                STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_StudyDescription,                      STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_NameOfPhysiciansReadingStudy,          STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_StudyInstanceUID,                      STUDY_LEVEL,    UNIQUE_KEY   ),
+        DB_FindAttr( DCM_RETIRED_OtherStudyNumbers,             STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_AdmittingDiagnosesDescription,         STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_PatientAge,                            STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_PatientSize,                           STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_PatientWeight,                         STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_Occupation,                            STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_AdditionalPatientHistory,              STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_NumberOfStudyRelatedSeries,            STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_NumberOfStudyRelatedInstances,         STUDY_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_SeriesNumber,                          SERIE_LEVEL,    REQUIRED_KEY ),
+        DB_FindAttr( DCM_SeriesInstanceUID,                     SERIE_LEVEL,    UNIQUE_KEY   ),
+        DB_FindAttr( DCM_Modality,                              SERIE_LEVEL,    OPTIONAL_KEY ),
+        DB_FindAttr( DCM_InstanceNumber,                        IMAGE_LEVEL,    REQUIRED_KEY ),
+        DB_FindAttr( DCM_SOPInstanceUID,                        IMAGE_LEVEL,    UNIQUE_KEY   )
   };
 
 /**** The NbFindAttr variable contains the length of the TbFindAttr table
@@ -318,6 +320,12 @@ static void DB_IdxInitRecord (IdxRecord *idx, int linksOnly)
         idx -> param[RECORDIDX_PresentationLabel]. XTag = DCM_ContentLabel ;
         idx -> param[RECORDIDX_PresentationLabel]. ValueLength = CS_LABEL_MAX_LENGTH ;
         idx -> PresentationLabel[0] = '\0' ;
+        idx -> param[RECORDIDX_IssuerOfPatientID]. XTag = DCM_IssuerOfPatientID ;
+        idx -> param[RECORDIDX_IssuerOfPatientID]. ValueLength =  LO_MAX_LENGTH ;
+        idx -> IssuerOfPatientID[0] = '\0' ;
+        idx -> param[RECORDIDX_SpecificCharacterSet]. XTag = DCM_SpecificCharacterSet ;
+        idx -> param[RECORDIDX_SpecificCharacterSet]. ValueLength = CS_MAX_LENGTH*8 ;
+        idx -> SpecificCharacterSet[0] = '\0' ;
     }
     idx -> param[RECORDIDX_PatientBirthDate]. PValueField = (char *)idx -> PatientBirthDate ;
     idx -> param[RECORDIDX_PatientSex]. PValueField = (char *)idx -> PatientSex ;
@@ -360,6 +368,8 @@ static void DB_IdxInitRecord (IdxRecord *idx, int linksOnly)
     idx -> param[RECORDIDX_OperatorsName ]. PValueField = (char *) idx -> OperatorsName ;
     idx -> param[RECORDIDX_PerformingPhysicianName]. PValueField = (char *) idx -> PerformingPhysicianName ;
     idx -> param[RECORDIDX_PresentationLabel]. PValueField = (char *) idx -> PresentationLabel ;
+    idx -> param[RECORDIDX_IssuerOfPatientID]. PValueField = (char *) idx -> IssuerOfPatientID ;
+    idx -> param[RECORDIDX_SpecificCharacterSet]. PValueField = (char *) idx -> SpecificCharacterSet ;
 }
 
 /******************************
@@ -424,9 +434,9 @@ static long DB_lseek(int fildes, long offset, int whence)
     }
 
     /* print an alert if we are seeking beyond the end of file.
-     * ignore when file is empty
+     * ignore when file is empty or contains only the version information.
      */
-    if ((endpos > 0) && (pos > endpos)) {
+    if ((endpos > DBHEADERSIZE) && (pos > endpos)) {
         DCMQRDB_ERROR("*** DB ALERT: attempt to seek beyond end of file" << OFendl
             << "              offset=" << offset << " filesize=" << endpos);
     }
@@ -444,7 +454,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::DB_IdxRead (int idx, IdxRecord
     /*** Goto the right index in file
     **/
 
-    DB_lseek (handle_ -> pidx, (long) (SIZEOF_STUDYDESC + idx * SIZEOF_IDXRECORD), SEEK_SET) ;
+    DB_lseek (handle_ -> pidx, OFstatic_cast(long, DBHEADERSIZE + SIZEOF_STUDYDESC + idx * SIZEOF_IDXRECORD), SEEK_SET) ;
 
     /*** Read the record
     **/
@@ -452,7 +462,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::DB_IdxRead (int idx, IdxRecord
     if (read (handle_ -> pidx, (char *) idxRec, SIZEOF_IDXRECORD) != SIZEOF_IDXRECORD)
         return (QR_EC_IndexDatabaseError) ;
 
-    DB_lseek (handle_ -> pidx, 0L, SEEK_SET) ;
+    DB_lseek (handle_ -> pidx, OFstatic_cast(long, DBHEADERSIZE), SEEK_SET) ;
 
     /*** Initialize record links
     **/
@@ -478,7 +488,7 @@ static OFCondition DB_IdxAdd (DB_Private_Handle *phandle, int *idx, IdxRecord *i
 
     *idx = 0 ;
 
-    DB_lseek (phandle -> pidx, (long) SIZEOF_STUDYDESC, SEEK_SET) ;
+    DB_lseek (phandle -> pidx, OFstatic_cast(long, DBHEADERSIZE + SIZEOF_STUDYDESC), SEEK_SET) ;
     while (read (phandle -> pidx, (char *) &rec, SIZEOF_IDXRECORD) == SIZEOF_IDXRECORD) {
         if (rec. filename [0] == '\0')
             break ;
@@ -488,14 +498,14 @@ static OFCondition DB_IdxAdd (DB_Private_Handle *phandle, int *idx, IdxRecord *i
     /*** We have either found a free place or we are at the end of file. **/
 
 
-    DB_lseek (phandle -> pidx, (long) (SIZEOF_STUDYDESC + (*idx) * SIZEOF_IDXRECORD), SEEK_SET) ;
+    DB_lseek (phandle -> pidx, OFstatic_cast(long, DBHEADERSIZE + SIZEOF_STUDYDESC + (*idx) * SIZEOF_IDXRECORD), SEEK_SET) ;
 
     if (write (phandle -> pidx, (char *) idxRec, SIZEOF_IDXRECORD) != SIZEOF_IDXRECORD)
         cond = QR_EC_IndexDatabaseError ;
     else
         cond = EC_Normal ;
 
-    DB_lseek (phandle -> pidx, 0L, SEEK_SET) ;
+    DB_lseek (phandle -> pidx, OFstatic_cast(long, DBHEADERSIZE), SEEK_SET) ;
 
     return cond ;
 }
@@ -508,10 +518,10 @@ static OFCondition DB_IdxAdd (DB_Private_Handle *phandle, int *idx, IdxRecord *i
 OFCondition DcmQueryRetrieveIndexDatabaseHandle::DB_StudyDescChange(StudyDescRecord *pStudyDesc)
 {
     OFCondition cond = EC_Normal;
-    DB_lseek (handle_ -> pidx, 0L, SEEK_SET) ;
+    DB_lseek (handle_ -> pidx, OFstatic_cast(long, DBHEADERSIZE), SEEK_SET) ;
     if (write (handle_ -> pidx, (char *) pStudyDesc, SIZEOF_STUDYDESC) != SIZEOF_STUDYDESC)
         cond = QR_EC_IndexDatabaseError;
-    DB_lseek (handle_ -> pidx, 0L, SEEK_SET) ;
+    DB_lseek (handle_ -> pidx, OFstatic_cast(long, DBHEADERSIZE), SEEK_SET) ;
     return cond ;
 }
 
@@ -521,7 +531,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::DB_StudyDescChange(StudyDescRec
 
 OFCondition DcmQueryRetrieveIndexDatabaseHandle::DB_IdxInitLoop(int *idx)
 {
-    DB_lseek (handle_ -> pidx, SIZEOF_STUDYDESC, SEEK_SET) ;
+    DB_lseek (handle_ -> pidx, OFstatic_cast(long, DBHEADERSIZE + SIZEOF_STUDYDESC), SEEK_SET) ;
     *idx = -1 ;
     return EC_Normal ;
 }
@@ -535,7 +545,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::DB_IdxGetNext(int *idx, IdxReco
 {
 
     (*idx)++ ;
-    DB_lseek (handle_ -> pidx, SIZEOF_STUDYDESC + (long)(*idx) * SIZEOF_IDXRECORD, SEEK_SET) ;
+    DB_lseek (handle_ -> pidx, OFstatic_cast(long, DBHEADERSIZE + SIZEOF_STUDYDESC + OFstatic_cast(long, *idx) * SIZEOF_IDXRECORD), SEEK_SET) ;
     while (read (handle_ -> pidx, (char *) idxRec, SIZEOF_IDXRECORD) == SIZEOF_IDXRECORD) {
         if (idxRec -> filename [0] != '\0') {
             DB_IdxInitRecord (idxRec, 1) ;
@@ -545,7 +555,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::DB_IdxGetNext(int *idx, IdxReco
         (*idx)++ ;
     }
 
-    DB_lseek (handle_ -> pidx, 0L, SEEK_SET) ;
+    DB_lseek (handle_ -> pidx, OFstatic_cast(long, DBHEADERSIZE), SEEK_SET) ;
 
     return QR_EC_IndexDatabaseError ;
 }
@@ -559,11 +569,11 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::DB_IdxGetNext(int *idx, IdxReco
 OFCondition DcmQueryRetrieveIndexDatabaseHandle::DB_GetStudyDesc (StudyDescRecord *pStudyDesc)
 {
 
-    DB_lseek (handle_ -> pidx, 0L, SEEK_SET) ;
+    DB_lseek (handle_ -> pidx, OFstatic_cast(long, DBHEADERSIZE), SEEK_SET) ;
     if ( read (handle_ -> pidx, (char *) pStudyDesc, SIZEOF_STUDYDESC) == SIZEOF_STUDYDESC )
         return EC_Normal ;
 
-    DB_lseek (handle_ -> pidx, 0L, SEEK_SET) ;
+    DB_lseek (handle_ -> pidx, OFstatic_cast(long, DBHEADERSIZE), SEEK_SET) ;
 
     return QR_EC_IndexDatabaseError ;
 }
@@ -579,7 +589,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::DB_IdxRemove(int idx)
     IdxRecord   rec ;
     OFCondition cond = EC_Normal;
 
-    DB_lseek (handle_ -> pidx, SIZEOF_STUDYDESC + (long)idx * SIZEOF_IDXRECORD, SEEK_SET) ;
+    DB_lseek (handle_ -> pidx, OFstatic_cast(long, DBHEADERSIZE + SIZEOF_STUDYDESC + OFstatic_cast(long, idx) * SIZEOF_IDXRECORD), SEEK_SET) ;
     DB_IdxInitRecord (&rec, 0) ;
 
     rec. filename [0] = '\0' ;
@@ -588,7 +598,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::DB_IdxRemove(int idx)
     else
         cond = QR_EC_IndexDatabaseError ;
 
-    DB_lseek (handle_ -> pidx, 0L, SEEK_SET) ;
+    DB_lseek (handle_ -> pidx, OFstatic_cast(long, DBHEADERSIZE), SEEK_SET) ;
 
     return cond ;
 }
@@ -653,41 +663,10 @@ static OFCondition DB_FreeElementList (DB_ElementList *lst)
     if (lst->elem.PValueField != NULL) {
         free ((char *) lst -> elem. PValueField);
     }
-    free (lst);
+    delete lst;
     return (cond);
 }
 
-
-/*******************
- *    Matches two strings
- */
-
-static int DB_StringUnify  (char *pmod, char *pstr)
-{
-    int uni;
-
-    if (*pmod == '\0')
-    return (*pstr == '\0');
-
-    if (  *pmod == *pstr
-      || (*pmod == '?' && *pstr != '\0')
-    )
-    return (DB_StringUnify (pmod + 1, pstr + 1));
-
-    if (*pmod == '*') {
-    if ( *(pmod + 1) == '\0' )
-        return (OFTrue);
-    while (  ( (uni = DB_StringUnify (pmod + 1, pstr)) == OFFalse )
-         && (*pstr != '\0')
-        )
-        pstr++;
-    return (uni);
-    }
-    else if (*pmod != *pstr)
-    return (OFFalse);
-    return OFFalse;
-}
-
 /*******************
  *    Is the specified tag supported
  */
@@ -704,7 +683,6 @@ static int DB_TagSupported (DcmTagKey tag)
 
 }
 
-
 /*******************
  *    Get UID tag of a specified level
  */
@@ -766,153 +744,6 @@ static OFCondition DB_GetTagKeyAttr (DcmTagKey tag, DB_KEY_TYPE *keyAttr)
     return (QR_EC_IndexDatabaseError);
 }
 
-/*******************
- *    Get tag key attribute of a specified tag
- */
-
-static OFCondition DB_GetTagKeyClass (DcmTagKey tag, DB_KEY_CLASS *keyAttr)
-{
-    int i;
-
-    for (i = 0; i < NbFindAttr; i++)
-        if (TbFindAttr[i]. tag == tag)
-            break;
-
-    if (i < NbFindAttr) {
-        *keyAttr = TbFindAttr[i]. keyClass;
-        return (EC_Normal);
-    }
-    else
-    return (QR_EC_IndexDatabaseError);
-}
-
-
-/*******************
- *    Remove spaces in a string
- */
-
-static void DB_RemoveSpaces (char *string)
-{
-    char *pc1, *pc2;
-
-    for (pc1 = pc2 = string; *pc2; pc2++) {
-        if (*pc2 != ' ') {
-            *pc1 = *pc2;
-            pc1++;
-        }
-    }
-    *pc1 = '\0';
-}
-
-/*******************
- *    Remove leading and trailing spaces in a string
- */
-
-static void DB_RemoveEnclosingSpaces (char *string)
-{
-    char *pc1, *pc2;
-
-    /** Find in pc2 the first non space character
-    ** If not found, string is empty
-    */
-
-    for (pc2 = string; (*pc2 != '\0') && (*pc2 == ' '); pc2++)  /* loop with empty body */;
-    if (*pc2 == '\0') {
-        string [0] = '\0';
-        return;
-    }
-
-    /** Shift the string if necessary
-     */
-
-    if (pc2 != string) {
-        for (pc1 = string; *pc2; pc1++, pc2++)
-            *pc1 = *pc2;
-        *pc1 = '\0';
-    }
-
-    /** Skip trailing spaces
-     */
-
-    for (pc2 = string + strlen (string) - 1; *pc2 == ' '; pc2--)  /* loop with empty body */;
-    pc2++;
-    *pc2 = '\0';
-}
-
-
-/*******************
- *    Convert a date YYYYMMDD in a long
- */
-
-static long DB_DateToLong (char *date)
-{
-    char year [5];
-    char month[3];
-    char day  [3];
-
-    strncpy (year, date, 4);
-    year [4] = '\0';
-    strncpy (month, date + 4, 2);
-    month [2] = '\0';
-    strncpy (day, date + 6, 2);
-    day [2] = '\0';
-
-    return ((atol(year) * 10000) + (atol(month) * 100) + atol(day));
-}
-
-
-/*******************
- *    Convert a time in a double
- */
-
-static double DB_TimeToDouble (char *thetime)
-{
-    char t [20];
-    char tmp [4];
-
-    double result = 0.;
-    char *pc;
-
-    /*** Get fractional part if exists
-    **/
-
-    strcpy (t, thetime);
-    if ((pc = strchr (t, '.')) != NULL) {
-        double f;
-
-        *pc = '\0';
-        for (pc++, f = 1.; (*pc) && (isdigit (OFstatic_cast(unsigned char, *pc))); pc++) {
-            f /= 10.;
-            result += (*pc - '0') * f;
-        }
-    }
-
-    /*** Add default values (mm ss) if necessary
-    **/
-
-    strcat (t, "0000");
-    t [6] = '\0';
-
-    /*** Get Hours, Minutes and Seconds
-    **/
-
-    strncpy (tmp, t, 2);
-    tmp [3] = '\0';
-    result += 3600. * OFStandard::atof(tmp);
-
-    strncpy (tmp, t + 2, 2);
-    tmp [3] = '\0';
-    result += 60. * OFStandard::atof(tmp);
-
-    strncpy (tmp, t + 4, 2);
-    tmp [3] = '\0';
-    result += OFStandard::atof(tmp);
-
-    return result;
-}
-
-
-
 /***********************
  *    Duplicate a DICOM element
  *    dst space is supposed provided by the caller
@@ -966,318 +797,197 @@ DcmQueryRetrieveDatabaseHandle::~DcmQueryRetrieveDatabaseHandle()
 
 /* ========================= FIND ========================= */
 
-/************
-**      Try to match Two Dates
-**      The first one is the "model", the second one an element
-**      Returns OFTrue if matching is OK, else returns OFFalse
- */
-
-int DcmQueryRetrieveIndexDatabaseHandle::matchDate (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt)
+// helper function to print 'ASCII' instead of an empty string for the value of
+// Specific Character Set
+static const char* characterSetName( const OFString& charset )
 {
-    char date [DBC_MAXSTRING] ;
-    char modl [DBC_MAXSTRING] ;
-
-    /*** Get elt and model data in strings
-    **/
-
-    memcpy (date, elt->PValueField, (size_t)(elt->ValueLength)) ;
-    date [elt->ValueLength] = '\0' ;
-    DB_RemoveSpaces (date) ;
-
-    memcpy (modl, mod->PValueField, (size_t)(mod->ValueLength)) ;
-    modl [mod->ValueLength] = '\0' ;
-    DB_RemoveSpaces (modl) ;
-
-    /*** If no '-' in date
-    *** return strict comparison result
-    **/
-
-    if (strchr (modl, '-') == NULL)
-        return (strcmp (modl, date) == 0) ;
-
-    /*** If first char is -
-    **/
-
-    if (modl [0] == '-') {
-        return DB_DateToLong (date) <= DB_DateToLong (modl+1) ;
-    }
-
-    /*** If last char is -
-    **/
-
-    else if (modl [strlen (modl) - 1] == '-') {
-        modl [strlen (modl) - 1] = '\0' ;
-        return DB_DateToLong (date) >= DB_DateToLong (modl) ;
-    }
-    else {
-        char *pc ;
-        long d ;
-
-        d = DB_DateToLong (date) ;
-        pc = strchr (modl, '-') ;
-        *pc = '\0' ;
-
-        return (d >= DB_DateToLong (modl)) && (d <= DB_DateToLong (pc+1)) ;
-
-    }
+    if (charset.empty())
+        return "ASCII";
+    return charset.c_str();
 }
 
-/************
-**      Try to match Two Times
-**      The first one is the "model", the second one an element
-**      Returns OFTrue if matching is OK, else returns OFFalse
- */
-
-int DcmQueryRetrieveIndexDatabaseHandle::matchTime (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt)
+class DcmQueryRetrieveIndexDatabaseHandle::CharsetConsideringMatcher
 {
-    char aTime [DBC_MAXSTRING] ;
-    char modl [DBC_MAXSTRING] ;
-
-    /*** Get elt and model data in strings
-    **/
-
-    memcpy (aTime, elt->PValueField, (size_t)(elt->ValueLength)) ;
-    aTime [elt->ValueLength] = '\0' ;
-    DB_RemoveSpaces (aTime) ;
-
-    memcpy (modl, mod->PValueField, (size_t)(mod->ValueLength)) ;
-    modl [mod->ValueLength] = '\0' ;
-    DB_RemoveSpaces (modl) ;
-
-    /*** If no '-' in time
-    *** return strict comparison result
-    **/
+public:
 
-    if (strchr (modl, '-') == NULL)
-        return (strcmp (modl, aTime) == 0) ;
-
-    /*** If first char is -
-    **/
-
-    if (modl [0] == '-') {
-        return DB_TimeToDouble (aTime) <= DB_TimeToDouble (modl+1) ;
-    }
-
-    /*** If last char is -
-    **/
-
-    else if (modl [strlen (modl) - 1] == '-') {
-        modl [strlen (modl) - 1] = '\0' ;
-        return DB_TimeToDouble (aTime) >= DB_TimeToDouble (modl) ;
-    }
-    else {
-        char *pc ;
-        double t ;
-
-        t = DB_TimeToDouble (aTime) ;
-        pc = strchr (modl, '-') ;
-        *pc = '\0' ;
-
-        return (t >= DB_TimeToDouble (modl)) && (t <= DB_TimeToDouble (pc+1)) ;
-
-    }
-}
-
-/************
-**      Try to match Two UID
-**      The first one is the "model", the second one an element
-**      Returns OFTrue if matching is OK, else returns OFFalse
- */
-
-int DcmQueryRetrieveIndexDatabaseHandle::matchUID (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt)
-{
-    int match ;
-    char *uid ;
-    char *modl ;
-    char *pc ;
-    unsigned int length ;
-
-    /*** Get elt and model data in strings
-    **/
-
-    uid = (char *) malloc ((size_t)(elt->ValueLength + 1)) ;
-    if (uid == NULL) {
-        return 0 ;
-    }
-    memcpy (uid, elt->PValueField, (size_t)(elt->ValueLength)) ;
-    uid [elt->ValueLength] = '\0' ;
+    // Constructor, remember references to the find request character set and converter
+    CharsetConsideringMatcher(DB_Private_Handle& handle)
+    : findRequestCharacterSet(handle.findRequestCharacterSet)
+    , findRequestConverter(handle.findRequestConverter)
+    , candidateCharacterSet()
+    , candidateConverter()
+    , isFindRequestConversionNecessary(isConversionToUTF8Necessary(findRequestCharacterSet))
+    , isCandidateConversionNecessary()
+    , isConversionNecessary()
+    {
 
-    modl = (char *) malloc ((size_t)(mod->ValueLength + 1)) ;
-    if (modl == NULL) {
-        free (uid) ;
-        return 0 ;
     }
-    memcpy (modl, mod->PValueField, (size_t)(mod->ValueLength)) ;
-    modl [mod->ValueLength] = '\0' ;
-
-    /*** If no '\' in model
-    *** return strict comparison result
-    **/
 
-#ifdef STRICT_COMPARE
-#else
-    /*** Suppress Leading and Trailing spaces in
-    *** model and string
-    **/
-
-    DB_RemoveEnclosingSpaces (uid) ;
-    DB_RemoveEnclosingSpaces (modl) ;
-#endif
-
-    if (strchr (modl, '\\') == NULL) {
-        match = (strcmp (modl, uid) == 0) ;
-        free (uid) ;
-        free (modl) ;
-        return (match) ;
+    // read access to the candidate's character set value
+    const OFString& getCandidateCharacterSet() const
+    {
+        return candidateCharacterSet;
     }
 
-    /*** UID List comparison.
-    *** Match is successful if uid is found in model
-    **/
-
-    match = OFFalse ;
-    for (pc = modl ; *pc ; ) {
-
-        /*** Calculate the length to the next '\' sign (if any).
-        *** Otherwise the length of pc is returned.
-        **/
-        length = strcspn(pc, "\\") ;
-
-        if ((length == strlen(uid)) && (strncmp (pc, uid, length) == 0)) {
-            match = OFTrue ;
-            break ;
-        }
-        else {
-            pc = strchr (pc, '\\') ;
-            if (pc == NULL)
-                break ;
-            else
-                pc++ ;
+    // prepare character set conversion for specific index record
+    void setRecord(IdxRecord& idxRec)
+    {
+        // copy value of specific character set of the entry, since the converter
+        // would need it as an OFString anyway.
+        candidateCharacterSet.assign(idxRec.param[RECORDIDX_SpecificCharacterSet].PValueField,
+                                     idxRec.param[RECORDIDX_SpecificCharacterSet].ValueLength);
+        // test if conversion is potentially necessary since the character sets differ
+        if (findRequestCharacterSet != candidateCharacterSet) {
+            // determine if the candidate is compatible to UTF-8 or must be converted
+            isCandidateConversionNecessary = isConversionToUTF8Necessary(candidateCharacterSet);
+            // if it must be converted, clear the converter if it was previously initialized,
+            // but for a different character set
+            if (isCandidateConversionNecessary && candidateConverter &&
+                candidateConverter.getSourceCharacterSet() != candidateCharacterSet) {
+                candidateConverter.clear();
+            }
+            // even if the character sets differ, they may both be compatible to UTF-8,
+            // in which case conversion is still not necessary
+            isConversionNecessary = isCandidateConversionNecessary || isFindRequestConversionNecessary;
+        } else {
+            // conversion is not necessary
+            isConversionNecessary = OFFalse;
         }
     }
 
-    free (uid) ;
-    free (modl) ;
-    return (match) ;
-
-}
-
-/************
-**      Try to match Two Strings
-**      The first one is the "model", the second one an element
-**      Returns OFTrue if matching is OK, else returns OFFalse
- */
-
-int DcmQueryRetrieveIndexDatabaseHandle::matchStrings (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt)
-{
-    int match ;
-    char *string ;
-    char *modl ;
-
-    /*** Get elt and model data in strings
-    **/
-
-    string = (char *) malloc ((size_t)(elt->ValueLength + 1)) ;
-    if (string == NULL) {
-        return 0 ;
-    }
-    memcpy (string, elt->PValueField, (size_t)(elt->ValueLength)) ;
-    string [elt->ValueLength] = '\0' ;
-
-    modl = (char *) malloc ((size_t)(mod->ValueLength + 1)) ;
-    if (modl == NULL) {
-        free (string) ;
-        return 0 ;
-    }
-    memcpy (modl, mod->PValueField, (size_t)(mod->ValueLength)) ;
-    modl [mod->ValueLength] = '\0' ;
-
-#ifdef STRICT_COMPARE
+    // Try to match Two DB_ElementList elements
+    // The first one is the query key, the second one the candidate
+    // from the database entry.
+    // Returns OFTrue if both values match, OFFalse otherwise
+    OFBool operator()(DB_ElementList* query, DB_SmallDcmElmt* candidate)
+    {
+        // Universal matching is applied if the query value is empty:
+        // always return OFTrue
+        if (!query->elem.ValueLength)
+            return OFTrue;
+
+        OFString buffer;
+        const char* pQuery = query->elem.PValueField;
+        const char* pQueryEnd = pQuery + query->elem.ValueLength;
+        const char* pCandidate = candidate->PValueField;
+        const char* pCandidateEnd = pCandidate + candidate->ValueLength;
+
+        DcmVR vr = DcmTag(query->elem.XTag).getVR();
+        if (isConversionNecessary && vr.isAffectedBySpecificCharacterSet()) {
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+            // convert query, if it isn't UTF-8 or ASCII already
+            if (isFindRequestConversionNecessary) {
+                // does a value already exist in the cache?
+                if (!query->utf8Value) {
+                    // fill the cache if it doesn't
+                    query->utf8Value = OFString();
+                    // initialize the converter, if this is the first
+                    // time we need it
+                    OFCondition cond = EC_Normal;
+                    if (!findRequestConverter)
+                        cond = findRequestConverter.selectCharacterSet(findRequestCharacterSet);
+                    if (cond.good()) {
+                        // covert the string and cache the result, using the
+                        // specific delimitation characters for this VR
+                        cond = findRequestConverter.convertString(
+                            query->elem.PValueField,
+                            query->elem.ValueLength,
+                            *query->utf8Value,
+                            vr.getDelimiterChars()
+                        );
+                    }
+                    if (cond.bad()) {
+                        DCMQRDB_WARN("Character set conversion of the query key failed with the following error: '" << cond.text()
+                            << "', will compare values that use different (incompatible) character sets: \""
+                            << characterSetName(findRequestCharacterSet) << "\" and \"" << characterSetName(candidateCharacterSet) << '"');
+                        // put the original value in the cache, since retrying the conversion on the next encounter does not make sense
+                        // (it would only fail again).
+                        query->utf8Value = OFString(query->elem.PValueField, query->elem.ValueLength);
+                    }
+                }
+                // use the value from the cache for the following match
+                // operations
+                pQuery = query->utf8Value->c_str();
+                pQueryEnd = pQuery + query->utf8Value->size();
+            }
+            // convert the candidate, if it isn't already UTF-8 or ASCII
+            if (isCandidateConversionNecessary) {
+                // initialize the converter, if this is the first time
+                // we need it for this entry
+                OFCondition cond = EC_Normal;
+                if (!candidateConverter)
+                    cond = candidateConverter.selectCharacterSet(candidateCharacterSet);
+                if (cond.good()) {
+                    // convert the string using the local buffer and the
+                    // specific delimitation characters for this VR
+                    cond = candidateConverter.convertString(
+                        candidate->PValueField,
+                        candidate->ValueLength,
+                        buffer,
+                        vr.getDelimiterChars()
+                    );
+                }
+                if (cond.good()) {
+                    // assign the buffer contents to the value being used
+                    // in the following match operations
+                    pCandidate = buffer.c_str();
+                    pCandidateEnd = pCandidate + buffer.size();
+                } else {
+                    DCMQRDB_WARN("Character set conversion of the candidate failed with the following error: '" << cond.text()
+                        << "', will compare values that use different (incompatible) character sets: \""
+                        << characterSetName(findRequestCharacterSet) << "\" and \"" << characterSetName(candidateCharacterSet) << '"');
+                }
+            }
 #else
-    /*** Suppress Leading and Trailing spaces in
-    *** model and string
-    **/
-
-    DB_RemoveEnclosingSpaces (string) ;
-    DB_RemoveEnclosingSpaces (modl) ;
+            DCMQRDB_WARN("Character set conversion is not available, comparing values that use different (incompatible) character sets: \""
+                << characterSetName(findRequestCharacterSet) << "\" and \"" << characterSetName(candidateCharacterSet) << '"');
 #endif
+        }
 
-    /*** If no '*' and no '?' in model
-    *** return strict comparison result
-    **/
+        // remove leading and trailing spaces before matching
+        if (vr.isaString()) {
+            OFStandard::trimString(pQuery, pQueryEnd);
+            OFStandard::trimString(pCandidate, pCandidateEnd);
+        }
 
-    if ((strchr (modl, '*') == NULL) && (strchr (modl, '?') == NULL))
-    {
-        int res = strcmp (modl, string);
-        free(string);
-        free(modl);
-        return res == 0;
+        // use DcmAttributeMatching to perform the appropriate matching function
+        // for the given VR
+        return DcmAttributeMatching( vr )( pQuery, pQueryEnd - pQuery,
+                                           pCandidate, pCandidateEnd - pCandidate );
     }
 
-    match = DB_StringUnify (modl, string) ;
-
-    free (string) ;
-    free (modl) ;
-    return (match) ;
-
-}
+private:
+    const OFString& findRequestCharacterSet;
+    DcmSpecificCharacterSet& findRequestConverter;
+    OFString candidateCharacterSet;
+    DcmSpecificCharacterSet candidateConverter;
+    const OFBool isFindRequestConversionNecessary;
+    OFBool isCandidateConversionNecessary;
+    OFBool isConversionNecessary;
+};
 
-/************
-**      Try to match Two Unknown elements
-**      Strict comparison is applied
-**      The first one is the "model", the second one an element
-**      Returns OFTrue if matching is OK, else returns OFFalse
- */
-
-int DcmQueryRetrieveIndexDatabaseHandle::matchOther (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt)
+OFBool DcmQueryRetrieveIndexDatabaseHandle::isConversionToUTF8Necessary(const OFString& characterSet)
 {
-    if (mod->ValueLength != elt->ValueLength)
-        return OFFalse ;
-
-    return (memcmp (mod->PValueField, elt->PValueField, (size_t)(elt->ValueLength)) == 0) ;
+    // empty      -> ASCII, subset of UTF-8
+    // ISO_IR 6   -> ASCII, subset of UTF-8
+    // ISO_IR 192 -> UTF-8
+    return !characterSet.empty() &&
+           characterSet != "ISO_IR 192" &&
+           characterSet != "ISO_IR 6"
+    ;
 }
 
-/************
-**      Try to match Two DB_SmallDcmElmts
-**      The first one is the "model", the second one an element
-**      Returns OFTrue if matching is OK, else returns OFFalse
- */
-
-int DcmQueryRetrieveIndexDatabaseHandle::dbmatch (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt)
+OFBool DcmQueryRetrieveIndexDatabaseHandle::isConversionNecessary(const OFString& sourceCharacterSet,
+                                                                  const OFString& destinationCharacterSet)
 {
-    DB_KEY_CLASS keyClass = OTHER_CLASS;
-
-    /*** If model length is 0
-    *** Universal matching is applied : return always OFTrue
-    **/
-
-    if (mod->ValueLength == 0)
-        return (OFTrue) ;
-
-    /*** Get the key class of the element
-    **/
-
-    DB_GetTagKeyClass (elt->XTag, &keyClass) ;
-
-    switch (keyClass) {
-
-    case DATE_CLASS :
-        return matchDate (mod, elt) ;
-
-    case TIME_CLASS :
-        return matchTime (mod, elt) ;
-
-    case UID_CLASS :
-        return matchUID  (mod, elt) ;
-
-    case STRING_CLASS :
-        return matchStrings (mod, elt) ;
-
-    case OTHER_CLASS :
-        return matchOther (mod, elt) ;
-
-    }
-    return OFFalse;
+    // conversion is unnecessary if both are the same character set or if
+    // the destination is UTF-8 and the source is compatible to UTF-8
+    // (i.e. ASCII).
+    return sourceCharacterSet != destinationCharacterSet &&
+    (
+        destinationCharacterSet != "ISO_IR 192" ||
+        isConversionToUTF8Necessary(sourceCharacterSet)
+    );
 }
 
 /************
@@ -1319,12 +1029,11 @@ void DcmQueryRetrieveIndexDatabaseHandle::makeResponseList (
         /*** Append index record element to response list
         **/
 
-        plist = (DB_ElementList *) malloc (sizeof (DB_ElementList)) ;
+        plist = new DB_ElementList ;
         if (plist == NULL) {
             DCMQRDB_ERROR("makeResponseList: out of memory");
             return;
         }
-        plist->next = NULL ;
 
         DB_DuplicateElement(&idxRec->param[i], &plist->elem);
 
@@ -1337,6 +1046,27 @@ void DcmQueryRetrieveIndexDatabaseHandle::makeResponseList (
         }
 
     }
+
+    /** Specific Character Set stuff
+    **/
+
+    if (idxRec->param[RECORDIDX_SpecificCharacterSet].ValueLength) {
+        plist = new DB_ElementList ;
+        if (plist == NULL) {
+            DCMQRDB_ERROR("makeResponseList: out of memory");
+            return;
+        }
+
+        DB_DuplicateElement(&idxRec->param[RECORDIDX_SpecificCharacterSet], &plist->elem);
+
+        if (phandle->findResponseList == NULL) {
+            phandle->findResponseList = last = plist ;
+        }
+        else {
+            last->next = plist ;
+            last = plist ;
+        }
+    }
 }
 
 
@@ -1489,7 +1219,8 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::hierarchicalCompare (
                 IdxRecord               *idxRec,
                 DB_LEVEL                level,
                 DB_LEVEL                infLevel,
-                int                     *match)
+                int                     *match,
+                CharsetConsideringMatcher& dbmatch)
 {
     int                 i ;
     DcmTagKey   XTag ;
@@ -1533,7 +1264,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::hierarchicalCompare (
         ** If Match fails, return OFFalse
         */
 
-        if (! dbmatch (&(plist->elem), &idxRec->param[i])) {
+        if (!dbmatch(plist, &idxRec->param[i])) {
             *match = OFFalse ;
             return EC_Normal ;
         }
@@ -1542,7 +1273,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::hierarchicalCompare (
         ** Try at next level
         */
 
-        return hierarchicalCompare (phandle, idxRec, (DB_LEVEL)(level + 1), infLevel, match) ;
+        return hierarchicalCompare (phandle, idxRec, (DB_LEVEL)(level + 1), infLevel, match, dbmatch) ;
     }
 
     /**** If current level is the QueryLevel
@@ -1588,7 +1319,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::hierarchicalCompare (
             */
 
 
-            if (! dbmatch (&(plist->elem), &idxRec->param[i])) {
+            if (!dbmatch(plist, &idxRec->param[i])) {
                 *match = OFFalse ;
                 return EC_Normal ;
             }
@@ -1641,15 +1372,19 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::startFindRequest(
         return (QR_EC_IndexDatabaseError) ;
     }
 
-
     /**** Parse Identifiers in the Dicom Object
     **** Find Query Level and construct a list
     **** of query identifiers
     ***/
 
+    if (findRequestIdentifiers->findAndGetOFStringArray(DCM_SpecificCharacterSet, handle_->findRequestCharacterSet).bad())
+        handle_->findRequestCharacterSet.clear();
+    if (handle_->findRequestConverter && handle_->findRequestConverter.getSourceCharacterSet() != handle_->findRequestCharacterSet)
+        handle_->findRequestConverter.clear();
+
     handle_->findRequestList = NULL ;
 
-    int elemCount = (int)(findRequestIdentifiers->card());
+    int elemCount = OFstatic_cast(int, findRequestIdentifiers->card());
     for (int elemIndex=0; elemIndex<elemCount; elemIndex++) {
 
         DcmElement* dcelem = findRequestIdentifiers->getElement(elemIndex);
@@ -1659,7 +1394,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::startFindRequest(
             elem.ValueLength = dcelem->getLength();
             if (elem.ValueLength == 0) {
                 elem.PValueField = NULL ;
-            } else if ((elem.PValueField = (char*)malloc((size_t)(elem.ValueLength+1))) == NULL) {
+            } else if ((elem.PValueField = OFstatic_cast(char*, malloc(OFstatic_cast(size_t, elem.ValueLength+1)))) == NULL) {
                 status->setStatus(STATUS_FIND_Refused_OutOfResources);
                 return (QR_EC_IndexDatabaseError) ;
             } else {
@@ -1712,12 +1447,11 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::startFindRequest(
                 */
                 if (DB_TagSupported (elem. XTag)) {
 
-                    plist = (DB_ElementList *) malloc (sizeof (DB_ElementList)) ;
+                    plist = new DB_ElementList ;
                     if (plist == NULL) {
                         status->setStatus(STATUS_FIND_Refused_OutOfResources);
                         return (QR_EC_IndexDatabaseError) ;
                     }
-                    plist->next = NULL ;
                     DB_DuplicateElement (&elem, &(plist->elem)) ;
                     if (handle_->findRequestList == NULL) {
                         handle_->findRequestList = last = plist ;
@@ -1787,6 +1521,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::startFindRequest(
     MatchFound = OFFalse ;
     cond = EC_Normal ;
 
+    CharsetConsideringMatcher dbmatch(*handle_);
     while (1) {
 
         /*** Exit loop if read error (or end of file)
@@ -1798,7 +1533,8 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::startFindRequest(
         /*** Exit loop if error or matching OK
         **/
 
-        cond = hierarchicalCompare (handle_, &idxRec, qLevel, qLevel, &MatchFound) ;
+        dbmatch.setRecord(idxRec);
+        cond = hierarchicalCompare (handle_, &idxRec, qLevel, qLevel, &MatchFound, dbmatch) ;
         if (cond != EC_Normal)
             break ;
         if (MatchFound)
@@ -1867,7 +1603,8 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::startFindRequest(
 
 OFCondition DcmQueryRetrieveIndexDatabaseHandle::nextFindResponse (
                 DcmDataset      **findResponseIdentifiers,
-                DcmQueryRetrieveDatabaseStatus  *status)
+                DcmQueryRetrieveDatabaseStatus  *status,
+                const DcmQueryRetrieveCharacterSetOptions& characterSetOptions)
 {
 
     DB_ElementList      *plist = NULL;
@@ -1901,7 +1638,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::nextFindResponse (
 
         for ( plist = handle_->findResponseList ; plist != NULL ; plist = plist->next ) {
             DcmTag t(plist->elem.XTag);
-            DcmElement *dce = newDicomElement(t);
+            DcmElement *dce = DcmItem::newDicomElement(t);
             if (dce == NULL) {
                 status->setStatus(STATUS_FIND_Refused_OutOfResources);
                 return QR_EC_IndexDatabaseError;
@@ -1942,12 +1679,79 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::nextFindResponse (
         }
         DU_putStringDOElement(*findResponseIdentifiers,
                               DCM_QueryRetrieveLevel, queryLevelString);
+
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+        OFString specificCharacterSet;
+        if ((*findResponseIdentifiers)->findAndGetOFStringArray(DCM_SpecificCharacterSet, specificCharacterSet).bad())
+            specificCharacterSet.clear();
+
+        const OFString* destinationCharacterSet = NULL;
+        const OFString* fallbackCharacterSet = NULL;
+
+        if (characterSetOptions.flags & DcmQueryRetrieveCharacterSetOptions::Override) {
+            destinationCharacterSet = &characterSetOptions.characterSet;
+            if (characterSetOptions.flags & DcmQueryRetrieveCharacterSetOptions::Fallback)
+                fallbackCharacterSet = &handle_->findRequestCharacterSet;
+        } else {
+            destinationCharacterSet = &handle_->findRequestCharacterSet;
+            if (characterSetOptions.flags & DcmQueryRetrieveCharacterSetOptions::Fallback)
+                fallbackCharacterSet = &characterSetOptions.characterSet;
+        }
+
+        if (isConversionNecessary(specificCharacterSet, *destinationCharacterSet)) {
+            OFCondition status = (*findResponseIdentifiers)->convertCharacterSet(
+                specificCharacterSet,
+                *destinationCharacterSet,
+                characterSetOptions.conversionFlags,
+                OFTrue);
+            if (status.bad()) {
+                DCMQRDB_WARN("Converting response from character set \""
+                    << characterSetName(specificCharacterSet)
+                    << "\" to character set \""
+                    << characterSetName(*destinationCharacterSet)
+                    << "\" failed, (error message: " << status.text() << ')');
+                if (fallbackCharacterSet && isConversionNecessary(specificCharacterSet, *fallbackCharacterSet)) {
+                    DCMQRDB_INFO("Trying to convert response from character set \""
+                        << characterSetName(specificCharacterSet)
+                        << "\" to fall-back character set \""
+                        << characterSetName(*fallbackCharacterSet) << "\" instead");
+                    status = (*findResponseIdentifiers)->convertCharacterSet(
+                        specificCharacterSet,
+                        *fallbackCharacterSet,
+                        characterSetOptions.conversionFlags,
+                        OFTrue);
+                    if (status.bad()) {
+                        DCMQRDB_WARN("Converting response from character set \""
+                            << characterSetName(specificCharacterSet)
+                            << "\" to character set \""
+                            << characterSetName(*fallbackCharacterSet)
+                            << "\" failed, (error message: " << status.text() << ')');
+                    } else {
+                        DCMQRDB_INFO("Successfully converted response from character set \""
+                            << characterSetName(specificCharacterSet)
+                            << "\" to character set \""
+                            << characterSetName(*fallbackCharacterSet) << "\"");
+                    }
+                } else if (fallbackCharacterSet) {
+                    DCMQRDB_INFO("Conversion to fall-back character set \""
+                        << characterSetName(*fallbackCharacterSet)
+                        << "\" is not necessary, since the original character set is compatible");
+                }
+            } else {
+                DCMQRDB_INFO("Successfully converted response from character set \""
+                    << characterSetName(specificCharacterSet)
+                    << "\" to character set \""
+                    << characterSetName(*destinationCharacterSet)
+                    << "\"");
+            }
+        }
+#endif
+
 #ifdef DEBUG
         DCMQRDB_DEBUG("DB: findResponseIdentifiers:" << OFendl
             << DcmObject::PrintHelper(**findResponseIdentifiers));
 #endif
-    }
-    else {
+    } else {
 
         DB_unlock();
 
@@ -1972,6 +1776,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::nextFindResponse (
     MatchFound = OFFalse ;
     cond = EC_Normal ;
 
+    CharsetConsideringMatcher dbmatch(*handle_);
     while (1) {
 
         /*** Exit loop if read error (or end of file)
@@ -1989,7 +1794,8 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::nextFindResponse (
         /*** Exit loop if error or matching OK
         **/
 
-        cond = hierarchicalCompare (handle_, &idxRec, qLevel, qLevel, &MatchFound) ;
+        dbmatch.setRecord(idxRec);
+        cond = hierarchicalCompare (handle_, &idxRec, qLevel, qLevel, &MatchFound, dbmatch) ;
         if (cond != EC_Normal)
             break ;
         if (MatchFound)
@@ -2308,12 +2114,11 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::startMoveRequest(
                 if (! DB_TagSupported (elem. XTag))
                     continue ;
 
-                plist = (DB_ElementList *) malloc (sizeof( DB_ElementList ) ) ;
+                plist = new DB_ElementList ;
                 if (plist == NULL) {
                     status->setStatus(STATUS_FIND_Refused_OutOfResources);
                     return (QR_EC_IndexDatabaseError) ;
                 }
-                plist->next = NULL ;
                 DB_DuplicateElement (&elem, & (plist->elem)) ;
                 if (handle_->findRequestList == NULL) {
                     handle_->findRequestList = last = plist ;
@@ -2386,6 +2191,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::startMoveRequest(
 
     DB_lock(OFFalse);
 
+    CharsetConsideringMatcher dbmatch(*handle_);
     DB_IdxInitLoop (&(handle_->idxCounter)) ;
     while (1) {
 
@@ -2398,7 +2204,8 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::startMoveRequest(
         /*** If matching found
         **/
 
-        cond = hierarchicalCompare (handle_, &idxRec, qLevel, qLevel, &MatchFound) ;
+        dbmatch.setRecord(idxRec);
+        cond = hierarchicalCompare (handle_, &idxRec, qLevel, qLevel, &MatchFound, dbmatch) ;
         if (MatchFound) {
             pidxlist = (DB_CounterList *) malloc (sizeof( DB_CounterList ) ) ;
             if (pidxlist == NULL) {
@@ -2560,7 +2367,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::deleteImageFile(char* imgFile)
       return QR_EC_IndexDatabaseError;
     }
     if (dcmtk_flock(lockfd, LOCK_EX) < 0) { /* exclusive lock (blocking) */
-      DCMQRDB_WARN("DB ERROR: cannot lock image file  for deleting: " << imgFile);
+      DCMQRDB_WARN("DB ERROR: cannot lock image file for deleting: " << imgFile);
       dcmtk_plockerr("DB ERROR");
     }
 #endif
@@ -2574,7 +2381,7 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::deleteImageFile(char* imgFile)
 
 #ifdef LOCK_IMAGE_FILES
     if (dcmtk_flock(lockfd, LOCK_UN) < 0) { /* unlock */
-        DCMQRDB_WARN("DB ERROR: cannot unlock image file  for deleting: " << imgFile);
+        DCMQRDB_WARN("DB ERROR: cannot unlock image file for deleting: " << imgFile);
         dcmtk_plockerr("DB ERROR");
      }
     close(lockfd);              /* release file descriptor */
@@ -2902,8 +2709,11 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::storeRequest (
 
     DcmDataset *dset = dcmff.getDataset();
 
+    assert(dset);
+
+    OFCondition ec;
+
     for (i = 0 ; i < NBPARAMETERS ; i++ ) {
-        OFCondition ec = EC_Normal;
         DB_SmallDcmElmt *se = idxRec.param + i;
 
         const char *strPtr = NULL;
@@ -2951,7 +2761,8 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::storeRequest (
                    (strcmp(SOPClassUID, UID_MacularGridThicknessAndVolumeReportStorage) == 0) ||
                    (strcmp(SOPClassUID, UID_ImplantationPlanSRDocumentStorage) == 0) ||
                    (strcmp(SOPClassUID, UID_RadiopharmaceuticalRadiationDoseSRStorage) == 0) ||
-                   (strcmp(SOPClassUID, UID_AcquisitionContextSRStorage) == 0))
+                   (strcmp(SOPClassUID, UID_AcquisitionContextSRStorage) == 0) ||
+                   (strcmp(SOPClassUID, UID_SimplifiedAdultEchoSRStorage) == 0))
         {
             OFString string;
             OFString description = "unknown SR";
@@ -3331,7 +3142,56 @@ DcmQueryRetrieveIndexDatabaseHandle::DcmQueryRetrieveIndexDatabaseHandle(
            result = QR_EC_IndexDatabaseError;
            return;
         }
-        else {
+        else
+        {
+            result = DB_lock(OFTrue);
+            if ( result.bad() )
+                return;
+
+            // test whether the file contains more than zero bytes
+            if ( DB_lseek( handle_ -> pidx, 0L, SEEK_END ) > 0 )
+            {
+                DB_lseek( handle_ -> pidx, 0L, SEEK_SET );
+                // allocate HEADERSIZE + 1 bytes and fill it with zeros,
+                // ensuring whatever is read is terminated with a NUL byte
+                char header[DBHEADERSIZE+1] = {};
+                // 0 is an invalid version, no matter what
+                unsigned int version = 0;
+                if
+                (
+                    read( handle_ -> pidx, header, DBHEADERSIZE ) != DBHEADERSIZE ||
+                    strncmp( header, DBMAGIC, strlen(DBMAGIC) ) != 0              ||
+                    sscanf( header + strlen(DBMAGIC), "%x", &version ) != 1       ||
+                    version != DBVERSION
+                )
+                {
+                    DB_unlock();
+                    if ( version )
+                        DCMQRDB_ERROR(handle_->indexFilename << ": invalid/unsupported QRDB database version " << version);
+                    else
+                        DCMQRDB_ERROR(handle_->indexFilename << ": unknown/legacy QRDB database file format");
+                    result = QR_EC_IndexDatabaseError;
+                    return;
+                }
+            }
+            else
+            {
+                // write magic word and version number to the buffer
+                // then write it to the file
+                char header[DBHEADERSIZE];
+                sprintf( header, DBMAGIC "%.2X", DBVERSION );
+                if ( write( handle_ -> pidx, header, DBHEADERSIZE ) != DBHEADERSIZE )
+                {
+                    char buf[256];
+                    DCMQRDB_ERROR(handle_->indexFilename << ": " << OFStandard::strerror(errno, buf, sizeof(buf)));
+                    DB_unlock();
+                    result = QR_EC_IndexDatabaseError;
+                    return;
+                }
+            }
+
+            DB_unlock();
+
             handle_ -> idxCounter = -1;
             handle_ -> findRequestList = NULL;
             handle_ -> findResponseList = NULL;
@@ -3419,9 +3279,10 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::instanceReviewed(int idx)
       if (result.bad()) return result;
 
       record.hstat = DVIF_objectIsNotNew;
-      DB_lseek(handle_->pidx, OFstatic_cast(long, SIZEOF_STUDYDESC + idx * SIZEOF_IDXRECORD), SEEK_SET);
-      write(handle_->pidx, OFreinterpret_cast(char *, &record), SIZEOF_IDXRECORD);
-      DB_lseek(handle_->pidx, 0L, SEEK_SET);
+      DB_lseek(handle_->pidx, OFstatic_cast(long, DBHEADERSIZE + SIZEOF_STUDYDESC + idx * SIZEOF_IDXRECORD), SEEK_SET);
+      if (write(handle_->pidx, OFreinterpret_cast(char *, &record), SIZEOF_IDXRECORD) != SIZEOF_IDXRECORD)
+          result = QR_EC_IndexDatabaseError;
+      DB_lseek(handle_->pidx, OFstatic_cast(long, DBHEADERSIZE), SEEK_SET);
       DB_unlock();
     }
 
diff --git a/dcmqrdb/libsrc/dcmqrptb.cc b/dcmqrdb/libsrc/dcmqrptb.cc
index 419d00f..3de8cc0 100644
--- a/dcmqrdb/libsrc/dcmqrptb.cc
+++ b/dcmqrdb/libsrc/dcmqrptb.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2012, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -131,7 +131,7 @@ void DcmQueryRetrieveProcessTable::addProcessToTable(int pid, T_ASC_Association
     ASC_getPresentationAddresses(assoc->params, peerName, NULL);
     ASC_getAPTitles(assoc->params, callingAETitle, calledAETitle, NULL);
 
-    for (int i=0; i<numberOfAllDcmStorageSOPClassUIDs; i++)
+    for (int i=0; i<numberOfDcmAllStorageSOPClassUIDs; i++)
     {
       if (ASC_findAcceptedPresentationContextID(assoc, dcmAllStorageSOPClassUIDs[i]))
       {
diff --git a/dcmqrdb/libsrc/dcmqrsrv.cc b/dcmqrdb/libsrc/dcmqrsrv.cc
index d0e77fe..dbf557d 100644
--- a/dcmqrdb/libsrc/dcmqrsrv.cc
+++ b/dcmqrdb/libsrc/dcmqrsrv.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2012, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -190,7 +190,7 @@ OFCondition DcmQueryRetrieveSCP::dispatch(T_ASC_Association *assoc, OFBool corre
             }
             else
             {
-                // the condition will be returned, the caller will abort the assosiation.
+                // the condition will be returned, the caller will abort the association.
             }
         }
 
@@ -267,7 +267,7 @@ OFCondition DcmQueryRetrieveSCP::findSCP(T_ASC_Association * assoc, T_DIMSE_C_Fi
 
 {
     OFCondition cond = EC_Normal;
-    DcmQueryRetrieveFindContext context(dbHandle, options_, STATUS_Pending);
+    DcmQueryRetrieveFindContext context(dbHandle, options_, STATUS_Pending, config_->getCharacterSetOptions());
 
     DIC_AE aeTitle;
     aeTitle[0] = '\0';
@@ -400,7 +400,7 @@ OFCondition DcmQueryRetrieveSCP::storeSCP(T_ASC_Association * assoc, T_DIMSE_C_S
 
     DcmDataset *dset = dcmff.getDataset();
 
-    /* we must still retrieve the data set even if some error has occured */
+    /* we must still retrieve the data set even if some error has occurred */
 
     if (options_.bitPreserving_) { /* the bypass option can be set on the command line */
         cond = DIMSE_storeProvider(assoc, presId, request, imageFileName, (int)options_.useMetaheader_,
@@ -446,7 +446,7 @@ void DcmQueryRetrieveSCP::refuseAnyStorageContexts(T_ASC_Association * assoc)
     int i;
     T_ASC_PresentationContextID pid;
 
-    for (i = 0; i < numberOfAllDcmStorageSOPClassUIDs; i++) {
+    for (i = 0; i < numberOfDcmAllStorageSOPClassUIDs; i++) {
         do {
           pid = ASC_findAcceptedPresentationContextID(assoc, dcmAllStorageSOPClassUIDs[i]);
           if (pid != 0) ASC_refusePresentationContext(assoc->params, pid, ASC_P_USERREJECTION);
@@ -677,6 +677,30 @@ OFCondition DcmQueryRetrieveSCP::negotiateAssociation(T_ASC_Association * assoc)
         transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
         numTransferSyntaxes = 4;
         break;
+      case EXS_MPEG4HighProfileLevel4_2_For2DVideo:
+        /* we prefer MPEG4 HP/L4.2 for 2D Videos */
+        transferSyntaxes[0] = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax;
+        transferSyntaxes[1] = UID_LittleEndianExplicitTransferSyntax;
+        transferSyntaxes[2] = UID_BigEndianExplicitTransferSyntax;
+        transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
+        numTransferSyntaxes = 4;
+        break;
+      case EXS_MPEG4HighProfileLevel4_2_For3DVideo:
+        /* we prefer MPEG4 HP/L4.2 for 3D Videos */
+        transferSyntaxes[0] = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax;
+        transferSyntaxes[1] = UID_LittleEndianExplicitTransferSyntax;
+        transferSyntaxes[2] = UID_BigEndianExplicitTransferSyntax;
+        transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
+        numTransferSyntaxes = 4;
+        break;
+      case EXS_MPEG4StereoHighProfileLevel4_2:
+        /* we prefer MPEG4 Stereo HP/L4.2 */
+        transferSyntaxes[0] = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax;
+        transferSyntaxes[1] = UID_LittleEndianExplicitTransferSyntax;
+        transferSyntaxes[2] = UID_BigEndianExplicitTransferSyntax;
+        transferSyntaxes[3] = UID_LittleEndianImplicitTransferSyntax;
+        numTransferSyntaxes = 4;
+        break;
       case EXS_RLELossless:
         /* we prefer RLE Lossless */
         transferSyntaxes[0] = UID_RLELosslessTransferSyntax;
@@ -795,7 +819,7 @@ OFCondition DcmQueryRetrieveSCP::negotiateAssociation(T_ASC_Association * assoc)
       /* accept storage syntaxes with default role only */
       cond = ASC_acceptContextsWithPreferredTransferSyntaxes(
         assoc->params,
-        dcmAllStorageSOPClassUIDs, numberOfAllDcmStorageSOPClassUIDs,
+        dcmAllStorageSOPClassUIDs, numberOfDcmAllStorageSOPClassUIDs,
         (const char**)transferSyntaxes, numTransferSyntaxes);
       if (cond.bad()) {
         DCMQRDB_ERROR("Cannot accept presentation contexts: " << DimseCondition::dump(temp_str, cond));
diff --git a/dcmqrdb/libsrc/dcmqrtis.cc b/dcmqrdb/libsrc/dcmqrtis.cc
index b6a07de..72a818a 100644
--- a/dcmqrdb/libsrc/dcmqrtis.cc
+++ b/dcmqrdb/libsrc/dcmqrtis.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2012, OFFIS e.V.
+ *  Copyright (C) 1993-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -1654,7 +1654,7 @@ OFBool DcmQueryRetrieveTelnetInitiator::TI_sendImage(int arg, const char * /*cmd
 OFBool DcmQueryRetrieveTelnetInitiator::TI_send(int /*arg*/, const char *cmdbuf)
 {
     OFBool ok = OFTrue;
-    char cmdarg[128];
+    char cmdarg[1024];
     int iarg;
     int narg;
 
@@ -1814,7 +1814,7 @@ OFBool DcmQueryRetrieveTelnetInitiator::TI_buildStudies(TI_DBEntry *db)
     dbStatus.deleteStatusDetail();
 
     while (dbStatus.status() == STATUS_Pending) {
-        dbcond = db->dbHandle->nextFindResponse(&reply, &dbStatus);
+        dbcond = db->dbHandle->nextFindResponse(&reply, &dbStatus, config.getCharacterSetOptions());
         if (dbcond.bad()) {
             DCMQRDB_ERROR("TI_buildStudies: database error");
             return OFFalse;
@@ -1893,7 +1893,7 @@ OFBool DcmQueryRetrieveTelnetInitiator::TI_buildSeries(TI_DBEntry *db, TI_StudyE
     dbStatus.deleteStatusDetail();
 
     while (dbStatus.status() == STATUS_Pending) {
-        dbcond = db->dbHandle->nextFindResponse(&reply, &dbStatus);
+        dbcond = db->dbHandle->nextFindResponse(&reply, &dbStatus, config.getCharacterSetOptions());
         if (dbcond.bad()) {
             DCMQRDB_ERROR("TI_buildSeries: database error");
             return OFFalse;
@@ -1982,7 +1982,7 @@ OFBool DcmQueryRetrieveTelnetInitiator::TI_buildImages(TI_DBEntry *db, TI_StudyE
     }
 
     while (dbStatus.status() == STATUS_Pending) {
-        dbcond = db->dbHandle->nextFindResponse(&reply, &dbStatus);
+        dbcond = db->dbHandle->nextFindResponse(&reply, &dbStatus, config.getCharacterSetOptions());
         if (dbcond.bad()) {
             DCMQRDB_ERROR("TI_buildImages: database error");
             return OFFalse;
diff --git a/dcmrt/apps/Makefile.dep b/dcmrt/apps/Makefile.dep
index f9700e9..f8b1785 100644
--- a/dcmrt/apps/Makefile.dep
+++ b/dcmrt/apps/Makefile.dep
@@ -118,7 +118,8 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
@@ -128,16 +129,17 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
  ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfes.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
  ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmls.h \
- ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
- ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
@@ -151,17 +153,17 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../include/dcmtk/dcmrt/seq/drtpsss.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
  ../include/dcmtk/dcmrt/seq/drtrdros.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
  ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
@@ -183,9 +185,13 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtssrs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h ../include/dcmtk/dcmrt/drtimage.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drtimage.h \
  ../include/dcmtk/dcmrt/seq/drtcbars.h \
  ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
  ../include/dcmtk/dcmrt/seq/drtds.h ../include/dcmtk/dcmrt/seq/drtes.h \
@@ -194,8 +200,9 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
  ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \
  ../include/dcmtk/dcmrt/seq/drtmacds.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtrims.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
+ ../include/dcmtk/dcmrt/seq/drtsis.h ../include/dcmtk/dcmrt/seq/drtsins.h \
  ../include/dcmtk/dcmrt/seq/drtvls.h ../include/dcmtk/dcmrt/drtplan.h \
  ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \
  ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
@@ -225,10 +232,11 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h \
  ../include/dcmtk/dcmrt/seq/drttms9.h ../include/dcmtk/dcmrt/drtstrct.h \
  ../include/dcmtk/dcmrt/seq/drtrros.h \
- ../include/dcmtk/dcmrt/seq/drtarics.h \
  ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h \
- ../include/dcmtk/dcmrt/seq/drtrics.h ../include/dcmtk/dcmrt/seq/drtrrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrics.h \
+ ../include/dcmtk/dcmrt/seq/drtsptcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrrs.h \
  ../include/dcmtk/dcmrt/seq/drtrrros.h \
  ../include/dcmtk/dcmrt/seq/drtspccs.h ../include/dcmtk/dcmrt/drttreat.h \
  ../include/dcmtk/dcmrt/seq/drtfgss.h \
@@ -238,6 +246,7 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttscds.h \
  ../include/dcmtk/dcmrt/seq/drttsmds.h ../include/dcmtk/dcmrt/drtionpl.h \
  ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas6.h \
+ ../include/dcmtk/dcmrt/seq/drtddps.h \
  ../include/dcmtk/dcmrt/seq/drtiblds.h \
  ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
  ../include/dcmtk/dcmrt/seq/drticps.h \
@@ -258,6 +267,7 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttsibs.h \
  ../include/dcmtk/dcmrt/seq/drtas7.h \
  ../include/dcmtk/dcmrt/seq/drtbldls.h \
+ ../include/dcmtk/dcmrt/seq/drtdddps.h \
  ../include/dcmtk/dcmrt/seq/drticpds.h \
  ../include/dcmtk/dcmrt/seq/drtcpas.h \
  ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \
diff --git a/dcmrt/apps/Makefile.in b/dcmrt/apps/Makefile.in
index 63f57a8..3e2e39b 100644
--- a/dcmrt/apps/Makefile.in
+++ b/dcmrt/apps/Makefile.in
@@ -21,7 +21,7 @@ LOCALINCLUDES = -I$(dcmdatadir)/include -I$(oflogdir)/include -I$(ofstddir)/incl
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(dcmimgledir)/libsrc -L$(dcmdatadir)/libsrc \
 	-L$(oflogdir)/libsrc -L$(ofstddir)/libsrc
 LOCALLIBS = -ldcmrt -ldcmimgle -ldcmdata -loflog -lofstd \
-	$(TIFFLIBS) $(PNGLIBS) $(ZLIBLIBS) $(ICONVLIBS)
+	$(TIFFLIBS) $(PNGLIBS) $(ZLIBLIBS) $(CHARCONVLIBS)
 
 objs = drtdump.o
 progs = drtdump
diff --git a/dcmrt/include/dcmtk/dcmrt/drmimage.h b/dcmrt/include/dcmtk/dcmrt/drmimage.h
index 9431247..33f583e 100644
--- a/dcmrt/include/dcmtk/dcmrt/drmimage.h
+++ b/dcmrt/include/dcmtk/dcmrt/drmimage.h
@@ -63,7 +63,7 @@ public:
      *  instance assumes ownership of the dataset pointer and will delete it
      *  when done with it. You must not delete it yourself. This applies even
      *  when the function returns an error.
-     *  @param  dataset DICOM dataset from which the RT Image should be read
+     *  @param dataset DICOM dataset from which the RT Image should be read
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition read(DcmItem *dataset);
@@ -235,19 +235,18 @@ private:
     /// Reset this class image and DICOM object members
     virtual void reset();
 
-    /**
-     * Hide DRTImageIOD::read(). DicomImage() doesn't allow the dataset that was
-     * used for loading the image to be deleted. Thus, read() cannot work.
+    /** hide DRTImageIOD::read(). DicomImage() doesn't allow the dataset that was
+     *  used for loading the image to be deleted. Thus, read() cannot work.
+     *  @return always returns EC_IllegalCall since this method should not be called
      */
     virtual OFCondition read(DcmItem & /*dataset*/)
     {
         return EC_IllegalCall;
     }
 
-    /**
-     * Turn a status code from DicomImage into an OFCondition object.
-     * @param status status code
-     * @return OFCondition instance for the given status
+    /** turn a status code from DicomImage into an OFCondition object.
+     *  @param status status code
+     *  @return OFCondition instance for the given status
      */
     OFCondition statusToCondition(int status)
     {
diff --git a/dcmrt/include/dcmtk/dcmrt/drtdose.h b/dcmrt/include/dcmtk/dcmrt/drtdose.h
index 6f90287..9f82188 100644
--- a/dcmrt/include/dcmtk/dcmrt/drtdose.h
+++ b/dcmrt/include/dcmtk/dcmrt/drtdose.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDoseIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2016-11-23 14:23:36
  *
  */
 
@@ -23,6 +23,7 @@
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtcgis.h"   // for ContextGroupIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdvhs.h"   // for DVHSequence
@@ -31,6 +32,7 @@
 #include "dcmtk/dcmrt/seq/drtdss.h"    // for DigitalSignaturesSequence
 #include "dcmtk/dcmrt/seq/drteas.h"    // for EncryptedAttributesSequence
 #include "dcmtk/dcmrt/seq/drtfes.h"    // for FrameExtractionSequence
+#include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
 #include "dcmtk/dcmrt/seq/drtiis.h"    // for IconImageSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
@@ -38,7 +40,9 @@
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtiseis.h"  // for IssuerOfServiceEpisodeIDSequence
 #include "dcmtk/dcmrt/seq/drtmps.h"    // for MACParametersSequence
+#include "dcmtk/dcmrt/seq/drtmris.h"   // for MappingResourceIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtmls.h"    // for ModalityLUTSequence
+#include "dcmtk/dcmrt/seq/drtois.h"    // for OperatorIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtoas.h"    // for OriginalAttributesSequence
 #include "dcmtk/dcmrt/seq/drtopis.h"   // for OtherPatientIDsSequence
 #include "dcmtk/dcmrt/seq/drtpbcs.h"   // for PatientBreedCodeSequence
@@ -55,7 +59,6 @@
 #include "dcmtk/dcmrt/seq/drtrwvms.h"  // for RealWorldValueMappingSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrfors.h"  // for ReferencedFrameOfReferenceSequence
-#include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
 #include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
@@ -70,12 +73,18 @@
 #include "dcmtk/dcmrt/seq/drtras.h"    // for RequestAttributesSequence
 #include "dcmtk/dcmrt/seq/drtrscs.h"   // for RequestingServiceCodeSequence
 #include "dcmtk/dcmrt/seq/drtsdcs.h"   // for SeriesDescriptionCodeSequence
-#include "dcmtk/dcmrt/seq/drtsis.h"    // for SourceImageSequence
+#include "dcmtk/dcmrt/seq/drtspgis.h"  // for SourcePatientGroupIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtscs.h"    // for StrainCodeSequence
+#include "dcmtk/dcmrt/seq/drtsss.h"    // for StrainStockSequence
 #include "dcmtk/dcmrt/seq/drtssrs.h"   // for StructureSetROISequence
 #include "dcmtk/dcmrt/seq/drtscris.h"  // for StudiesContainingOtherReferencedInstancesSequence
+#include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 
 
 /** Interface class for RTDoseIOD
+ *  @note Because of its many member variables, an instance of this class requires quite
+ *    some memory. So be careful when creating automatic variables from this class (the
+ *    stack size might be exceeded); it is probably better to use the heap space.
  */
 class DCMTK_DCMRT_EXPORT DRTDoseIOD
   : protected DRTTypes
@@ -100,6 +109,7 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
 
     /** assigment operator
      *  @param copy IOD object to be copied
+     *  @return reference to this object
      */
     DRTDoseIOD &operator=(const DRTDoseIOD &copy);
 
@@ -349,6 +359,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getAdmittingDiagnosesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get Allergies (0010,2110)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getAllergies(OFString &value, const signed long pos = 0) const;
+
     /** get AuthorizationEquipmentCertificationNumber (0100,0426)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -489,6 +506,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getClinicalTrialTimePointID(OFString &value, const signed long pos = 0) const;
 
+    /** get ColorSpace (0028,2002)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getColorSpace(OFString &value, const signed long pos = 0) const;
+
     /** get Columns (0028,0011)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1)
@@ -579,13 +603,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getDeidentificationMethod(OFString &value, const signed long pos = 0) const;
 
-    /** get DerivationDescription (0008,2111)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getDerivationDescription(OFString &value, const signed long pos = 0) const;
-
     /** get DeviceSerialNumber (0018,1000)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -870,6 +887,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getLargestImagePixelValue(Uint16 &value, const unsigned long pos = 0) const;
 
+    /** get LastMenstrualDate (0010,21d0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getLastMenstrualDate(OFString &value, const signed long pos = 0) const;
+
     /** get LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -925,6 +949,41 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
 
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MedicalAlerts (0010,2000)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMedicalAlerts(OFString &value, const signed long pos = 0) const;
+
     /** get Modality (0008,0060)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1092,6 +1151,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getPatientAge(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientAlternativeCalendar (0010,0035)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthDate (0010,0030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1099,6 +1165,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getPatientBirthDate(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthTime (0010,0032)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1106,6 +1179,20 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getPatientBirthTime(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(OFString &value, const signed long pos = 0) const;
+
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(Float64 &value, const unsigned long pos = 0) const;
+
     /** get PatientBreedDescription (0010,2292)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1120,6 +1207,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getPatientComments(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientID (0010,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1183,6 +1277,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getPatientSpeciesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientState (0038,0500)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientState(OFString &value, const signed long pos = 0) const;
+
     /** get PatientWeight (0010,1030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1329,6 +1430,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getPositionReferenceIndicator(OFString &value, const signed long pos = 0) const;
 
+    /** get PregnancyStatus (0010,21c0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPregnancyStatus(Uint16 &value, const unsigned long pos = 0) const;
+
     /** get PresentationLUTShape (2050,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1630,6 +1738,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getSmallestImagePixelValue(Uint16 &value, const unsigned long pos = 0) const;
 
+    /** get SmokingStatus (0010,21a0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getSmokingStatus(OFString &value, const signed long pos = 0) const;
+
     /** get SoftwareVersions (0018,1020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1679,6 +1794,27 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getStereoPairsPresent(OFString &value, const signed long pos = 0) const;
 
+    /** get StrainAdditionalInformation (0010,0218)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainAdditionalInformation(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainDescription (0010,0212)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainDescription(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainNomenclature (0010,0213)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainNomenclature(OFString &value, const signed long pos = 0) const;
+
     /** get StructureSetDate (3006,0008)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1846,6 +1982,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
         { return ConsultingPhysicianIdentificationSequence; }
 
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return reference to sequence element
+     */
+    DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence()
+        { return ContextGroupIdentificationSequence; }
+
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return const reference to sequence element
+     */
+    const DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence() const
+        { return ContextGroupIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1942,6 +2090,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTFrameExtractionSequence &getFrameExtractionSequence() const
         { return FrameExtractionSequence; }
 
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return reference to sequence element
+     */
+    DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence()
+        { return GroupOfPatientsIdentificationSequence; }
+
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return const reference to sequence element
+     */
+    const DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence() const
+        { return GroupOfPatientsIdentificationSequence; }
+
     /** get HL7StructuredDocumentReferenceSequence (0040,a390)
      *  @return reference to sequence element
      */
@@ -2026,6 +2186,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTMACParametersSequence &getMACParametersSequence() const
         { return MACParametersSequence; }
 
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return reference to sequence element
+     */
+    DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence()
+        { return MappingResourceIdentificationSequence; }
+
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return const reference to sequence element
+     */
+    const DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence() const
+        { return MappingResourceIdentificationSequence; }
+
     /** get ModalityLUTSequence (0028,3000)
      *  @return reference to sequence element
      */
@@ -2038,6 +2210,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTModalityLUTSequence &getModalityLUTSequence() const
         { return ModalityLUTSequence; }
 
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return reference to sequence element
+     */
+    DRTOperatorIdentificationSequence &getOperatorIdentificationSequence()
+        { return OperatorIdentificationSequence; }
+
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return const reference to sequence element
+     */
+    const DRTOperatorIdentificationSequence &getOperatorIdentificationSequence() const
+        { return OperatorIdentificationSequence; }
+
     /** get OriginalAttributesSequence (0400,0561)
      *  @return reference to sequence element
      */
@@ -2230,18 +2414,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTReferencedFrameOfReferenceSequence &getReferencedFrameOfReferenceSequence() const
         { return ReferencedFrameOfReferenceSequence; }
 
-    /** get ReferencedImageSequence (0008,1140)
-     *  @return reference to sequence element
-     */
-    DRTReferencedImageSequence &getReferencedImageSequence()
-        { return ReferencedImageSequence; }
-
-    /** get ReferencedImageSequence (0008,1140)
-     *  @return const reference to sequence element
-     */
-    const DRTReferencedImageSequence &getReferencedImageSequence() const
-        { return ReferencedImageSequence; }
-
     /** get ReferencedInstanceSequence (0008,114a)
      *  @return reference to sequence element
      */
@@ -2410,17 +2582,41 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTSeriesDescriptionCodeSequence &getSeriesDescriptionCodeSequence() const
         { return SeriesDescriptionCodeSequence; }
 
-    /** get SourceImageSequence (0008,2112)
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return reference to sequence element
+     */
+    DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence()
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return const reference to sequence element
+     */
+    const DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence() const
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return reference to sequence element
+     */
+    DRTStrainCodeSequence &getStrainCodeSequence()
+        { return StrainCodeSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainCodeSequence &getStrainCodeSequence() const
+        { return StrainCodeSequence; }
+
+    /** get StrainStockSequence (0010,0216)
      *  @return reference to sequence element
      */
-    DRTSourceImageSequence &getSourceImageSequence()
-        { return SourceImageSequence; }
+    DRTStrainStockSequence &getStrainStockSequence()
+        { return StrainStockSequence; }
 
-    /** get SourceImageSequence (0008,2112)
+    /** get StrainStockSequence (0010,0216)
      *  @return const reference to sequence element
      */
-    const DRTSourceImageSequence &getSourceImageSequence() const
-        { return SourceImageSequence; }
+    const DRTStrainStockSequence &getStrainStockSequence() const
+        { return StrainStockSequence; }
 
     /** get StructureSetROISequence (3006,0020)
      *  @return reference to sequence element
@@ -2446,6 +2642,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTStudiesContainingOtherReferencedInstancesSequence &getStudiesContainingOtherReferencedInstancesSequence() const
         { return StudiesContainingOtherReferencedInstancesSequence; }
 
+    /** get UDISequence (0018,100a)
+     *  @return reference to sequence element
+     */
+    DRTUDISequence &getUDISequence()
+        { return UDISequence; }
+
+    /** get UDISequence (0018,100a)
+     *  @return const reference to sequence element
+     */
+    const DRTUDISequence &getUDISequence() const
+        { return UDISequence; }
+
   // --- set DICOM attribute values ---
 
     /** set AccessionNumber (0008,0050)
@@ -2504,6 +2712,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setAdmittingDiagnosesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set Allergies (0010,2110)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setAllergies(const OFString &value, const OFBool check = OFTrue);
+
     /** set AuthorizationEquipmentCertificationNumber (0100,0426)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2644,6 +2859,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setClinicalTrialTimePointID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ColorSpace (0028,2002)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setColorSpace(const OFString &value, const OFBool check = OFTrue);
+
     /** set Columns (0028,0011)
      *  @param  value  value to be set (should be valid for this VR)
      *  @param  pos    index of the value to be set (0..vm-1), vm=1
@@ -2714,13 +2936,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setDeidentificationMethod(const OFString &value, const OFBool check = OFTrue);
 
-    /** set DerivationDescription (0008,2111)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setDerivationDescription(const OFString &value, const OFBool check = OFTrue);
-
     /** set DeviceSerialNumber (0018,1000)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2945,6 +3160,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setLargestImagePixelValue(const Uint16 value, const unsigned long pos = 0);
 
+    /** set LastMenstrualDate (0010,21d0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setLastMenstrualDate(const OFString &value, const OFBool check = OFTrue);
+
     /** set LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -2987,6 +3209,27 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set MeasuredAPDimension (0010,1023)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredAPDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MeasuredLateralDimension (0010,1024)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredLateralDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MedicalAlerts (0010,2000)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMedicalAlerts(const OFString &value, const OFBool check = OFTrue);
+
     /** set Modality (0008,0060)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -3127,6 +3370,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setPatientAge(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientAlternativeCalendar (0010,0035)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthDate (0010,0030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -3134,6 +3384,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setPatientBirthDate(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthTime (0010,0032)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (TM) and VM (1) if enabled
@@ -3141,6 +3398,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setPatientBirthTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBodyMassIndex (0010,1022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBodyMassIndex(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBreedDescription (0010,2292)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -3155,6 +3419,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setPatientComments(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientID (0010,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -3211,6 +3482,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setPatientSpeciesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientState (0038,0500)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientState(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientWeight (0010,1030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -3330,6 +3608,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setPositionReferenceIndicator(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PregnancyStatus (0010,21c0)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPregnancyStatus(const Uint16 value, const unsigned long pos = 0);
+
     /** set PresentationLUTShape (2050,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -3575,6 +3860,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setSmallestImagePixelValue(const Uint16 value, const unsigned long pos = 0);
 
+    /** set SmokingStatus (0010,21a0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setSmokingStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set SoftwareVersions (0018,1020)
      *  @param  value  value to be set (possibly multi-valued) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
@@ -3617,6 +3909,27 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setStereoPairsPresent(const OFString &value, const OFBool check = OFTrue);
 
+    /** set StrainAdditionalInformation (0010,0218)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainAdditionalInformation(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainDescription (0010,0212)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainDescription(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainNomenclature (0010,0213)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainNomenclature(const OFString &value, const OFBool check = OFTrue);
+
     /** set StructureSetDate (3006,0008)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -3744,6 +4057,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
+    /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
+    DcmLongString PatientBirthDateInAlternativeCalendar;
+    /// PatientDeathDateInAlternativeCalendar (0010,0034) vr=LO, vm=1, type=3
+    DcmLongString PatientDeathDateInAlternativeCalendar;
+    /// PatientAlternativeCalendar (0010,0035) vr=CS, vm=1, type=1C
+    DcmCodeString PatientAlternativeCalendar;
     /// PatientSex (0010,0040) vr=CS, vm=1, type=2
     DcmCodeString PatientSex;
     /// ReferencedPatientPhotoSequence (0010,1100) vr=SQ, vm=1, type=3
@@ -3774,6 +4093,16 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DRTPatientBreedCodeSequence PatientBreedCodeSequence;
     /// BreedRegistrationSequence (0010,2294) vr=SQ, vm=1, type=2C
     DRTBreedRegistrationSequence BreedRegistrationSequence;
+    /// StrainDescription (0010,0212) vr=UC, vm=1, type=3
+    DcmUnlimitedCharacters StrainDescription;
+    /// StrainNomenclature (0010,0213) vr=LO, vm=1, type=3
+    DcmLongString StrainNomenclature;
+    /// StrainCodeSequence (0010,0219) vr=SQ, vm=1, type=3
+    DRTStrainCodeSequence StrainCodeSequence;
+    /// StrainAdditionalInformation (0010,0218) vr=UT, vm=1, type=3
+    DcmUnlimitedText StrainAdditionalInformation;
+    /// StrainStockSequence (0010,0216) vr=SQ, vm=1, type=3
+    DRTStrainStockSequence StrainStockSequence;
     /// ResponsiblePerson (0010,2297) vr=PN, vm=1, type=2C
     DcmPersonName ResponsiblePerson;
     /// ResponsiblePersonRole (0010,2298) vr=CS, vm=1, type=1C
@@ -3786,6 +4115,10 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmLongString DeidentificationMethod;
     /// DeidentificationMethodCodeSequence (0012,0064) vr=SQ, vm=1, type=1C
     DRTDeidentificationMethodCodeSequence DeidentificationMethodCodeSequence;
+    /// SourcePatientGroupIdentificationSequence (0010,0026) vr=SQ, vm=1, type=3
+    DRTSourcePatientGroupIdentificationSequence SourcePatientGroupIdentificationSequence;
+    /// GroupOfPatientsIdentificationSequence (0010,0027) vr=SQ, vm=1, type=3
+    DRTGroupOfPatientsIdentificationSequence GroupOfPatientsIdentificationSequence;
 
     // --- ClinicalTrialSubjectModule (U) ---
 
@@ -3861,8 +4194,26 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmDecimalString PatientSize;
     /// PatientWeight (0010,1030) vr=DS, vm=1, type=3
     DcmDecimalString PatientWeight;
+    /// PatientBodyMassIndex (0010,1022) vr=DS, vm=1, type=3
+    DcmDecimalString PatientBodyMassIndex;
+    /// MeasuredAPDimension (0010,1023) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredAPDimension;
+    /// MeasuredLateralDimension (0010,1024) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredLateralDimension;
     /// PatientSizeCodeSequence (0010,1021) vr=SQ, vm=1, type=3
     DRTPatientSizeCodeSequence PatientSizeCodeSequence;
+    /// MedicalAlerts (0010,2000) vr=LO, vm=1-n, type=3
+    DcmLongString MedicalAlerts;
+    /// Allergies (0010,2110) vr=LO, vm=1-n, type=3
+    DcmLongString Allergies;
+    /// SmokingStatus (0010,21a0) vr=CS, vm=1, type=3
+    DcmCodeString SmokingStatus;
+    /// PregnancyStatus (0010,21c0) vr=US, vm=1, type=3
+    DcmUnsignedShort PregnancyStatus;
+    /// LastMenstrualDate (0010,21d0) vr=DA, vm=1, type=3
+    DcmDate LastMenstrualDate;
+    /// PatientState (0038,0500) vr=LO, vm=1, type=3
+    DcmLongString PatientState;
     /// Occupation (0010,2180) vr=SH, vm=1, type=3
     DcmShortString Occupation;
     /// AdditionalPatientHistory (0010,21b0) vr=LT, vm=1, type=3
@@ -3907,6 +4258,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DRTSeriesDescriptionCodeSequence SeriesDescriptionCodeSequence;
     /// OperatorsName (0008,1070) vr=PN, vm=1-n, type=2
     DcmPersonName OperatorsName;
+    /// OperatorIdentificationSequence (0008,1072) vr=SQ, vm=1, type=3
+    DRTOperatorIdentificationSequence OperatorIdentificationSequence;
     /// ReferencedPerformedProcedureStepSequence (0008,1111) vr=SQ, vm=1, type=3
     DRTReferencedPerformedProcedureStepSequence ReferencedPerformedProcedureStepSequence;
     /// RequestAttributesSequence (0040,0275) vr=SQ, vm=1, type=3
@@ -3964,6 +4317,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmLongString SoftwareVersions;
     /// GantryID (0018,1008) vr=LO, vm=1, type=3
     DcmLongString GantryID;
+    /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
+    DRTUDISequence UDISequence;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -3994,18 +4349,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmTime AcquisitionTime;
     /// AcquisitionDateTime (0008,002a) vr=DT, vm=1, type=3
     DcmDateTime AcquisitionDateTime;
-    /// ReferencedImageSequence (0008,1140) vr=SQ, vm=1, type=3
-    DRTReferencedImageSequence ReferencedImageSequence;
-    /// DerivationDescription (0008,2111) vr=ST, vm=1, type=3
-    DcmShortText DerivationDescription;
-    // DerivationCodeSequence (0008,9215) vr=SQ, vm=1, type=3
-    // - also defined in: RTDoseModule
-    // DRTDerivationCodeSequence DerivationCodeSequence;
-    /// SourceImageSequence (0008,2112) vr=SQ, vm=1, type=3
-    DRTSourceImageSequence SourceImageSequence;
-    // ReferencedInstanceSequence (0008,114a) vr=SQ, vm=1, type=3
-    // - also defined in: RTDoseModule
-    // DRTReferencedInstanceSequence ReferencedInstanceSequence;
     /// ImagesInAcquisition (0020,1002) vr=IS, vm=1, type=3
     DcmIntegerString ImagesInAcquisition;
     /// ImageComments (0020,4000) vr=LT, vm=1, type=3
@@ -4068,8 +4411,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     // PixelRepresentation (0028,0103) vr=US, vm=1, type=1
     // - also defined in: RTDoseModule
     // DcmUnsignedShort PixelRepresentation;
-    /// PixelData (7fe0,0010) vr=OB/OW, vm=1, type=1C
-    DcmPixelData PixelData;
     /// PlanarConfiguration (0028,0006) vr=US, vm=1, type=1C
     DcmUnsignedShort PlanarConfiguration;
     /// PixelAspectRatio (0028,0034) vr=IS, vm=2, type=1C
@@ -4092,6 +4433,10 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmOtherByteOtherWord BluePaletteColorLookupTableData;
     /// ICCProfile (0028,2000) vr=OB, vm=1, type=3
     DcmOtherByteOtherWord ICCProfile;
+    /// ColorSpace (0028,2002) vr=CS, vm=1, type=3
+    DcmCodeString ColorSpace;
+    /// PixelData (7fe0,0010) vr=OB/OW, vm=1, type=1C
+    DcmPixelData PixelData;
     /// PixelDataProviderURL (0028,7fe0) vr=UR, vm=1, type=1C
     DcmUniversalResourceIdentifierOrLocator PixelDataProviderURL;
     /// PixelPaddingRangeLimit (0028,0121) vr=US/SS, vm=1, type=1C
@@ -4201,10 +4546,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     /// TissueHeterogeneityCorrection (3004,0014) vr=CS, vm=1-3, type=3
     DcmCodeString TissueHeterogeneityCorrection;
     /// DerivationCodeSequence (0008,9215) vr=SQ, vm=1, type=3
-    /// - also defined in: GeneralImageModule
     DRTDerivationCodeSequence DerivationCodeSequence;
     /// ReferencedInstanceSequence (0008,114a) vr=SQ, vm=1, type=3
-    /// - also defined in: GeneralImageModule
     DRTReferencedInstanceSequence ReferencedInstanceSequence;
 
     // --- RTDVHModule (U) ---
@@ -4272,6 +4615,10 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmUniqueIdentifier OriginalSpecializedSOPClassUID;
     /// CodingSchemeIdentificationSequence (0008,0110) vr=SQ, vm=1, type=3
     DRTCodingSchemeIdentificationSequence CodingSchemeIdentificationSequence;
+    /// ContextGroupIdentificationSequence (0008,0123) vr=SQ, vm=1, type=3
+    DRTContextGroupIdentificationSequence ContextGroupIdentificationSequence;
+    /// MappingResourceIdentificationSequence (0008,0124) vr=SQ, vm=1, type=3
+    DRTMappingResourceIdentificationSequence MappingResourceIdentificationSequence;
     /// TimezoneOffsetFromUTC (0008,0201) vr=SH, vm=1, type=3
     DcmShortString TimezoneOffsetFromUTC;
     /// ContributingEquipmentSequence (0018,a001) vr=SQ, vm=1, type=3
diff --git a/dcmrt/include/dcmtk/dcmrt/drtimage.h b/dcmrt/include/dcmtk/dcmrt/drtimage.h
index 3b7b154..e92f5e4 100644
--- a/dcmrt/include/dcmtk/dcmrt/drtimage.h
+++ b/dcmrt/include/dcmtk/dcmrt/drtimage.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTImageIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2016-11-23 14:23:36
  *
  */
 
@@ -23,6 +23,7 @@
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtcgis.h"   // for ContextGroupIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcbars.h"  // for ContrastBolusAdministrationRouteSequence
 #include "dcmtk/dcmrt/seq/drtbas.h"    // for ContrastBolusAgentSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
@@ -35,6 +36,7 @@
 #include "dcmtk/dcmrt/seq/drtes.h"     // for ExposureSequence
 #include "dcmtk/dcmrt/seq/drtfms.h"    // for FluenceMapSequence
 #include "dcmtk/dcmrt/seq/drtfes.h"    // for FrameExtractionSequence
+#include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
 #include "dcmtk/dcmrt/seq/drtiis.h"    // for IconImageSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
@@ -42,8 +44,10 @@
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtiseis.h"  // for IssuerOfServiceEpisodeIDSequence
 #include "dcmtk/dcmrt/seq/drtmps.h"    // for MACParametersSequence
+#include "dcmtk/dcmrt/seq/drtmris.h"   // for MappingResourceIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtmls.h"    // for ModalityLUTSequence
 #include "dcmtk/dcmrt/seq/drtmacds.h"  // for MultiplexedAudioChannelsDescriptionCodeSequence
+#include "dcmtk/dcmrt/seq/drtois.h"    // for OperatorIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtoas.h"    // for OriginalAttributesSequence
 #include "dcmtk/dcmrt/seq/drtopis.h"   // for OtherPatientIDsSequence
 #include "dcmtk/dcmrt/seq/drtpbcs.h"   // for PatientBreedCodeSequence
@@ -69,11 +73,19 @@
 #include "dcmtk/dcmrt/seq/drtrscs.h"   // for RequestingServiceCodeSequence
 #include "dcmtk/dcmrt/seq/drtsdcs.h"   // for SeriesDescriptionCodeSequence
 #include "dcmtk/dcmrt/seq/drtsis.h"    // for SourceImageSequence
+#include "dcmtk/dcmrt/seq/drtsins.h"   // for SourceInstanceSequence
+#include "dcmtk/dcmrt/seq/drtspgis.h"  // for SourcePatientGroupIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtscs.h"    // for StrainCodeSequence
+#include "dcmtk/dcmrt/seq/drtsss.h"    // for StrainStockSequence
 #include "dcmtk/dcmrt/seq/drtscris.h"  // for StudiesContainingOtherReferencedInstancesSequence
+#include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 #include "dcmtk/dcmrt/seq/drtvls.h"    // for VOILUTSequence
 
 
 /** Interface class for RTImageIOD
+ *  @note Because of its many member variables, an instance of this class requires quite
+ *    some memory. So be careful when creating automatic variables from this class (the
+ *    stack size might be exceeded); it is probably better to use the heap space.
  */
 class DCMTK_DCMRT_EXPORT DRTImageIOD
   : protected DRTTypes
@@ -98,6 +110,7 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
 
     /** assigment operator
      *  @param copy IOD object to be copied
+     *  @return reference to this object
      */
     DRTImageIOD &operator=(const DRTImageIOD &copy);
 
@@ -186,6 +199,14 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFBool isFrameOfReferenceModulePresent(const OFBool complete = OFFalse);
 
+    /** check whether GeneralReferenceModule (U) is present.
+     *  By default, a module is reported as being present if at least one attribute
+     *  from this module has a non-empty value.
+     *  @param  complete  check for all mandatory attributes of this module if enabled
+     *  @return OFTrue if module is present, OFFalse otherwise
+     */
+    virtual OFBool isGeneralReferenceModulePresent(const OFBool complete = OFFalse);
+
     /** check whether ContrastBolusModule (C) is present.
      *  By default, a module is reported as being present if at least one attribute
      *  from this module has a non-empty value.
@@ -337,6 +358,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getAdmittingDiagnosesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get Allergies (0010,2110)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getAllergies(OFString &value, const signed long pos = 0) const;
+
     /** get ApprovalStatus (300e,0002)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -512,6 +540,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getClinicalTrialTimePointID(OFString &value, const signed long pos = 0) const;
 
+    /** get ColorSpace (0028,2002)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getColorSpace(OFString &value, const signed long pos = 0) const;
+
     /** get Columns (0028,0011)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1)
@@ -741,6 +776,27 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getEthnicGroup(OFString &value, const signed long pos = 0) const;
 
+    /** get ExposureTime (0018,1150)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getExposureTime(OFString &value, const signed long pos = 0) const;
+
+    /** get ExposureTime (0018,1150)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getExposureTime(Sint32 &value, const unsigned long pos = 0) const;
+
+    /** get ExposureTimeInms (0018,9328)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getExposureTimeInms(Float64 &value, const unsigned long pos = 0) const;
+
     /** get FractionNumber (3002,0029)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1039,6 +1095,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getLargestImagePixelValue(Uint16 &value, const unsigned long pos = 0) const;
 
+    /** get LastMenstrualDate (0010,21d0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getLastMenstrualDate(OFString &value, const signed long pos = 0) const;
+
     /** get LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1094,6 +1157,55 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
 
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MedicalAlerts (0010,2000)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMedicalAlerts(OFString &value, const signed long pos = 0) const;
+
+    /** get MetersetExposure (3002,0032)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMetersetExposure(OFString &value, const signed long pos = 0) const;
+
+    /** get MetersetExposure (3002,0032)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMetersetExposure(Float64 &value, const unsigned long pos = 0) const;
+
     /** get Modality (0008,0060)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1164,6 +1276,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getPatientAge(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientAlternativeCalendar (0010,0035)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthDate (0010,0030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1171,6 +1290,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getPatientBirthDate(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthTime (0010,0032)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1178,6 +1304,20 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getPatientBirthTime(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(OFString &value, const signed long pos = 0) const;
+
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(Float64 &value, const unsigned long pos = 0) const;
+
     /** get PatientBreedDescription (0010,2292)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1192,6 +1332,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getPatientComments(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientID (0010,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1262,6 +1409,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getPatientSpeciesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientState (0038,0500)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientState(OFString &value, const signed long pos = 0) const;
+
     /** get PatientSupportAngle (300a,0122)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1423,6 +1577,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getPreferredPlaybackSequencing(Uint16 &value, const unsigned long pos = 0) const;
 
+    /** get PregnancyStatus (0010,21c0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPregnancyStatus(Uint16 &value, const unsigned long pos = 0) const;
+
     /** get PresentationLUTShape (2050,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1848,6 +2009,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getSmallestImagePixelValue(Uint16 &value, const unsigned long pos = 0) const;
 
+    /** get SmokingStatus (0010,21a0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getSmokingStatus(OFString &value, const signed long pos = 0) const;
+
     /** get SoftwareVersions (0018,1020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1946,6 +2114,27 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getStopTrim(Sint32 &value, const unsigned long pos = 0) const;
 
+    /** get StrainAdditionalInformation (0010,0218)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainAdditionalInformation(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainDescription (0010,0212)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainDescription(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainNomenclature (0010,0213)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainNomenclature(OFString &value, const signed long pos = 0) const;
+
     /** get StudyDate (0008,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -2243,6 +2432,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
         { return ConsultingPhysicianIdentificationSequence; }
 
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return reference to sequence element
+     */
+    DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence()
+        { return ContextGroupIdentificationSequence; }
+
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return const reference to sequence element
+     */
+    const DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence() const
+        { return ContextGroupIdentificationSequence; }
+
     /** get ContrastBolusAdministrationRouteSequence (0018,0014)
      *  @return reference to sequence element
      */
@@ -2387,6 +2588,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTFrameExtractionSequence &getFrameExtractionSequence() const
         { return FrameExtractionSequence; }
 
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return reference to sequence element
+     */
+    DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence()
+        { return GroupOfPatientsIdentificationSequence; }
+
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return const reference to sequence element
+     */
+    const DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence() const
+        { return GroupOfPatientsIdentificationSequence; }
+
     /** get HL7StructuredDocumentReferenceSequence (0040,a390)
      *  @return reference to sequence element
      */
@@ -2471,6 +2684,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTMACParametersSequence &getMACParametersSequence() const
         { return MACParametersSequence; }
 
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return reference to sequence element
+     */
+    DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence()
+        { return MappingResourceIdentificationSequence; }
+
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return const reference to sequence element
+     */
+    const DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence() const
+        { return MappingResourceIdentificationSequence; }
+
     /** get ModalityLUTSequence (0028,3000)
      *  @return reference to sequence element
      */
@@ -2495,6 +2720,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTMultiplexedAudioChannelsDescriptionCodeSequence &getMultiplexedAudioChannelsDescriptionCodeSequence() const
         { return MultiplexedAudioChannelsDescriptionCodeSequence; }
 
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return reference to sequence element
+     */
+    DRTOperatorIdentificationSequence &getOperatorIdentificationSequence()
+        { return OperatorIdentificationSequence; }
+
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return const reference to sequence element
+     */
+    const DRTOperatorIdentificationSequence &getOperatorIdentificationSequence() const
+        { return OperatorIdentificationSequence; }
+
     /** get OriginalAttributesSequence (0400,0561)
      *  @return reference to sequence element
      */
@@ -2795,6 +3032,54 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTSourceImageSequence &getSourceImageSequence() const
         { return SourceImageSequence; }
 
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return reference to sequence element
+     */
+    DRTSourceInstanceSequence &getSourceInstanceSequence()
+        { return SourceInstanceSequence; }
+
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return const reference to sequence element
+     */
+    const DRTSourceInstanceSequence &getSourceInstanceSequence() const
+        { return SourceInstanceSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return reference to sequence element
+     */
+    DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence()
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return const reference to sequence element
+     */
+    const DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence() const
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return reference to sequence element
+     */
+    DRTStrainCodeSequence &getStrainCodeSequence()
+        { return StrainCodeSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainCodeSequence &getStrainCodeSequence() const
+        { return StrainCodeSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return reference to sequence element
+     */
+    DRTStrainStockSequence &getStrainStockSequence()
+        { return StrainStockSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainStockSequence &getStrainStockSequence() const
+        { return StrainStockSequence; }
+
     /** get StudiesContainingOtherReferencedInstancesSequence (0008,1200)
      *  @return reference to sequence element
      */
@@ -2807,6 +3092,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTStudiesContainingOtherReferencedInstancesSequence &getStudiesContainingOtherReferencedInstancesSequence() const
         { return StudiesContainingOtherReferencedInstancesSequence; }
 
+    /** get UDISequence (0018,100a)
+     *  @return reference to sequence element
+     */
+    DRTUDISequence &getUDISequence()
+        { return UDISequence; }
+
+    /** get UDISequence (0018,100a)
+     *  @return const reference to sequence element
+     */
+    const DRTUDISequence &getUDISequence() const
+        { return UDISequence; }
+
     /** get VOILUTSequence (0028,3010)
      *  @return reference to sequence element
      */
@@ -2884,6 +3181,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setAdmittingDiagnosesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set Allergies (0010,2110)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setAllergies(const OFString &value, const OFBool check = OFTrue);
+
     /** set ApprovalStatus (300e,0002)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -3045,6 +3349,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setClinicalTrialTimePointID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ColorSpace (0028,2002)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setColorSpace(const OFString &value, const OFBool check = OFTrue);
+
     /** set Columns (0028,0011)
      *  @param  value  value to be set (should be valid for this VR)
      *  @param  pos    index of the value to be set (0..vm-1), vm=1
@@ -3213,6 +3524,20 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setEthnicGroup(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ExposureTime (0018,1150)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setExposureTime(const OFString &value, const OFBool check = OFTrue);
+
+    /** set ExposureTimeInms (0018,9328)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setExposureTimeInms(const Float64 value, const unsigned long pos = 0);
+
     /** set FractionNumber (3002,0029)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -3423,6 +3748,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setLargestImagePixelValue(const Uint16 value, const unsigned long pos = 0);
 
+    /** set LastMenstrualDate (0010,21d0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setLastMenstrualDate(const OFString &value, const OFBool check = OFTrue);
+
     /** set LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -3465,6 +3797,34 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set MeasuredAPDimension (0010,1023)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredAPDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MeasuredLateralDimension (0010,1024)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredLateralDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MedicalAlerts (0010,2000)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMedicalAlerts(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MetersetExposure (3002,0032)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMetersetExposure(const OFString &value, const OFBool check = OFTrue);
+
     /** set Modality (0008,0060)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -3528,6 +3888,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setPatientAge(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientAlternativeCalendar (0010,0035)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthDate (0010,0030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -3535,6 +3902,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setPatientBirthDate(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthTime (0010,0032)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (TM) and VM (1) if enabled
@@ -3542,6 +3916,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setPatientBirthTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBodyMassIndex (0010,1022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBodyMassIndex(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBreedDescription (0010,2292)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -3556,6 +3937,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setPatientComments(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientID (0010,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -3619,6 +4007,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setPatientSpeciesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientState (0038,0500)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientState(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientSupportAngle (300a,0122)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -3759,6 +4154,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setPreferredPlaybackSequencing(const Uint16 value, const unsigned long pos = 0);
 
+    /** set PregnancyStatus (0010,21c0)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPregnancyStatus(const Uint16 value, const unsigned long pos = 0);
+
     /** set PresentationLUTShape (2050,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -4095,6 +4497,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setSmallestImagePixelValue(const Uint16 value, const unsigned long pos = 0);
 
+    /** set SmokingStatus (0010,21a0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setSmokingStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set SoftwareVersions (0018,1020)
      *  @param  value  value to be set (possibly multi-valued) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
@@ -4158,6 +4567,27 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setStopTrim(const OFString &value, const OFBool check = OFTrue);
 
+    /** set StrainAdditionalInformation (0010,0218)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainAdditionalInformation(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainDescription (0010,0212)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainDescription(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainNomenclature (0010,0213)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainNomenclature(const OFString &value, const OFBool check = OFTrue);
+
     /** set StudyDate (0008,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -4330,6 +4760,12 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
+    /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
+    DcmLongString PatientBirthDateInAlternativeCalendar;
+    /// PatientDeathDateInAlternativeCalendar (0010,0034) vr=LO, vm=1, type=3
+    DcmLongString PatientDeathDateInAlternativeCalendar;
+    /// PatientAlternativeCalendar (0010,0035) vr=CS, vm=1, type=1C
+    DcmCodeString PatientAlternativeCalendar;
     /// PatientSex (0010,0040) vr=CS, vm=1, type=2
     DcmCodeString PatientSex;
     /// ReferencedPatientPhotoSequence (0010,1100) vr=SQ, vm=1, type=3
@@ -4360,6 +4796,16 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DRTPatientBreedCodeSequence PatientBreedCodeSequence;
     /// BreedRegistrationSequence (0010,2294) vr=SQ, vm=1, type=2C
     DRTBreedRegistrationSequence BreedRegistrationSequence;
+    /// StrainDescription (0010,0212) vr=UC, vm=1, type=3
+    DcmUnlimitedCharacters StrainDescription;
+    /// StrainNomenclature (0010,0213) vr=LO, vm=1, type=3
+    DcmLongString StrainNomenclature;
+    /// StrainCodeSequence (0010,0219) vr=SQ, vm=1, type=3
+    DRTStrainCodeSequence StrainCodeSequence;
+    /// StrainAdditionalInformation (0010,0218) vr=UT, vm=1, type=3
+    DcmUnlimitedText StrainAdditionalInformation;
+    /// StrainStockSequence (0010,0216) vr=SQ, vm=1, type=3
+    DRTStrainStockSequence StrainStockSequence;
     /// ResponsiblePerson (0010,2297) vr=PN, vm=1, type=2C
     DcmPersonName ResponsiblePerson;
     /// ResponsiblePersonRole (0010,2298) vr=CS, vm=1, type=1C
@@ -4372,6 +4818,10 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmLongString DeidentificationMethod;
     /// DeidentificationMethodCodeSequence (0012,0064) vr=SQ, vm=1, type=1C
     DRTDeidentificationMethodCodeSequence DeidentificationMethodCodeSequence;
+    /// SourcePatientGroupIdentificationSequence (0010,0026) vr=SQ, vm=1, type=3
+    DRTSourcePatientGroupIdentificationSequence SourcePatientGroupIdentificationSequence;
+    /// GroupOfPatientsIdentificationSequence (0010,0027) vr=SQ, vm=1, type=3
+    DRTGroupOfPatientsIdentificationSequence GroupOfPatientsIdentificationSequence;
 
     // --- ClinicalTrialSubjectModule (U) ---
 
@@ -4447,8 +4897,26 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmDecimalString PatientSize;
     /// PatientWeight (0010,1030) vr=DS, vm=1, type=3
     DcmDecimalString PatientWeight;
+    /// PatientBodyMassIndex (0010,1022) vr=DS, vm=1, type=3
+    DcmDecimalString PatientBodyMassIndex;
+    /// MeasuredAPDimension (0010,1023) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredAPDimension;
+    /// MeasuredLateralDimension (0010,1024) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredLateralDimension;
     /// PatientSizeCodeSequence (0010,1021) vr=SQ, vm=1, type=3
     DRTPatientSizeCodeSequence PatientSizeCodeSequence;
+    /// MedicalAlerts (0010,2000) vr=LO, vm=1-n, type=3
+    DcmLongString MedicalAlerts;
+    /// Allergies (0010,2110) vr=LO, vm=1-n, type=3
+    DcmLongString Allergies;
+    /// SmokingStatus (0010,21a0) vr=CS, vm=1, type=3
+    DcmCodeString SmokingStatus;
+    /// PregnancyStatus (0010,21c0) vr=US, vm=1, type=3
+    DcmUnsignedShort PregnancyStatus;
+    /// LastMenstrualDate (0010,21d0) vr=DA, vm=1, type=3
+    DcmDate LastMenstrualDate;
+    /// PatientState (0038,0500) vr=LO, vm=1, type=3
+    DcmLongString PatientState;
     /// Occupation (0010,2180) vr=SH, vm=1, type=3
     DcmShortString Occupation;
     /// AdditionalPatientHistory (0010,21b0) vr=LT, vm=1, type=3
@@ -4493,6 +4961,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DRTSeriesDescriptionCodeSequence SeriesDescriptionCodeSequence;
     /// OperatorsName (0008,1070) vr=PN, vm=1-n, type=2
     DcmPersonName OperatorsName;
+    /// OperatorIdentificationSequence (0008,1072) vr=SQ, vm=1, type=3
+    DRTOperatorIdentificationSequence OperatorIdentificationSequence;
     /// ReferencedPerformedProcedureStepSequence (0008,1111) vr=SQ, vm=1, type=3
     DRTReferencedPerformedProcedureStepSequence ReferencedPerformedProcedureStepSequence;
     /// RequestAttributesSequence (0040,0275) vr=SQ, vm=1, type=3
@@ -4550,6 +5020,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmLongString SoftwareVersions;
     /// GantryID (0018,1008) vr=LO, vm=1, type=3
     DcmLongString GantryID;
+    /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
+    DRTUDISequence UDISequence;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -4581,16 +5053,6 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmTime AcquisitionTime;
     /// AcquisitionDateTime (0008,002a) vr=DT, vm=1, type=3
     DcmDateTime AcquisitionDateTime;
-    /// ReferencedImageSequence (0008,1140) vr=SQ, vm=1, type=3
-    DRTReferencedImageSequence ReferencedImageSequence;
-    /// DerivationDescription (0008,2111) vr=ST, vm=1, type=3
-    DcmShortText DerivationDescription;
-    /// DerivationCodeSequence (0008,9215) vr=SQ, vm=1, type=3
-    DRTDerivationCodeSequence DerivationCodeSequence;
-    /// SourceImageSequence (0008,2112) vr=SQ, vm=1, type=3
-    DRTSourceImageSequence SourceImageSequence;
-    /// ReferencedInstanceSequence (0008,114a) vr=SQ, vm=1, type=3
-    DRTReferencedInstanceSequence ReferencedInstanceSequence;
     /// ImagesInAcquisition (0020,1002) vr=IS, vm=1, type=3
     DcmIntegerString ImagesInAcquisition;
     /// ImageComments (0020,4000) vr=LT, vm=1, type=3
@@ -4616,6 +5078,21 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     /// RealWorldValueMappingSequence (0040,9096) vr=SQ, vm=1, type=3
     DRTRealWorldValueMappingSequence RealWorldValueMappingSequence;
 
+    // --- GeneralReferenceModule (U) ---
+
+    /// ReferencedImageSequence (0008,1140) vr=SQ, vm=1, type=3
+    DRTReferencedImageSequence ReferencedImageSequence;
+    /// ReferencedInstanceSequence (0008,114a) vr=SQ, vm=1, type=3
+    DRTReferencedInstanceSequence ReferencedInstanceSequence;
+    /// DerivationDescription (0008,2111) vr=ST, vm=1, type=3
+    DcmShortText DerivationDescription;
+    /// DerivationCodeSequence (0008,9215) vr=SQ, vm=1, type=3
+    DRTDerivationCodeSequence DerivationCodeSequence;
+    /// SourceImageSequence (0008,2112) vr=SQ, vm=1, type=3
+    DRTSourceImageSequence SourceImageSequence;
+    /// SourceInstanceSequence (0042,0013) vr=SQ, vm=1, type=3
+    DRTSourceInstanceSequence SourceInstanceSequence;
+
     // --- ImagePixelModule (M) ---
 
     // SamplesPerPixel (0028,0002) vr=US, vm=1, type=1
@@ -4640,8 +5117,6 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     // PixelRepresentation (0028,0103) vr=US, vm=1, type=1
     // - also defined in: RTImageModule
     // DcmUnsignedShort PixelRepresentation;
-    /// PixelData (7fe0,0010) vr=OB/OW, vm=1, type=1C
-    DcmPixelData PixelData;
     /// PlanarConfiguration (0028,0006) vr=US, vm=1, type=1C
     DcmUnsignedShort PlanarConfiguration;
     /// PixelAspectRatio (0028,0034) vr=IS, vm=2, type=1C
@@ -4664,6 +5139,10 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmOtherByteOtherWord BluePaletteColorLookupTableData;
     /// ICCProfile (0028,2000) vr=OB, vm=1, type=3
     DcmOtherByteOtherWord ICCProfile;
+    /// ColorSpace (0028,2002) vr=CS, vm=1, type=3
+    DcmCodeString ColorSpace;
+    /// PixelData (7fe0,0010) vr=OB/OW, vm=1, type=1C
+    DcmPixelData PixelData;
     /// PixelDataProviderURL (0028,7fe0) vr=UR, vm=1, type=1C
     DcmUniversalResourceIdentifierOrLocator PixelDataProviderURL;
     /// PixelPaddingRangeLimit (0028,0121) vr=US/SS, vm=1, type=1C
@@ -4840,6 +5319,12 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmDecimalString IsocenterPosition;
     /// PatientPosition (0018,5100) vr=CS, vm=1, type=1C
     DcmCodeString PatientPosition;
+    /// ExposureTime (0018,1150) vr=IS, vm=1, type=3
+    DcmIntegerString ExposureTime;
+    /// ExposureTimeInms (0018,9328) vr=FD, vm=1, type=3
+    DcmFloatingPointDouble ExposureTimeInms;
+    /// MetersetExposure (3002,0032) vr=DS, vm=1, type=3
+    DcmDecimalString MetersetExposure;
 
     // --- ModalityLUTModule (U) ---
 
@@ -4898,6 +5383,10 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmUniqueIdentifier OriginalSpecializedSOPClassUID;
     /// CodingSchemeIdentificationSequence (0008,0110) vr=SQ, vm=1, type=3
     DRTCodingSchemeIdentificationSequence CodingSchemeIdentificationSequence;
+    /// ContextGroupIdentificationSequence (0008,0123) vr=SQ, vm=1, type=3
+    DRTContextGroupIdentificationSequence ContextGroupIdentificationSequence;
+    /// MappingResourceIdentificationSequence (0008,0124) vr=SQ, vm=1, type=3
+    DRTMappingResourceIdentificationSequence MappingResourceIdentificationSequence;
     /// TimezoneOffsetFromUTC (0008,0201) vr=SH, vm=1, type=3
     DcmShortString TimezoneOffsetFromUTC;
     /// ContributingEquipmentSequence (0018,a001) vr=SQ, vm=1, type=3
diff --git a/dcmrt/include/dcmtk/dcmrt/drtionpl.h b/dcmrt/include/dcmtk/dcmrt/drtionpl.h
index 889397d..86a1e4b 100644
--- a/dcmrt/include/dcmtk/dcmrt/drtionpl.h
+++ b/dcmrt/include/dcmtk/dcmrt/drtionpl.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2016-11-23 14:23:36
  *
  */
 
@@ -23,13 +23,16 @@
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtcgis.h"   // for ContextGroupIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
+#include "dcmtk/dcmrt/seq/drtdcs.h"    // for DerivationCodeSequence
 #include "dcmtk/dcmrt/seq/drtdss.h"    // for DigitalSignaturesSequence
 #include "dcmtk/dcmrt/seq/drtdrs.h"    // for DoseReferenceSequence
 #include "dcmtk/dcmrt/seq/drteas.h"    // for EncryptedAttributesSequence
 #include "dcmtk/dcmrt/seq/drtfgs.h"    // for FractionGroupSequence
+#include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
 #include "dcmtk/dcmrt/seq/drtibs.h"    // for IonBeamSequence
 #include "dcmtk/dcmrt/seq/drtitts.h"   // for IonToleranceTableSequence
@@ -38,6 +41,8 @@
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtiseis.h"  // for IssuerOfServiceEpisodeIDSequence
 #include "dcmtk/dcmrt/seq/drtmps.h"    // for MACParametersSequence
+#include "dcmtk/dcmrt/seq/drtmris.h"   // for MappingResourceIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtois.h"    // for OperatorIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtoas.h"    // for OriginalAttributesSequence
 #include "dcmtk/dcmrt/seq/drtopis.h"   // for OtherPatientIDsSequence
 #include "dcmtk/dcmrt/seq/drtpbcs.h"   // for PatientBreedCodeSequence
@@ -51,6 +56,8 @@
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrds.h"    // for ReferencedDoseSequence
+#include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
+#include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
@@ -62,10 +69,19 @@
 #include "dcmtk/dcmrt/seq/drtras.h"    // for RequestAttributesSequence
 #include "dcmtk/dcmrt/seq/drtrscs.h"   // for RequestingServiceCodeSequence
 #include "dcmtk/dcmrt/seq/drtsdcs.h"   // for SeriesDescriptionCodeSequence
+#include "dcmtk/dcmrt/seq/drtsis.h"    // for SourceImageSequence
+#include "dcmtk/dcmrt/seq/drtsins.h"   // for SourceInstanceSequence
+#include "dcmtk/dcmrt/seq/drtspgis.h"  // for SourcePatientGroupIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtscs.h"    // for StrainCodeSequence
+#include "dcmtk/dcmrt/seq/drtsss.h"    // for StrainStockSequence
 #include "dcmtk/dcmrt/seq/drtscris.h"  // for StudiesContainingOtherReferencedInstancesSequence
+#include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 
 
 /** Interface class for RTIonPlanIOD
+ *  @note Because of its many member variables, an instance of this class requires quite
+ *    some memory. So be careful when creating automatic variables from this class (the
+ *    stack size might be exceeded); it is probably better to use the heap space.
  */
 class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
   : protected DRTTypes
@@ -90,6 +106,7 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
 
     /** assigment operator
      *  @param copy IOD object to be copied
+     *  @return reference to this object
      */
     DRTIonPlanIOD &operator=(const DRTIonPlanIOD &copy);
 
@@ -218,6 +235,14 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFBool isApprovalModulePresent(const OFBool complete = OFFalse);
 
+    /** check whether GeneralReferenceModule (U) is present.
+     *  By default, a module is reported as being present if at least one attribute
+     *  from this module has a non-empty value.
+     *  @param  complete  check for all mandatory attributes of this module if enabled
+     *  @return OFTrue if module is present, OFFalse otherwise
+     */
+    virtual OFBool isGeneralReferenceModulePresent(const OFBool complete = OFFalse);
+
     /** check whether CommonInstanceReferenceModule (U) is present.
      *  By default, a module is reported as being present if at least one attribute
      *  from this module has a non-empty value.
@@ -256,6 +281,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getAdmittingDiagnosesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get Allergies (0010,2110)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getAllergies(OFString &value, const signed long pos = 0) const;
+
     /** get ApprovalStatus (300e,0002)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -403,6 +435,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getDeidentificationMethod(OFString &value, const signed long pos = 0) const;
 
+    /** get DerivationDescription (0008,2111)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDerivationDescription(OFString &value, const signed long pos = 0) const;
+
     /** get DeviceSerialNumber (0018,1000)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -417,6 +456,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getEthnicGroup(OFString &value, const signed long pos = 0) const;
 
+    /** get FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix (0070,030b)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getFrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(Float64 &value, const unsigned long pos = 0) const;
+
     /** get FrameOfReferenceUID (0020,0052)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -501,6 +547,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getIssuerOfPatientID(OFString &value, const signed long pos = 0) const;
 
+    /** get LastMenstrualDate (0010,21d0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getLastMenstrualDate(OFString &value, const signed long pos = 0) const;
+
     /** get LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -522,6 +575,41 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
 
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MedicalAlerts (0010,2000)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMedicalAlerts(OFString &value, const signed long pos = 0) const;
+
     /** get Modality (0008,0060)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -578,6 +666,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getPatientAge(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientAlternativeCalendar (0010,0035)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthDate (0010,0030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -585,6 +680,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getPatientBirthDate(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthTime (0010,0032)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -592,6 +694,20 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getPatientBirthTime(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(OFString &value, const signed long pos = 0) const;
+
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(Float64 &value, const unsigned long pos = 0) const;
+
     /** get PatientBreedDescription (0010,2292)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -606,6 +722,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getPatientComments(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientID (0010,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -662,6 +785,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getPatientSpeciesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientState (0038,0500)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientState(OFString &value, const signed long pos = 0) const;
+
     /** get PatientWeight (0010,1030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -746,6 +876,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getPositionReferenceIndicator(OFString &value, const signed long pos = 0) const;
 
+    /** get PregnancyStatus (0010,21c0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPregnancyStatus(Uint16 &value, const unsigned long pos = 0) const;
+
     /** get PrescriptionDescription (300a,000e)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -956,6 +1093,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getServiceEpisodeID(OFString &value, const signed long pos = 0) const;
 
+    /** get SmokingStatus (0010,21a0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getSmokingStatus(OFString &value, const signed long pos = 0) const;
+
     /** get SoftwareVersions (0018,1020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -991,6 +1135,27 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getStationName(OFString &value, const signed long pos = 0) const;
 
+    /** get StrainAdditionalInformation (0010,0218)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainAdditionalInformation(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainDescription (0010,0212)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainDescription(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainNomenclature (0010,0213)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainNomenclature(OFString &value, const signed long pos = 0) const;
+
     /** get StudyDate (0008,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1116,6 +1281,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
         { return ConsultingPhysicianIdentificationSequence; }
 
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return reference to sequence element
+     */
+    DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence()
+        { return ContextGroupIdentificationSequence; }
+
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return const reference to sequence element
+     */
+    const DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence() const
+        { return ContextGroupIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1152,6 +1329,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTDeidentificationMethodCodeSequence &getDeidentificationMethodCodeSequence() const
         { return DeidentificationMethodCodeSequence; }
 
+    /** get DerivationCodeSequence (0008,9215)
+     *  @return reference to sequence element
+     */
+    DRTDerivationCodeSequence &getDerivationCodeSequence()
+        { return DerivationCodeSequence; }
+
+    /** get DerivationCodeSequence (0008,9215)
+     *  @return const reference to sequence element
+     */
+    const DRTDerivationCodeSequence &getDerivationCodeSequence() const
+        { return DerivationCodeSequence; }
+
     /** get DigitalSignaturesSequence (fffa,fffa)
      *  @return reference to sequence element
      */
@@ -1200,6 +1389,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTFractionGroupSequence &getFractionGroupSequence() const
         { return FractionGroupSequence; }
 
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return reference to sequence element
+     */
+    DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence()
+        { return GroupOfPatientsIdentificationSequence; }
+
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return const reference to sequence element
+     */
+    const DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence() const
+        { return GroupOfPatientsIdentificationSequence; }
+
     /** get HL7StructuredDocumentReferenceSequence (0040,a390)
      *  @return reference to sequence element
      */
@@ -1296,6 +1497,30 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTMACParametersSequence &getMACParametersSequence() const
         { return MACParametersSequence; }
 
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return reference to sequence element
+     */
+    DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence()
+        { return MappingResourceIdentificationSequence; }
+
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return const reference to sequence element
+     */
+    const DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence() const
+        { return MappingResourceIdentificationSequence; }
+
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return reference to sequence element
+     */
+    DRTOperatorIdentificationSequence &getOperatorIdentificationSequence()
+        { return OperatorIdentificationSequence; }
+
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return const reference to sequence element
+     */
+    const DRTOperatorIdentificationSequence &getOperatorIdentificationSequence() const
+        { return OperatorIdentificationSequence; }
+
     /** get OriginalAttributesSequence (0400,0561)
      *  @return reference to sequence element
      */
@@ -1452,6 +1677,30 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTReferencedDoseSequence &getReferencedDoseSequence() const
         { return ReferencedDoseSequence; }
 
+    /** get ReferencedImageSequence (0008,1140)
+     *  @return reference to sequence element
+     */
+    DRTReferencedImageSequence &getReferencedImageSequence()
+        { return ReferencedImageSequence; }
+
+    /** get ReferencedImageSequence (0008,1140)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedImageSequence &getReferencedImageSequence() const
+        { return ReferencedImageSequence; }
+
+    /** get ReferencedInstanceSequence (0008,114a)
+     *  @return reference to sequence element
+     */
+    DRTReferencedInstanceSequence &getReferencedInstanceSequence()
+        { return ReferencedInstanceSequence; }
+
+    /** get ReferencedInstanceSequence (0008,114a)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedInstanceSequence &getReferencedInstanceSequence() const
+        { return ReferencedInstanceSequence; }
+
     /** get ReferencedPatientPhotoSequence (0010,1100)
      *  @return reference to sequence element
      */
@@ -1584,6 +1833,66 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTSeriesDescriptionCodeSequence &getSeriesDescriptionCodeSequence() const
         { return SeriesDescriptionCodeSequence; }
 
+    /** get SourceImageSequence (0008,2112)
+     *  @return reference to sequence element
+     */
+    DRTSourceImageSequence &getSourceImageSequence()
+        { return SourceImageSequence; }
+
+    /** get SourceImageSequence (0008,2112)
+     *  @return const reference to sequence element
+     */
+    const DRTSourceImageSequence &getSourceImageSequence() const
+        { return SourceImageSequence; }
+
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return reference to sequence element
+     */
+    DRTSourceInstanceSequence &getSourceInstanceSequence()
+        { return SourceInstanceSequence; }
+
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return const reference to sequence element
+     */
+    const DRTSourceInstanceSequence &getSourceInstanceSequence() const
+        { return SourceInstanceSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return reference to sequence element
+     */
+    DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence()
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return const reference to sequence element
+     */
+    const DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence() const
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return reference to sequence element
+     */
+    DRTStrainCodeSequence &getStrainCodeSequence()
+        { return StrainCodeSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainCodeSequence &getStrainCodeSequence() const
+        { return StrainCodeSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return reference to sequence element
+     */
+    DRTStrainStockSequence &getStrainStockSequence()
+        { return StrainStockSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainStockSequence &getStrainStockSequence() const
+        { return StrainStockSequence; }
+
     /** get StudiesContainingOtherReferencedInstancesSequence (0008,1200)
      *  @return reference to sequence element
      */
@@ -1596,6 +1905,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTStudiesContainingOtherReferencedInstancesSequence &getStudiesContainingOtherReferencedInstancesSequence() const
         { return StudiesContainingOtherReferencedInstancesSequence; }
 
+    /** get UDISequence (0018,100a)
+     *  @return reference to sequence element
+     */
+    DRTUDISequence &getUDISequence()
+        { return UDISequence; }
+
+    /** get UDISequence (0018,100a)
+     *  @return const reference to sequence element
+     */
+    const DRTUDISequence &getUDISequence() const
+        { return UDISequence; }
+
   // --- set DICOM attribute values ---
 
     /** set AccessionNumber (0008,0050)
@@ -1626,6 +1947,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setAdmittingDiagnosesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set Allergies (0010,2110)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setAllergies(const OFString &value, const OFBool check = OFTrue);
+
     /** set ApprovalStatus (300e,0002)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1773,6 +2101,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setDeidentificationMethod(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DerivationDescription (0008,2111)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDerivationDescription(const OFString &value, const OFBool check = OFTrue);
+
     /** set DeviceSerialNumber (0018,1000)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1787,6 +2122,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setEthnicGroup(const OFString &value, const OFBool check = OFTrue);
 
+    /** set FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix (0070,030b)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=16
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setFrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(const Float64 value, const unsigned long pos = 0);
+
     /** set FrameOfReferenceUID (0020,0052)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -1864,6 +2206,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setIssuerOfPatientID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set LastMenstrualDate (0010,21d0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setLastMenstrualDate(const OFString &value, const OFBool check = OFTrue);
+
     /** set LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1885,6 +2234,27 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set MeasuredAPDimension (0010,1023)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredAPDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MeasuredLateralDimension (0010,1024)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredLateralDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MedicalAlerts (0010,2000)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMedicalAlerts(const OFString &value, const OFBool check = OFTrue);
+
     /** set Modality (0008,0060)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1941,6 +2311,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setPatientAge(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientAlternativeCalendar (0010,0035)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthDate (0010,0030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -1948,6 +2325,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setPatientBirthDate(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthTime (0010,0032)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (TM) and VM (1) if enabled
@@ -1955,6 +2339,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setPatientBirthTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBodyMassIndex (0010,1022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBodyMassIndex(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBreedDescription (0010,2292)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1969,6 +2360,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setPatientComments(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientID (0010,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2018,6 +2416,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setPatientSpeciesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientState (0038,0500)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientState(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientWeight (0010,1030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -2095,6 +2500,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setPositionReferenceIndicator(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PregnancyStatus (0010,21c0)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPregnancyStatus(const Uint16 value, const unsigned long pos = 0);
+
     /** set PrescriptionDescription (300a,000e)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -2298,6 +2710,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setServiceEpisodeID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set SmokingStatus (0010,21a0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setSmokingStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set SoftwareVersions (0018,1020)
      *  @param  value  value to be set (possibly multi-valued) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
@@ -2326,6 +2745,27 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setStationName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set StrainAdditionalInformation (0010,0218)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainAdditionalInformation(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainDescription (0010,0212)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainDescription(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainNomenclature (0010,0213)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainNomenclature(const OFString &value, const OFBool check = OFTrue);
+
     /** set StudyDate (0008,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -2421,6 +2861,12 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
+    /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
+    DcmLongString PatientBirthDateInAlternativeCalendar;
+    /// PatientDeathDateInAlternativeCalendar (0010,0034) vr=LO, vm=1, type=3
+    DcmLongString PatientDeathDateInAlternativeCalendar;
+    /// PatientAlternativeCalendar (0010,0035) vr=CS, vm=1, type=1C
+    DcmCodeString PatientAlternativeCalendar;
     /// PatientSex (0010,0040) vr=CS, vm=1, type=2
     DcmCodeString PatientSex;
     /// ReferencedPatientPhotoSequence (0010,1100) vr=SQ, vm=1, type=3
@@ -2451,6 +2897,16 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DRTPatientBreedCodeSequence PatientBreedCodeSequence;
     /// BreedRegistrationSequence (0010,2294) vr=SQ, vm=1, type=2C
     DRTBreedRegistrationSequence BreedRegistrationSequence;
+    /// StrainDescription (0010,0212) vr=UC, vm=1, type=3
+    DcmUnlimitedCharacters StrainDescription;
+    /// StrainNomenclature (0010,0213) vr=LO, vm=1, type=3
+    DcmLongString StrainNomenclature;
+    /// StrainCodeSequence (0010,0219) vr=SQ, vm=1, type=3
+    DRTStrainCodeSequence StrainCodeSequence;
+    /// StrainAdditionalInformation (0010,0218) vr=UT, vm=1, type=3
+    DcmUnlimitedText StrainAdditionalInformation;
+    /// StrainStockSequence (0010,0216) vr=SQ, vm=1, type=3
+    DRTStrainStockSequence StrainStockSequence;
     /// ResponsiblePerson (0010,2297) vr=PN, vm=1, type=2C
     DcmPersonName ResponsiblePerson;
     /// ResponsiblePersonRole (0010,2298) vr=CS, vm=1, type=1C
@@ -2463,6 +2919,10 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmLongString DeidentificationMethod;
     /// DeidentificationMethodCodeSequence (0012,0064) vr=SQ, vm=1, type=1C
     DRTDeidentificationMethodCodeSequence DeidentificationMethodCodeSequence;
+    /// SourcePatientGroupIdentificationSequence (0010,0026) vr=SQ, vm=1, type=3
+    DRTSourcePatientGroupIdentificationSequence SourcePatientGroupIdentificationSequence;
+    /// GroupOfPatientsIdentificationSequence (0010,0027) vr=SQ, vm=1, type=3
+    DRTGroupOfPatientsIdentificationSequence GroupOfPatientsIdentificationSequence;
 
     // --- ClinicalTrialSubjectModule (U) ---
 
@@ -2538,8 +2998,26 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmDecimalString PatientSize;
     /// PatientWeight (0010,1030) vr=DS, vm=1, type=3
     DcmDecimalString PatientWeight;
+    /// PatientBodyMassIndex (0010,1022) vr=DS, vm=1, type=3
+    DcmDecimalString PatientBodyMassIndex;
+    /// MeasuredAPDimension (0010,1023) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredAPDimension;
+    /// MeasuredLateralDimension (0010,1024) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredLateralDimension;
     /// PatientSizeCodeSequence (0010,1021) vr=SQ, vm=1, type=3
     DRTPatientSizeCodeSequence PatientSizeCodeSequence;
+    /// MedicalAlerts (0010,2000) vr=LO, vm=1-n, type=3
+    DcmLongString MedicalAlerts;
+    /// Allergies (0010,2110) vr=LO, vm=1-n, type=3
+    DcmLongString Allergies;
+    /// SmokingStatus (0010,21a0) vr=CS, vm=1, type=3
+    DcmCodeString SmokingStatus;
+    /// PregnancyStatus (0010,21c0) vr=US, vm=1, type=3
+    DcmUnsignedShort PregnancyStatus;
+    /// LastMenstrualDate (0010,21d0) vr=DA, vm=1, type=3
+    DcmDate LastMenstrualDate;
+    /// PatientState (0038,0500) vr=LO, vm=1, type=3
+    DcmLongString PatientState;
     /// Occupation (0010,2180) vr=SH, vm=1, type=3
     DcmShortString Occupation;
     /// AdditionalPatientHistory (0010,21b0) vr=LT, vm=1, type=3
@@ -2584,6 +3062,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DRTSeriesDescriptionCodeSequence SeriesDescriptionCodeSequence;
     /// OperatorsName (0008,1070) vr=PN, vm=1-n, type=2
     DcmPersonName OperatorsName;
+    /// OperatorIdentificationSequence (0008,1072) vr=SQ, vm=1, type=3
+    DRTOperatorIdentificationSequence OperatorIdentificationSequence;
     /// ReferencedPerformedProcedureStepSequence (0008,1111) vr=SQ, vm=1, type=3
     DRTReferencedPerformedProcedureStepSequence ReferencedPerformedProcedureStepSequence;
     /// RequestAttributesSequence (0040,0275) vr=SQ, vm=1, type=3
@@ -2641,6 +3121,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmLongString SoftwareVersions;
     /// GantryID (0018,1008) vr=LO, vm=1, type=3
     DcmLongString GantryID;
+    /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
+    DRTUDISequence UDISequence;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -2679,6 +3161,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DRTReferencedDoseSequence ReferencedDoseSequence;
     /// ReferencedRTPlanSequence (300c,0002) vr=SQ, vm=1, type=3
     DRTReferencedRTPlanSequenceInRTGeneralPlanModule ReferencedRTPlanSequence;
+    /// FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix (0070,030b) vr=FD, vm=16, type=3
+    DcmFloatingPointDouble FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix;
 
     // --- RTPrescriptionModule (U) ---
 
@@ -2718,6 +3202,21 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     /// ReviewerName (300e,0008) vr=PN, vm=1, type=2C
     DcmPersonName ReviewerName;
 
+    // --- GeneralReferenceModule (U) ---
+
+    /// ReferencedImageSequence (0008,1140) vr=SQ, vm=1, type=3
+    DRTReferencedImageSequence ReferencedImageSequence;
+    /// ReferencedInstanceSequence (0008,114a) vr=SQ, vm=1, type=3
+    DRTReferencedInstanceSequence ReferencedInstanceSequence;
+    /// DerivationDescription (0008,2111) vr=ST, vm=1, type=3
+    DcmShortText DerivationDescription;
+    /// DerivationCodeSequence (0008,9215) vr=SQ, vm=1, type=3
+    DRTDerivationCodeSequence DerivationCodeSequence;
+    /// SourceImageSequence (0008,2112) vr=SQ, vm=1, type=3
+    DRTSourceImageSequence SourceImageSequence;
+    /// SourceInstanceSequence (0042,0013) vr=SQ, vm=1, type=3
+    DRTSourceInstanceSequence SourceInstanceSequence;
+
     // --- SOPCommonModule (M) ---
 
     /// SOPClassUID (0008,0016) vr=UI, vm=1, type=1
@@ -2740,6 +3239,10 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmUniqueIdentifier OriginalSpecializedSOPClassUID;
     /// CodingSchemeIdentificationSequence (0008,0110) vr=SQ, vm=1, type=3
     DRTCodingSchemeIdentificationSequence CodingSchemeIdentificationSequence;
+    /// ContextGroupIdentificationSequence (0008,0123) vr=SQ, vm=1, type=3
+    DRTContextGroupIdentificationSequence ContextGroupIdentificationSequence;
+    /// MappingResourceIdentificationSequence (0008,0124) vr=SQ, vm=1, type=3
+    DRTMappingResourceIdentificationSequence MappingResourceIdentificationSequence;
     /// TimezoneOffsetFromUTC (0008,0201) vr=SH, vm=1, type=3
     DcmShortString TimezoneOffsetFromUTC;
     /// ContributingEquipmentSequence (0018,a001) vr=SQ, vm=1, type=3
diff --git a/dcmrt/include/dcmtk/dcmrt/drtiontr.h b/dcmrt/include/dcmtk/dcmrt/drtiontr.h
index 546f92c..2d912f7 100644
--- a/dcmrt/include/dcmtk/dcmrt/drtiontr.h
+++ b/dcmrt/include/dcmtk/dcmrt/drtiontr.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamsTreatmentRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2016-11-23 14:23:36
  *
  */
 
@@ -24,19 +24,24 @@
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtcgis.h"   // for ContextGroupIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
+#include "dcmtk/dcmrt/seq/drtdcs.h"    // for DerivationCodeSequence
 #include "dcmtk/dcmrt/seq/drtdss.h"    // for DigitalSignaturesSequence
 #include "dcmtk/dcmrt/seq/drteas.h"    // for EncryptedAttributesSequence
 #include "dcmtk/dcmrt/seq/drtfgss.h"   // for FractionGroupSummarySequence
+#include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
 #include "dcmtk/dcmrt/seq/drtiais.h"   // for IssuerOfAdmissionIDSequence
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtiseis.h"  // for IssuerOfServiceEpisodeIDSequence
 #include "dcmtk/dcmrt/seq/drtmps.h"    // for MACParametersSequence
+#include "dcmtk/dcmrt/seq/drtmris.h"   // for MappingResourceIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtmdrs.h"   // for MeasuredDoseReferenceSequence
+#include "dcmtk/dcmrt/seq/drtois.h"    // for OperatorIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtoas.h"    // for OriginalAttributesSequence
 #include "dcmtk/dcmrt/seq/drtopis.h"   // for OtherPatientIDsSequence
 #include "dcmtk/dcmrt/seq/drtpbcs.h"   // for PatientBreedCodeSequence
@@ -49,6 +54,8 @@
 #include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
+#include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
+#include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
@@ -60,14 +67,23 @@
 #include "dcmtk/dcmrt/seq/drtras.h"    // for RequestAttributesSequence
 #include "dcmtk/dcmrt/seq/drtrscs.h"   // for RequestingServiceCodeSequence
 #include "dcmtk/dcmrt/seq/drtsdcs.h"   // for SeriesDescriptionCodeSequence
+#include "dcmtk/dcmrt/seq/drtsis.h"    // for SourceImageSequence
+#include "dcmtk/dcmrt/seq/drtsins.h"   // for SourceInstanceSequence
+#include "dcmtk/dcmrt/seq/drtspgis.h"  // for SourcePatientGroupIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtscs.h"    // for StrainCodeSequence
+#include "dcmtk/dcmrt/seq/drtsss.h"    // for StrainStockSequence
 #include "dcmtk/dcmrt/seq/drtscris.h"  // for StudiesContainingOtherReferencedInstancesSequence
 #include "dcmtk/dcmrt/seq/drttms0.h"   // for TreatmentMachineSequence
 #include "dcmtk/dcmrt/seq/drttsibs.h"  // for TreatmentSessionIonBeamSequence
 #include "dcmtk/dcmrt/seq/drttscds.h"  // for TreatmentSummaryCalculatedDoseReferenceSequence
 #include "dcmtk/dcmrt/seq/drttsmds.h"  // for TreatmentSummaryMeasuredDoseReferenceSequence
+#include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 
 
 /** Interface class for RTIonBeamsTreatmentRecordIOD
+ *  @note Because of its many member variables, an instance of this class requires quite
+ *    some memory. So be careful when creating automatic variables from this class (the
+ *    stack size might be exceeded); it is probably better to use the heap space.
  */
 class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
   : protected DRTTypes
@@ -92,6 +108,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
 
     /** assigment operator
      *  @param copy IOD object to be copied
+     *  @return reference to this object
      */
     DRTIonBeamsTreatmentRecordIOD &operator=(const DRTIonBeamsTreatmentRecordIOD &copy);
 
@@ -204,6 +221,14 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFBool isRTTreatmentSummaryRecordModulePresent(const OFBool complete = OFFalse);
 
+    /** check whether GeneralReferenceModule (U) is present.
+     *  By default, a module is reported as being present if at least one attribute
+     *  from this module has a non-empty value.
+     *  @param  complete  check for all mandatory attributes of this module if enabled
+     *  @return OFTrue if module is present, OFFalse otherwise
+     */
+    virtual OFBool isGeneralReferenceModulePresent(const OFBool complete = OFFalse);
+
     /** check whether CommonInstanceReferenceModule (U) is present.
      *  By default, a module is reported as being present if at least one attribute
      *  from this module has a non-empty value.
@@ -242,6 +267,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getAdmittingDiagnosesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get Allergies (0010,2110)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getAllergies(OFString &value, const signed long pos = 0) const;
+
     /** get AuthorizationEquipmentCertificationNumber (0100,0426)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -389,6 +421,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getDeidentificationMethod(OFString &value, const signed long pos = 0) const;
 
+    /** get DerivationDescription (0008,2111)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDerivationDescription(OFString &value, const signed long pos = 0) const;
+
     /** get DeviceSerialNumber (0018,1000)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -487,6 +526,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getIssuerOfPatientID(OFString &value, const signed long pos = 0) const;
 
+    /** get LastMenstrualDate (0010,21d0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getLastMenstrualDate(OFString &value, const signed long pos = 0) const;
+
     /** get LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -508,6 +554,41 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
 
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MedicalAlerts (0010,2000)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMedicalAlerts(OFString &value, const signed long pos = 0) const;
+
     /** get Modality (0008,0060)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -585,6 +666,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getPatientAge(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientAlternativeCalendar (0010,0035)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthDate (0010,0030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -592,6 +680,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getPatientBirthDate(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthTime (0010,0032)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -599,6 +694,20 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getPatientBirthTime(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(OFString &value, const signed long pos = 0) const;
+
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(Float64 &value, const unsigned long pos = 0) const;
+
     /** get PatientBreedDescription (0010,2292)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -613,6 +722,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getPatientComments(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientID (0010,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -669,6 +785,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getPatientSpeciesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientState (0038,0500)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientState(OFString &value, const signed long pos = 0) const;
+
     /** get PatientWeight (0010,1030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -739,6 +862,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getPixelPaddingValue(Uint16 &value, const unsigned long pos = 0) const;
 
+    /** get PregnancyStatus (0010,21c0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPregnancyStatus(Uint16 &value, const unsigned long pos = 0) const;
+
     /** get PrimaryDosimeterUnit (300a,00b3)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -900,6 +1030,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getServiceEpisodeID(OFString &value, const signed long pos = 0) const;
 
+    /** get SmokingStatus (0010,21a0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getSmokingStatus(OFString &value, const signed long pos = 0) const;
+
     /** get SoftwareVersions (0018,1020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -935,6 +1072,27 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getStationName(OFString &value, const signed long pos = 0) const;
 
+    /** get StrainAdditionalInformation (0010,0218)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainAdditionalInformation(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainDescription (0010,0212)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainDescription(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainNomenclature (0010,0213)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainNomenclature(OFString &value, const signed long pos = 0) const;
+
     /** get StudyDate (0008,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1079,6 +1237,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
         { return ConsultingPhysicianIdentificationSequence; }
 
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return reference to sequence element
+     */
+    DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence()
+        { return ContextGroupIdentificationSequence; }
+
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return const reference to sequence element
+     */
+    const DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence() const
+        { return ContextGroupIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1115,6 +1285,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTDeidentificationMethodCodeSequence &getDeidentificationMethodCodeSequence() const
         { return DeidentificationMethodCodeSequence; }
 
+    /** get DerivationCodeSequence (0008,9215)
+     *  @return reference to sequence element
+     */
+    DRTDerivationCodeSequence &getDerivationCodeSequence()
+        { return DerivationCodeSequence; }
+
+    /** get DerivationCodeSequence (0008,9215)
+     *  @return const reference to sequence element
+     */
+    const DRTDerivationCodeSequence &getDerivationCodeSequence() const
+        { return DerivationCodeSequence; }
+
     /** get DigitalSignaturesSequence (fffa,fffa)
      *  @return reference to sequence element
      */
@@ -1151,6 +1333,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTFractionGroupSummarySequence &getFractionGroupSummarySequence() const
         { return FractionGroupSummarySequence; }
 
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return reference to sequence element
+     */
+    DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence()
+        { return GroupOfPatientsIdentificationSequence; }
+
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return const reference to sequence element
+     */
+    const DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence() const
+        { return GroupOfPatientsIdentificationSequence; }
+
     /** get HL7StructuredDocumentReferenceSequence (0040,a390)
      *  @return reference to sequence element
      */
@@ -1223,6 +1417,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTMACParametersSequence &getMACParametersSequence() const
         { return MACParametersSequence; }
 
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return reference to sequence element
+     */
+    DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence()
+        { return MappingResourceIdentificationSequence; }
+
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return const reference to sequence element
+     */
+    const DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence() const
+        { return MappingResourceIdentificationSequence; }
+
     /** get MeasuredDoseReferenceSequence (3008,0010)
      *  @return reference to sequence element
      */
@@ -1235,6 +1441,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTMeasuredDoseReferenceSequence &getMeasuredDoseReferenceSequence() const
         { return MeasuredDoseReferenceSequence; }
 
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return reference to sequence element
+     */
+    DRTOperatorIdentificationSequence &getOperatorIdentificationSequence()
+        { return OperatorIdentificationSequence; }
+
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return const reference to sequence element
+     */
+    const DRTOperatorIdentificationSequence &getOperatorIdentificationSequence() const
+        { return OperatorIdentificationSequence; }
+
     /** get OriginalAttributesSequence (0400,0561)
      *  @return reference to sequence element
      */
@@ -1379,6 +1597,30 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const
         { return ReasonForPerformedProcedureCodeSequence; }
 
+    /** get ReferencedImageSequence (0008,1140)
+     *  @return reference to sequence element
+     */
+    DRTReferencedImageSequence &getReferencedImageSequence()
+        { return ReferencedImageSequence; }
+
+    /** get ReferencedImageSequence (0008,1140)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedImageSequence &getReferencedImageSequence() const
+        { return ReferencedImageSequence; }
+
+    /** get ReferencedInstanceSequence (0008,114a)
+     *  @return reference to sequence element
+     */
+    DRTReferencedInstanceSequence &getReferencedInstanceSequence()
+        { return ReferencedInstanceSequence; }
+
+    /** get ReferencedInstanceSequence (0008,114a)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedInstanceSequence &getReferencedInstanceSequence() const
+        { return ReferencedInstanceSequence; }
+
     /** get ReferencedPatientPhotoSequence (0010,1100)
      *  @return reference to sequence element
      */
@@ -1511,6 +1753,66 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTSeriesDescriptionCodeSequence &getSeriesDescriptionCodeSequence() const
         { return SeriesDescriptionCodeSequence; }
 
+    /** get SourceImageSequence (0008,2112)
+     *  @return reference to sequence element
+     */
+    DRTSourceImageSequence &getSourceImageSequence()
+        { return SourceImageSequence; }
+
+    /** get SourceImageSequence (0008,2112)
+     *  @return const reference to sequence element
+     */
+    const DRTSourceImageSequence &getSourceImageSequence() const
+        { return SourceImageSequence; }
+
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return reference to sequence element
+     */
+    DRTSourceInstanceSequence &getSourceInstanceSequence()
+        { return SourceInstanceSequence; }
+
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return const reference to sequence element
+     */
+    const DRTSourceInstanceSequence &getSourceInstanceSequence() const
+        { return SourceInstanceSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return reference to sequence element
+     */
+    DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence()
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return const reference to sequence element
+     */
+    const DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence() const
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return reference to sequence element
+     */
+    DRTStrainCodeSequence &getStrainCodeSequence()
+        { return StrainCodeSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainCodeSequence &getStrainCodeSequence() const
+        { return StrainCodeSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return reference to sequence element
+     */
+    DRTStrainStockSequence &getStrainStockSequence()
+        { return StrainStockSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainStockSequence &getStrainStockSequence() const
+        { return StrainStockSequence; }
+
     /** get StudiesContainingOtherReferencedInstancesSequence (0008,1200)
      *  @return reference to sequence element
      */
@@ -1571,6 +1873,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTTreatmentSummaryMeasuredDoseReferenceSequence &getTreatmentSummaryMeasuredDoseReferenceSequence() const
         { return TreatmentSummaryMeasuredDoseReferenceSequence; }
 
+    /** get UDISequence (0018,100a)
+     *  @return reference to sequence element
+     */
+    DRTUDISequence &getUDISequence()
+        { return UDISequence; }
+
+    /** get UDISequence (0018,100a)
+     *  @return const reference to sequence element
+     */
+    const DRTUDISequence &getUDISequence() const
+        { return UDISequence; }
+
   // --- set DICOM attribute values ---
 
     /** set AccessionNumber (0008,0050)
@@ -1601,6 +1915,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setAdmittingDiagnosesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set Allergies (0010,2110)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setAllergies(const OFString &value, const OFBool check = OFTrue);
+
     /** set AuthorizationEquipmentCertificationNumber (0100,0426)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1748,6 +2069,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setDeidentificationMethod(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DerivationDescription (0008,2111)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDerivationDescription(const OFString &value, const OFBool check = OFTrue);
+
     /** set DeviceSerialNumber (0018,1000)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1839,6 +2167,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setIssuerOfPatientID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set LastMenstrualDate (0010,21d0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setLastMenstrualDate(const OFString &value, const OFBool check = OFTrue);
+
     /** set LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1860,6 +2195,27 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set MeasuredAPDimension (0010,1023)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredAPDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MeasuredLateralDimension (0010,1024)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredLateralDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MedicalAlerts (0010,2000)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMedicalAlerts(const OFString &value, const OFBool check = OFTrue);
+
     /** set Modality (0008,0060)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1930,6 +2286,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setPatientAge(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientAlternativeCalendar (0010,0035)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthDate (0010,0030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -1937,6 +2300,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setPatientBirthDate(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthTime (0010,0032)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (TM) and VM (1) if enabled
@@ -1944,6 +2314,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setPatientBirthTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBodyMassIndex (0010,1022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBodyMassIndex(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBreedDescription (0010,2292)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1958,6 +2335,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setPatientComments(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientID (0010,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2007,6 +2391,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setPatientSpeciesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientState (0038,0500)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientState(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientWeight (0010,1030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -2070,6 +2461,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setPixelPaddingValue(const Uint16 value, const unsigned long pos = 0);
 
+    /** set PregnancyStatus (0010,21c0)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPregnancyStatus(const Uint16 value, const unsigned long pos = 0);
+
     /** set PrimaryDosimeterUnit (300a,00b3)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -2217,6 +2615,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setServiceEpisodeID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set SmokingStatus (0010,21a0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setSmokingStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set SoftwareVersions (0018,1020)
      *  @param  value  value to be set (possibly multi-valued) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
@@ -2245,6 +2650,27 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setStationName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set StrainAdditionalInformation (0010,0218)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainAdditionalInformation(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainDescription (0010,0212)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainDescription(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainNomenclature (0010,0213)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainNomenclature(const OFString &value, const OFBool check = OFTrue);
+
     /** set StudyDate (0008,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -2347,6 +2773,12 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
+    /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
+    DcmLongString PatientBirthDateInAlternativeCalendar;
+    /// PatientDeathDateInAlternativeCalendar (0010,0034) vr=LO, vm=1, type=3
+    DcmLongString PatientDeathDateInAlternativeCalendar;
+    /// PatientAlternativeCalendar (0010,0035) vr=CS, vm=1, type=1C
+    DcmCodeString PatientAlternativeCalendar;
     /// PatientSex (0010,0040) vr=CS, vm=1, type=2
     DcmCodeString PatientSex;
     /// ReferencedPatientPhotoSequence (0010,1100) vr=SQ, vm=1, type=3
@@ -2377,6 +2809,16 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DRTPatientBreedCodeSequence PatientBreedCodeSequence;
     /// BreedRegistrationSequence (0010,2294) vr=SQ, vm=1, type=2C
     DRTBreedRegistrationSequence BreedRegistrationSequence;
+    /// StrainDescription (0010,0212) vr=UC, vm=1, type=3
+    DcmUnlimitedCharacters StrainDescription;
+    /// StrainNomenclature (0010,0213) vr=LO, vm=1, type=3
+    DcmLongString StrainNomenclature;
+    /// StrainCodeSequence (0010,0219) vr=SQ, vm=1, type=3
+    DRTStrainCodeSequence StrainCodeSequence;
+    /// StrainAdditionalInformation (0010,0218) vr=UT, vm=1, type=3
+    DcmUnlimitedText StrainAdditionalInformation;
+    /// StrainStockSequence (0010,0216) vr=SQ, vm=1, type=3
+    DRTStrainStockSequence StrainStockSequence;
     /// ResponsiblePerson (0010,2297) vr=PN, vm=1, type=2C
     DcmPersonName ResponsiblePerson;
     /// ResponsiblePersonRole (0010,2298) vr=CS, vm=1, type=1C
@@ -2389,6 +2831,10 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmLongString DeidentificationMethod;
     /// DeidentificationMethodCodeSequence (0012,0064) vr=SQ, vm=1, type=1C
     DRTDeidentificationMethodCodeSequence DeidentificationMethodCodeSequence;
+    /// SourcePatientGroupIdentificationSequence (0010,0026) vr=SQ, vm=1, type=3
+    DRTSourcePatientGroupIdentificationSequence SourcePatientGroupIdentificationSequence;
+    /// GroupOfPatientsIdentificationSequence (0010,0027) vr=SQ, vm=1, type=3
+    DRTGroupOfPatientsIdentificationSequence GroupOfPatientsIdentificationSequence;
 
     // --- ClinicalTrialSubjectModule (U) ---
 
@@ -2473,8 +2919,26 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmDecimalString PatientSize;
     /// PatientWeight (0010,1030) vr=DS, vm=1, type=3
     DcmDecimalString PatientWeight;
+    /// PatientBodyMassIndex (0010,1022) vr=DS, vm=1, type=3
+    DcmDecimalString PatientBodyMassIndex;
+    /// MeasuredAPDimension (0010,1023) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredAPDimension;
+    /// MeasuredLateralDimension (0010,1024) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredLateralDimension;
     /// PatientSizeCodeSequence (0010,1021) vr=SQ, vm=1, type=3
     DRTPatientSizeCodeSequence PatientSizeCodeSequence;
+    /// MedicalAlerts (0010,2000) vr=LO, vm=1-n, type=3
+    DcmLongString MedicalAlerts;
+    /// Allergies (0010,2110) vr=LO, vm=1-n, type=3
+    DcmLongString Allergies;
+    /// SmokingStatus (0010,21a0) vr=CS, vm=1, type=3
+    DcmCodeString SmokingStatus;
+    /// PregnancyStatus (0010,21c0) vr=US, vm=1, type=3
+    DcmUnsignedShort PregnancyStatus;
+    /// LastMenstrualDate (0010,21d0) vr=DA, vm=1, type=3
+    DcmDate LastMenstrualDate;
+    /// PatientState (0038,0500) vr=LO, vm=1, type=3
+    DcmLongString PatientState;
     /// Occupation (0010,2180) vr=SH, vm=1, type=3
     DcmShortString Occupation;
     /// AdditionalPatientHistory (0010,21b0) vr=LT, vm=1, type=3
@@ -2510,6 +2974,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DRTSeriesDescriptionCodeSequence SeriesDescriptionCodeSequence;
     /// OperatorsName (0008,1070) vr=PN, vm=1-n, type=2
     DcmPersonName OperatorsName;
+    /// OperatorIdentificationSequence (0008,1072) vr=SQ, vm=1, type=3
+    DRTOperatorIdentificationSequence OperatorIdentificationSequence;
     /// ReferencedPerformedProcedureStepSequence (0008,1111) vr=SQ, vm=1, type=3
     DRTReferencedPerformedProcedureStepSequence ReferencedPerformedProcedureStepSequence;
     /// RequestAttributesSequence (0040,0275) vr=SQ, vm=1, type=3
@@ -2560,6 +3026,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmLongString SoftwareVersions;
     /// GantryID (0018,1008) vr=LO, vm=1, type=3
     DcmLongString GantryID;
+    /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
+    DRTUDISequence UDISequence;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -2631,6 +3099,21 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     /// TreatmentSummaryCalculatedDoseReferenceSequence (3008,0050) vr=SQ, vm=1, type=3
     DRTTreatmentSummaryCalculatedDoseReferenceSequence TreatmentSummaryCalculatedDoseReferenceSequence;
 
+    // --- GeneralReferenceModule (U) ---
+
+    /// ReferencedImageSequence (0008,1140) vr=SQ, vm=1, type=3
+    DRTReferencedImageSequence ReferencedImageSequence;
+    /// ReferencedInstanceSequence (0008,114a) vr=SQ, vm=1, type=3
+    DRTReferencedInstanceSequence ReferencedInstanceSequence;
+    /// DerivationDescription (0008,2111) vr=ST, vm=1, type=3
+    DcmShortText DerivationDescription;
+    /// DerivationCodeSequence (0008,9215) vr=SQ, vm=1, type=3
+    DRTDerivationCodeSequence DerivationCodeSequence;
+    /// SourceImageSequence (0008,2112) vr=SQ, vm=1, type=3
+    DRTSourceImageSequence SourceImageSequence;
+    /// SourceInstanceSequence (0042,0013) vr=SQ, vm=1, type=3
+    DRTSourceInstanceSequence SourceInstanceSequence;
+
     // --- SOPCommonModule (M) ---
 
     /// SOPClassUID (0008,0016) vr=UI, vm=1, type=1
@@ -2653,6 +3136,10 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmUniqueIdentifier OriginalSpecializedSOPClassUID;
     /// CodingSchemeIdentificationSequence (0008,0110) vr=SQ, vm=1, type=3
     DRTCodingSchemeIdentificationSequence CodingSchemeIdentificationSequence;
+    /// ContextGroupIdentificationSequence (0008,0123) vr=SQ, vm=1, type=3
+    DRTContextGroupIdentificationSequence ContextGroupIdentificationSequence;
+    /// MappingResourceIdentificationSequence (0008,0124) vr=SQ, vm=1, type=3
+    DRTMappingResourceIdentificationSequence MappingResourceIdentificationSequence;
     /// TimezoneOffsetFromUTC (0008,0201) vr=SH, vm=1, type=3
     DcmShortString TimezoneOffsetFromUTC;
     /// ContributingEquipmentSequence (0018,a001) vr=SQ, vm=1, type=3
diff --git a/dcmrt/include/dcmtk/dcmrt/drtplan.h b/dcmrt/include/dcmtk/dcmrt/drtplan.h
index cc7ed76..241b286 100644
--- a/dcmrt/include/dcmtk/dcmrt/drtplan.h
+++ b/dcmrt/include/dcmtk/dcmrt/drtplan.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2016-11-23 14:23:36
  *
  */
 
@@ -25,19 +25,24 @@
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtcgis.h"   // for ContextGroupIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
+#include "dcmtk/dcmrt/seq/drtdcs.h"    // for DerivationCodeSequence
 #include "dcmtk/dcmrt/seq/drtdss.h"    // for DigitalSignaturesSequence
 #include "dcmtk/dcmrt/seq/drtdrs.h"    // for DoseReferenceSequence
 #include "dcmtk/dcmrt/seq/drteas.h"    // for EncryptedAttributesSequence
 #include "dcmtk/dcmrt/seq/drtfgs.h"    // for FractionGroupSequence
+#include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
 #include "dcmtk/dcmrt/seq/drtiais.h"   // for IssuerOfAdmissionIDSequence
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtiseis.h"  // for IssuerOfServiceEpisodeIDSequence
 #include "dcmtk/dcmrt/seq/drtmps.h"    // for MACParametersSequence
+#include "dcmtk/dcmrt/seq/drtmris.h"   // for MappingResourceIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtois.h"    // for OperatorIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtoas.h"    // for OriginalAttributesSequence
 #include "dcmtk/dcmrt/seq/drtopis.h"   // for OtherPatientIDsSequence
 #include "dcmtk/dcmrt/seq/drtpbcs.h"   // for PatientBreedCodeSequence
@@ -51,6 +56,8 @@
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrds.h"    // for ReferencedDoseSequence
+#include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
+#include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
@@ -62,13 +69,22 @@
 #include "dcmtk/dcmrt/seq/drtras.h"    // for RequestAttributesSequence
 #include "dcmtk/dcmrt/seq/drtrscs.h"   // for RequestingServiceCodeSequence
 #include "dcmtk/dcmrt/seq/drtsdcs.h"   // for SeriesDescriptionCodeSequence
+#include "dcmtk/dcmrt/seq/drtsis.h"    // for SourceImageSequence
+#include "dcmtk/dcmrt/seq/drtsins.h"   // for SourceInstanceSequence
+#include "dcmtk/dcmrt/seq/drtspgis.h"  // for SourcePatientGroupIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtss.h"     // for SourceSequence
+#include "dcmtk/dcmrt/seq/drtscs.h"    // for StrainCodeSequence
+#include "dcmtk/dcmrt/seq/drtsss.h"    // for StrainStockSequence
 #include "dcmtk/dcmrt/seq/drtscris.h"  // for StudiesContainingOtherReferencedInstancesSequence
 #include "dcmtk/dcmrt/seq/drttts.h"    // for ToleranceTableSequence
 #include "dcmtk/dcmrt/seq/drttms9.h"   // for TreatmentMachineSequence
+#include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 
 
 /** Interface class for RTPlanIOD
+ *  @note Because of its many member variables, an instance of this class requires quite
+ *    some memory. So be careful when creating automatic variables from this class (the
+ *    stack size might be exceeded); it is probably better to use the heap space.
  */
 class DCMTK_DCMRT_EXPORT DRTPlanIOD
   : protected DRTTypes
@@ -93,6 +109,7 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
 
     /** assigment operator
      *  @param copy IOD object to be copied
+     *  @return reference to this object
      */
     DRTPlanIOD &operator=(const DRTPlanIOD &copy);
 
@@ -237,6 +254,14 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFBool isApprovalModulePresent(const OFBool complete = OFFalse);
 
+    /** check whether GeneralReferenceModule (U) is present.
+     *  By default, a module is reported as being present if at least one attribute
+     *  from this module has a non-empty value.
+     *  @param  complete  check for all mandatory attributes of this module if enabled
+     *  @return OFTrue if module is present, OFFalse otherwise
+     */
+    virtual OFBool isGeneralReferenceModulePresent(const OFBool complete = OFFalse);
+
     /** check whether CommonInstanceReferenceModule (U) is present.
      *  By default, a module is reported as being present if at least one attribute
      *  from this module has a non-empty value.
@@ -275,6 +300,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getAdmittingDiagnosesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get Allergies (0010,2110)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getAllergies(OFString &value, const signed long pos = 0) const;
+
     /** get ApprovalStatus (300e,0002)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -436,6 +468,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getDeidentificationMethod(OFString &value, const signed long pos = 0) const;
 
+    /** get DerivationDescription (0008,2111)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDerivationDescription(OFString &value, const signed long pos = 0) const;
+
     /** get DeviceSerialNumber (0018,1000)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -450,6 +489,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getEthnicGroup(OFString &value, const signed long pos = 0) const;
 
+    /** get FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix (0070,030b)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getFrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(Float64 &value, const unsigned long pos = 0) const;
+
     /** get FrameOfReferenceUID (0020,0052)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -534,6 +580,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getIssuerOfPatientID(OFString &value, const signed long pos = 0) const;
 
+    /** get LastMenstrualDate (0010,21d0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getLastMenstrualDate(OFString &value, const signed long pos = 0) const;
+
     /** get LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -555,6 +608,41 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
 
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MedicalAlerts (0010,2000)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMedicalAlerts(OFString &value, const signed long pos = 0) const;
+
     /** get Modality (0008,0060)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -611,6 +699,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getPatientAge(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientAlternativeCalendar (0010,0035)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthDate (0010,0030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -618,6 +713,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getPatientBirthDate(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthTime (0010,0032)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -625,6 +727,20 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getPatientBirthTime(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(OFString &value, const signed long pos = 0) const;
+
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(Float64 &value, const unsigned long pos = 0) const;
+
     /** get PatientBreedDescription (0010,2292)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -639,6 +755,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getPatientComments(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientID (0010,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -695,6 +818,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getPatientSpeciesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientState (0038,0500)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientState(OFString &value, const signed long pos = 0) const;
+
     /** get PatientWeight (0010,1030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -779,6 +909,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getPositionReferenceIndicator(OFString &value, const signed long pos = 0) const;
 
+    /** get PregnancyStatus (0010,21c0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPregnancyStatus(Uint16 &value, const unsigned long pos = 0) const;
+
     /** get PrescriptionDescription (300a,000e)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -989,6 +1126,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getServiceEpisodeID(OFString &value, const signed long pos = 0) const;
 
+    /** get SmokingStatus (0010,21a0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getSmokingStatus(OFString &value, const signed long pos = 0) const;
+
     /** get SoftwareVersions (0018,1020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1024,6 +1168,27 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getStationName(OFString &value, const signed long pos = 0) const;
 
+    /** get StrainAdditionalInformation (0010,0218)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainAdditionalInformation(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainDescription (0010,0212)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainDescription(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainNomenclature (0010,0213)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainNomenclature(OFString &value, const signed long pos = 0) const;
+
     /** get StudyDate (0008,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1173,6 +1338,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
         { return ConsultingPhysicianIdentificationSequence; }
 
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return reference to sequence element
+     */
+    DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence()
+        { return ContextGroupIdentificationSequence; }
+
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return const reference to sequence element
+     */
+    const DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence() const
+        { return ContextGroupIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1209,6 +1386,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTDeidentificationMethodCodeSequence &getDeidentificationMethodCodeSequence() const
         { return DeidentificationMethodCodeSequence; }
 
+    /** get DerivationCodeSequence (0008,9215)
+     *  @return reference to sequence element
+     */
+    DRTDerivationCodeSequence &getDerivationCodeSequence()
+        { return DerivationCodeSequence; }
+
+    /** get DerivationCodeSequence (0008,9215)
+     *  @return const reference to sequence element
+     */
+    const DRTDerivationCodeSequence &getDerivationCodeSequence() const
+        { return DerivationCodeSequence; }
+
     /** get DigitalSignaturesSequence (fffa,fffa)
      *  @return reference to sequence element
      */
@@ -1257,6 +1446,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTFractionGroupSequence &getFractionGroupSequence() const
         { return FractionGroupSequence; }
 
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return reference to sequence element
+     */
+    DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence()
+        { return GroupOfPatientsIdentificationSequence; }
+
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return const reference to sequence element
+     */
+    const DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence() const
+        { return GroupOfPatientsIdentificationSequence; }
+
     /** get HL7StructuredDocumentReferenceSequence (0040,a390)
      *  @return reference to sequence element
      */
@@ -1329,6 +1530,30 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTMACParametersSequence &getMACParametersSequence() const
         { return MACParametersSequence; }
 
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return reference to sequence element
+     */
+    DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence()
+        { return MappingResourceIdentificationSequence; }
+
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return const reference to sequence element
+     */
+    const DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence() const
+        { return MappingResourceIdentificationSequence; }
+
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return reference to sequence element
+     */
+    DRTOperatorIdentificationSequence &getOperatorIdentificationSequence()
+        { return OperatorIdentificationSequence; }
+
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return const reference to sequence element
+     */
+    const DRTOperatorIdentificationSequence &getOperatorIdentificationSequence() const
+        { return OperatorIdentificationSequence; }
+
     /** get OriginalAttributesSequence (0400,0561)
      *  @return reference to sequence element
      */
@@ -1485,6 +1710,30 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTReferencedDoseSequence &getReferencedDoseSequence() const
         { return ReferencedDoseSequence; }
 
+    /** get ReferencedImageSequence (0008,1140)
+     *  @return reference to sequence element
+     */
+    DRTReferencedImageSequence &getReferencedImageSequence()
+        { return ReferencedImageSequence; }
+
+    /** get ReferencedImageSequence (0008,1140)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedImageSequence &getReferencedImageSequence() const
+        { return ReferencedImageSequence; }
+
+    /** get ReferencedInstanceSequence (0008,114a)
+     *  @return reference to sequence element
+     */
+    DRTReferencedInstanceSequence &getReferencedInstanceSequence()
+        { return ReferencedInstanceSequence; }
+
+    /** get ReferencedInstanceSequence (0008,114a)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedInstanceSequence &getReferencedInstanceSequence() const
+        { return ReferencedInstanceSequence; }
+
     /** get ReferencedPatientPhotoSequence (0010,1100)
      *  @return reference to sequence element
      */
@@ -1617,6 +1866,42 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTSeriesDescriptionCodeSequence &getSeriesDescriptionCodeSequence() const
         { return SeriesDescriptionCodeSequence; }
 
+    /** get SourceImageSequence (0008,2112)
+     *  @return reference to sequence element
+     */
+    DRTSourceImageSequence &getSourceImageSequence()
+        { return SourceImageSequence; }
+
+    /** get SourceImageSequence (0008,2112)
+     *  @return const reference to sequence element
+     */
+    const DRTSourceImageSequence &getSourceImageSequence() const
+        { return SourceImageSequence; }
+
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return reference to sequence element
+     */
+    DRTSourceInstanceSequence &getSourceInstanceSequence()
+        { return SourceInstanceSequence; }
+
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return const reference to sequence element
+     */
+    const DRTSourceInstanceSequence &getSourceInstanceSequence() const
+        { return SourceInstanceSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return reference to sequence element
+     */
+    DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence()
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return const reference to sequence element
+     */
+    const DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence() const
+        { return SourcePatientGroupIdentificationSequence; }
+
     /** get SourceSequence (300a,0210)
      *  @return reference to sequence element
      */
@@ -1629,6 +1914,30 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTSourceSequence &getSourceSequence() const
         { return SourceSequence; }
 
+    /** get StrainCodeSequence (0010,0219)
+     *  @return reference to sequence element
+     */
+    DRTStrainCodeSequence &getStrainCodeSequence()
+        { return StrainCodeSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainCodeSequence &getStrainCodeSequence() const
+        { return StrainCodeSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return reference to sequence element
+     */
+    DRTStrainStockSequence &getStrainStockSequence()
+        { return StrainStockSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainStockSequence &getStrainStockSequence() const
+        { return StrainStockSequence; }
+
     /** get StudiesContainingOtherReferencedInstancesSequence (0008,1200)
      *  @return reference to sequence element
      */
@@ -1665,6 +1974,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &getTreatmentMachineSequence() const
         { return TreatmentMachineSequence; }
 
+    /** get UDISequence (0018,100a)
+     *  @return reference to sequence element
+     */
+    DRTUDISequence &getUDISequence()
+        { return UDISequence; }
+
+    /** get UDISequence (0018,100a)
+     *  @return const reference to sequence element
+     */
+    const DRTUDISequence &getUDISequence() const
+        { return UDISequence; }
+
   // --- set DICOM attribute values ---
 
     /** set AccessionNumber (0008,0050)
@@ -1695,6 +2016,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setAdmittingDiagnosesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set Allergies (0010,2110)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setAllergies(const OFString &value, const OFBool check = OFTrue);
+
     /** set ApprovalStatus (300e,0002)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1856,6 +2184,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setDeidentificationMethod(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DerivationDescription (0008,2111)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDerivationDescription(const OFString &value, const OFBool check = OFTrue);
+
     /** set DeviceSerialNumber (0018,1000)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1870,6 +2205,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setEthnicGroup(const OFString &value, const OFBool check = OFTrue);
 
+    /** set FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix (0070,030b)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=16
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setFrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(const Float64 value, const unsigned long pos = 0);
+
     /** set FrameOfReferenceUID (0020,0052)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -1947,6 +2289,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setIssuerOfPatientID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set LastMenstrualDate (0010,21d0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setLastMenstrualDate(const OFString &value, const OFBool check = OFTrue);
+
     /** set LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1968,6 +2317,27 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set MeasuredAPDimension (0010,1023)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredAPDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MeasuredLateralDimension (0010,1024)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredLateralDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MedicalAlerts (0010,2000)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMedicalAlerts(const OFString &value, const OFBool check = OFTrue);
+
     /** set Modality (0008,0060)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -2024,6 +2394,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setPatientAge(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientAlternativeCalendar (0010,0035)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthDate (0010,0030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -2031,6 +2408,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setPatientBirthDate(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthTime (0010,0032)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (TM) and VM (1) if enabled
@@ -2038,6 +2422,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setPatientBirthTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBodyMassIndex (0010,1022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBodyMassIndex(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBreedDescription (0010,2292)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2052,6 +2443,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setPatientComments(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientID (0010,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2101,6 +2499,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setPatientSpeciesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientState (0038,0500)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientState(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientWeight (0010,1030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -2178,6 +2583,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setPositionReferenceIndicator(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PregnancyStatus (0010,21c0)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPregnancyStatus(const Uint16 value, const unsigned long pos = 0);
+
     /** set PrescriptionDescription (300a,000e)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -2381,6 +2793,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setServiceEpisodeID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set SmokingStatus (0010,21a0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setSmokingStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set SoftwareVersions (0018,1020)
      *  @param  value  value to be set (possibly multi-valued) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
@@ -2409,6 +2828,27 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setStationName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set StrainAdditionalInformation (0010,0218)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainAdditionalInformation(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainDescription (0010,0212)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainDescription(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainNomenclature (0010,0213)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainNomenclature(const OFString &value, const OFBool check = OFTrue);
+
     /** set StudyDate (0008,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -2504,6 +2944,12 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
+    /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
+    DcmLongString PatientBirthDateInAlternativeCalendar;
+    /// PatientDeathDateInAlternativeCalendar (0010,0034) vr=LO, vm=1, type=3
+    DcmLongString PatientDeathDateInAlternativeCalendar;
+    /// PatientAlternativeCalendar (0010,0035) vr=CS, vm=1, type=1C
+    DcmCodeString PatientAlternativeCalendar;
     /// PatientSex (0010,0040) vr=CS, vm=1, type=2
     DcmCodeString PatientSex;
     /// ReferencedPatientPhotoSequence (0010,1100) vr=SQ, vm=1, type=3
@@ -2534,6 +2980,16 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DRTPatientBreedCodeSequence PatientBreedCodeSequence;
     /// BreedRegistrationSequence (0010,2294) vr=SQ, vm=1, type=2C
     DRTBreedRegistrationSequence BreedRegistrationSequence;
+    /// StrainDescription (0010,0212) vr=UC, vm=1, type=3
+    DcmUnlimitedCharacters StrainDescription;
+    /// StrainNomenclature (0010,0213) vr=LO, vm=1, type=3
+    DcmLongString StrainNomenclature;
+    /// StrainCodeSequence (0010,0219) vr=SQ, vm=1, type=3
+    DRTStrainCodeSequence StrainCodeSequence;
+    /// StrainAdditionalInformation (0010,0218) vr=UT, vm=1, type=3
+    DcmUnlimitedText StrainAdditionalInformation;
+    /// StrainStockSequence (0010,0216) vr=SQ, vm=1, type=3
+    DRTStrainStockSequence StrainStockSequence;
     /// ResponsiblePerson (0010,2297) vr=PN, vm=1, type=2C
     DcmPersonName ResponsiblePerson;
     /// ResponsiblePersonRole (0010,2298) vr=CS, vm=1, type=1C
@@ -2546,6 +3002,10 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmLongString DeidentificationMethod;
     /// DeidentificationMethodCodeSequence (0012,0064) vr=SQ, vm=1, type=1C
     DRTDeidentificationMethodCodeSequence DeidentificationMethodCodeSequence;
+    /// SourcePatientGroupIdentificationSequence (0010,0026) vr=SQ, vm=1, type=3
+    DRTSourcePatientGroupIdentificationSequence SourcePatientGroupIdentificationSequence;
+    /// GroupOfPatientsIdentificationSequence (0010,0027) vr=SQ, vm=1, type=3
+    DRTGroupOfPatientsIdentificationSequence GroupOfPatientsIdentificationSequence;
 
     // --- ClinicalTrialSubjectModule (U) ---
 
@@ -2621,8 +3081,26 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmDecimalString PatientSize;
     /// PatientWeight (0010,1030) vr=DS, vm=1, type=3
     DcmDecimalString PatientWeight;
+    /// PatientBodyMassIndex (0010,1022) vr=DS, vm=1, type=3
+    DcmDecimalString PatientBodyMassIndex;
+    /// MeasuredAPDimension (0010,1023) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredAPDimension;
+    /// MeasuredLateralDimension (0010,1024) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredLateralDimension;
     /// PatientSizeCodeSequence (0010,1021) vr=SQ, vm=1, type=3
     DRTPatientSizeCodeSequence PatientSizeCodeSequence;
+    /// MedicalAlerts (0010,2000) vr=LO, vm=1-n, type=3
+    DcmLongString MedicalAlerts;
+    /// Allergies (0010,2110) vr=LO, vm=1-n, type=3
+    DcmLongString Allergies;
+    /// SmokingStatus (0010,21a0) vr=CS, vm=1, type=3
+    DcmCodeString SmokingStatus;
+    /// PregnancyStatus (0010,21c0) vr=US, vm=1, type=3
+    DcmUnsignedShort PregnancyStatus;
+    /// LastMenstrualDate (0010,21d0) vr=DA, vm=1, type=3
+    DcmDate LastMenstrualDate;
+    /// PatientState (0038,0500) vr=LO, vm=1, type=3
+    DcmLongString PatientState;
     /// Occupation (0010,2180) vr=SH, vm=1, type=3
     DcmShortString Occupation;
     /// AdditionalPatientHistory (0010,21b0) vr=LT, vm=1, type=3
@@ -2667,6 +3145,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DRTSeriesDescriptionCodeSequence SeriesDescriptionCodeSequence;
     /// OperatorsName (0008,1070) vr=PN, vm=1-n, type=2
     DcmPersonName OperatorsName;
+    /// OperatorIdentificationSequence (0008,1072) vr=SQ, vm=1, type=3
+    DRTOperatorIdentificationSequence OperatorIdentificationSequence;
     /// ReferencedPerformedProcedureStepSequence (0008,1111) vr=SQ, vm=1, type=3
     DRTReferencedPerformedProcedureStepSequence ReferencedPerformedProcedureStepSequence;
     /// RequestAttributesSequence (0040,0275) vr=SQ, vm=1, type=3
@@ -2724,6 +3204,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmLongString SoftwareVersions;
     /// GantryID (0018,1008) vr=LO, vm=1, type=3
     DcmLongString GantryID;
+    /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
+    DRTUDISequence UDISequence;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -2762,6 +3244,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DRTReferencedDoseSequence ReferencedDoseSequence;
     /// ReferencedRTPlanSequence (300c,0002) vr=SQ, vm=1, type=3
     DRTReferencedRTPlanSequenceInRTGeneralPlanModule ReferencedRTPlanSequence;
+    /// FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix (0070,030b) vr=FD, vm=16, type=3
+    DcmFloatingPointDouble FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix;
 
     // --- RTPrescriptionModule (U) ---
 
@@ -2814,6 +3298,21 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     /// ReviewerName (300e,0008) vr=PN, vm=1, type=2C
     DcmPersonName ReviewerName;
 
+    // --- GeneralReferenceModule (U) ---
+
+    /// ReferencedImageSequence (0008,1140) vr=SQ, vm=1, type=3
+    DRTReferencedImageSequence ReferencedImageSequence;
+    /// ReferencedInstanceSequence (0008,114a) vr=SQ, vm=1, type=3
+    DRTReferencedInstanceSequence ReferencedInstanceSequence;
+    /// DerivationDescription (0008,2111) vr=ST, vm=1, type=3
+    DcmShortText DerivationDescription;
+    /// DerivationCodeSequence (0008,9215) vr=SQ, vm=1, type=3
+    DRTDerivationCodeSequence DerivationCodeSequence;
+    /// SourceImageSequence (0008,2112) vr=SQ, vm=1, type=3
+    DRTSourceImageSequence SourceImageSequence;
+    /// SourceInstanceSequence (0042,0013) vr=SQ, vm=1, type=3
+    DRTSourceInstanceSequence SourceInstanceSequence;
+
     // --- SOPCommonModule (M) ---
 
     /// SOPClassUID (0008,0016) vr=UI, vm=1, type=1
@@ -2836,6 +3335,10 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmUniqueIdentifier OriginalSpecializedSOPClassUID;
     /// CodingSchemeIdentificationSequence (0008,0110) vr=SQ, vm=1, type=3
     DRTCodingSchemeIdentificationSequence CodingSchemeIdentificationSequence;
+    /// ContextGroupIdentificationSequence (0008,0123) vr=SQ, vm=1, type=3
+    DRTContextGroupIdentificationSequence ContextGroupIdentificationSequence;
+    /// MappingResourceIdentificationSequence (0008,0124) vr=SQ, vm=1, type=3
+    DRTMappingResourceIdentificationSequence MappingResourceIdentificationSequence;
     /// TimezoneOffsetFromUTC (0008,0201) vr=SH, vm=1, type=3
     DcmShortString TimezoneOffsetFromUTC;
     /// ContributingEquipmentSequence (0018,a001) vr=SQ, vm=1, type=3
diff --git a/dcmrt/include/dcmtk/dcmrt/drtstrct.h b/dcmrt/include/dcmtk/dcmrt/drtstrct.h
index 21948f8..7b2d9cf 100644
--- a/dcmrt/include/dcmtk/dcmrt/drtstrct.h
+++ b/dcmrt/include/dcmtk/dcmrt/drtstrct.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStructureSetIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2016-11-23 14:23:36
  *
  */
 
@@ -23,17 +23,22 @@
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtcgis.h"   // for ContextGroupIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
+#include "dcmtk/dcmrt/seq/drtdcs.h"    // for DerivationCodeSequence
 #include "dcmtk/dcmrt/seq/drtdss.h"    // for DigitalSignaturesSequence
 #include "dcmtk/dcmrt/seq/drteas.h"    // for EncryptedAttributesSequence
+#include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
 #include "dcmtk/dcmrt/seq/drtiais.h"   // for IssuerOfAdmissionIDSequence
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtiseis.h"  // for IssuerOfServiceEpisodeIDSequence
 #include "dcmtk/dcmrt/seq/drtmps.h"    // for MACParametersSequence
+#include "dcmtk/dcmrt/seq/drtmris.h"   // for MappingResourceIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtois.h"    // for OperatorIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtoas.h"    // for OriginalAttributesSequence
 #include "dcmtk/dcmrt/seq/drtopis.h"   // for OtherPatientIDsSequence
 #include "dcmtk/dcmrt/seq/drtpbcs.h"   // for PatientBreedCodeSequence
@@ -49,6 +54,8 @@
 #include "dcmtk/dcmrt/seq/drtrros.h"   // for RTROIObservationsSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrfors.h"  // for ReferencedFrameOfReferenceSequence
+#include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
+#include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
@@ -58,11 +65,20 @@
 #include "dcmtk/dcmrt/seq/drtras.h"    // for RequestAttributesSequence
 #include "dcmtk/dcmrt/seq/drtrscs.h"   // for RequestingServiceCodeSequence
 #include "dcmtk/dcmrt/seq/drtsdcs.h"   // for SeriesDescriptionCodeSequence
+#include "dcmtk/dcmrt/seq/drtsis.h"    // for SourceImageSequence
+#include "dcmtk/dcmrt/seq/drtsins.h"   // for SourceInstanceSequence
+#include "dcmtk/dcmrt/seq/drtspgis.h"  // for SourcePatientGroupIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtscs.h"    // for StrainCodeSequence
+#include "dcmtk/dcmrt/seq/drtsss.h"    // for StrainStockSequence
 #include "dcmtk/dcmrt/seq/drtssrs.h"   // for StructureSetROISequence
 #include "dcmtk/dcmrt/seq/drtscris.h"  // for StudiesContainingOtherReferencedInstancesSequence
+#include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 
 
 /** Interface class for RTStructureSetIOD
+ *  @note Because of its many member variables, an instance of this class requires quite
+ *    some memory. So be careful when creating automatic variables from this class (the
+ *    stack size might be exceeded); it is probably better to use the heap space.
  */
 class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
   : protected DRTTypes
@@ -87,6 +103,7 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
 
     /** assigment operator
      *  @param copy IOD object to be copied
+     *  @return reference to this object
      */
     DRTStructureSetIOD &operator=(const DRTStructureSetIOD &copy);
 
@@ -183,6 +200,14 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFBool isApprovalModulePresent(const OFBool complete = OFFalse);
 
+    /** check whether GeneralReferenceModule (U) is present.
+     *  By default, a module is reported as being present if at least one attribute
+     *  from this module has a non-empty value.
+     *  @param  complete  check for all mandatory attributes of this module if enabled
+     *  @return OFTrue if module is present, OFFalse otherwise
+     */
+    virtual OFBool isGeneralReferenceModulePresent(const OFBool complete = OFFalse);
+
     /** check whether CommonInstanceReferenceModule (U) is present.
      *  By default, a module is reported as being present if at least one attribute
      *  from this module has a non-empty value.
@@ -221,6 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getAdmittingDiagnosesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get Allergies (0010,2110)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getAllergies(OFString &value, const signed long pos = 0) const;
+
     /** get ApprovalStatus (300e,0002)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -368,6 +400,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getDeidentificationMethod(OFString &value, const signed long pos = 0) const;
 
+    /** get DerivationDescription (0008,2111)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDerivationDescription(OFString &value, const signed long pos = 0) const;
+
     /** get DeviceSerialNumber (0018,1000)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -466,6 +505,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getIssuerOfPatientID(OFString &value, const signed long pos = 0) const;
 
+    /** get LastMenstrualDate (0010,21d0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getLastMenstrualDate(OFString &value, const signed long pos = 0) const;
+
     /** get LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -487,6 +533,41 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
 
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MedicalAlerts (0010,2000)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMedicalAlerts(OFString &value, const signed long pos = 0) const;
+
     /** get Modality (0008,0060)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -543,6 +624,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getPatientAge(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientAlternativeCalendar (0010,0035)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthDate (0010,0030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -550,6 +638,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getPatientBirthDate(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthTime (0010,0032)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -557,6 +652,20 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getPatientBirthTime(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(OFString &value, const signed long pos = 0) const;
+
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(Float64 &value, const unsigned long pos = 0) const;
+
     /** get PatientBreedDescription (0010,2292)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -571,6 +680,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getPatientComments(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientID (0010,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -627,6 +743,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getPatientSpeciesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientState (0038,0500)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientState(OFString &value, const signed long pos = 0) const;
+
     /** get PatientWeight (0010,1030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -704,6 +827,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getPositionReferenceIndicator(OFString &value, const signed long pos = 0) const;
 
+    /** get PregnancyStatus (0010,21c0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPregnancyStatus(Uint16 &value, const unsigned long pos = 0) const;
+
     /** get QualityControlSubject (0010,0200)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -865,6 +995,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getServiceEpisodeID(OFString &value, const signed long pos = 0) const;
 
+    /** get SmokingStatus (0010,21a0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getSmokingStatus(OFString &value, const signed long pos = 0) const;
+
     /** get SoftwareVersions (0018,1020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -900,6 +1037,27 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getStationName(OFString &value, const signed long pos = 0) const;
 
+    /** get StrainAdditionalInformation (0010,0218)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainAdditionalInformation(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainDescription (0010,0212)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainDescription(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainNomenclature (0010,0213)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainNomenclature(OFString &value, const signed long pos = 0) const;
+
     /** get StructureSetDate (3006,0008)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1046,6 +1204,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
         { return ConsultingPhysicianIdentificationSequence; }
 
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return reference to sequence element
+     */
+    DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence()
+        { return ContextGroupIdentificationSequence; }
+
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return const reference to sequence element
+     */
+    const DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence() const
+        { return ContextGroupIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1082,6 +1252,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTDeidentificationMethodCodeSequence &getDeidentificationMethodCodeSequence() const
         { return DeidentificationMethodCodeSequence; }
 
+    /** get DerivationCodeSequence (0008,9215)
+     *  @return reference to sequence element
+     */
+    DRTDerivationCodeSequence &getDerivationCodeSequence()
+        { return DerivationCodeSequence; }
+
+    /** get DerivationCodeSequence (0008,9215)
+     *  @return const reference to sequence element
+     */
+    const DRTDerivationCodeSequence &getDerivationCodeSequence() const
+        { return DerivationCodeSequence; }
+
     /** get DigitalSignaturesSequence (fffa,fffa)
      *  @return reference to sequence element
      */
@@ -1106,6 +1288,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTEncryptedAttributesSequence &getEncryptedAttributesSequence() const
         { return EncryptedAttributesSequence; }
 
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return reference to sequence element
+     */
+    DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence()
+        { return GroupOfPatientsIdentificationSequence; }
+
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return const reference to sequence element
+     */
+    const DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence() const
+        { return GroupOfPatientsIdentificationSequence; }
+
     /** get HL7StructuredDocumentReferenceSequence (0040,a390)
      *  @return reference to sequence element
      */
@@ -1178,6 +1372,30 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTMACParametersSequence &getMACParametersSequence() const
         { return MACParametersSequence; }
 
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return reference to sequence element
+     */
+    DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence()
+        { return MappingResourceIdentificationSequence; }
+
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return const reference to sequence element
+     */
+    const DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence() const
+        { return MappingResourceIdentificationSequence; }
+
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return reference to sequence element
+     */
+    DRTOperatorIdentificationSequence &getOperatorIdentificationSequence()
+        { return OperatorIdentificationSequence; }
+
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return const reference to sequence element
+     */
+    const DRTOperatorIdentificationSequence &getOperatorIdentificationSequence() const
+        { return OperatorIdentificationSequence; }
+
     /** get OriginalAttributesSequence (0400,0561)
      *  @return reference to sequence element
      */
@@ -1358,6 +1576,30 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTReferencedFrameOfReferenceSequence &getReferencedFrameOfReferenceSequence() const
         { return ReferencedFrameOfReferenceSequence; }
 
+    /** get ReferencedImageSequence (0008,1140)
+     *  @return reference to sequence element
+     */
+    DRTReferencedImageSequence &getReferencedImageSequence()
+        { return ReferencedImageSequence; }
+
+    /** get ReferencedImageSequence (0008,1140)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedImageSequence &getReferencedImageSequence() const
+        { return ReferencedImageSequence; }
+
+    /** get ReferencedInstanceSequence (0008,114a)
+     *  @return reference to sequence element
+     */
+    DRTReferencedInstanceSequence &getReferencedInstanceSequence()
+        { return ReferencedInstanceSequence; }
+
+    /** get ReferencedInstanceSequence (0008,114a)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedInstanceSequence &getReferencedInstanceSequence() const
+        { return ReferencedInstanceSequence; }
+
     /** get ReferencedPatientPhotoSequence (0010,1100)
      *  @return reference to sequence element
      */
@@ -1466,6 +1708,66 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTSeriesDescriptionCodeSequence &getSeriesDescriptionCodeSequence() const
         { return SeriesDescriptionCodeSequence; }
 
+    /** get SourceImageSequence (0008,2112)
+     *  @return reference to sequence element
+     */
+    DRTSourceImageSequence &getSourceImageSequence()
+        { return SourceImageSequence; }
+
+    /** get SourceImageSequence (0008,2112)
+     *  @return const reference to sequence element
+     */
+    const DRTSourceImageSequence &getSourceImageSequence() const
+        { return SourceImageSequence; }
+
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return reference to sequence element
+     */
+    DRTSourceInstanceSequence &getSourceInstanceSequence()
+        { return SourceInstanceSequence; }
+
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return const reference to sequence element
+     */
+    const DRTSourceInstanceSequence &getSourceInstanceSequence() const
+        { return SourceInstanceSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return reference to sequence element
+     */
+    DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence()
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return const reference to sequence element
+     */
+    const DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence() const
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return reference to sequence element
+     */
+    DRTStrainCodeSequence &getStrainCodeSequence()
+        { return StrainCodeSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainCodeSequence &getStrainCodeSequence() const
+        { return StrainCodeSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return reference to sequence element
+     */
+    DRTStrainStockSequence &getStrainStockSequence()
+        { return StrainStockSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainStockSequence &getStrainStockSequence() const
+        { return StrainStockSequence; }
+
     /** get StructureSetROISequence (3006,0020)
      *  @return reference to sequence element
      */
@@ -1490,6 +1792,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTStudiesContainingOtherReferencedInstancesSequence &getStudiesContainingOtherReferencedInstancesSequence() const
         { return StudiesContainingOtherReferencedInstancesSequence; }
 
+    /** get UDISequence (0018,100a)
+     *  @return reference to sequence element
+     */
+    DRTUDISequence &getUDISequence()
+        { return UDISequence; }
+
+    /** get UDISequence (0018,100a)
+     *  @return const reference to sequence element
+     */
+    const DRTUDISequence &getUDISequence() const
+        { return UDISequence; }
+
   // --- set DICOM attribute values ---
 
     /** set AccessionNumber (0008,0050)
@@ -1520,6 +1834,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setAdmittingDiagnosesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set Allergies (0010,2110)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setAllergies(const OFString &value, const OFBool check = OFTrue);
+
     /** set ApprovalStatus (300e,0002)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1667,6 +1988,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setDeidentificationMethod(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DerivationDescription (0008,2111)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDerivationDescription(const OFString &value, const OFBool check = OFTrue);
+
     /** set DeviceSerialNumber (0018,1000)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1758,6 +2086,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setIssuerOfPatientID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set LastMenstrualDate (0010,21d0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setLastMenstrualDate(const OFString &value, const OFBool check = OFTrue);
+
     /** set LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1779,6 +2114,27 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set MeasuredAPDimension (0010,1023)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredAPDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MeasuredLateralDimension (0010,1024)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredLateralDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MedicalAlerts (0010,2000)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMedicalAlerts(const OFString &value, const OFBool check = OFTrue);
+
     /** set Modality (0008,0060)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1835,6 +2191,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setPatientAge(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientAlternativeCalendar (0010,0035)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthDate (0010,0030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -1842,6 +2205,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setPatientBirthDate(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthTime (0010,0032)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (TM) and VM (1) if enabled
@@ -1849,6 +2219,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setPatientBirthTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBodyMassIndex (0010,1022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBodyMassIndex(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBreedDescription (0010,2292)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1863,6 +2240,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setPatientComments(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientID (0010,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1912,6 +2296,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setPatientSpeciesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientState (0038,0500)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientState(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientWeight (0010,1030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -1982,6 +2373,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setPositionReferenceIndicator(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PregnancyStatus (0010,21c0)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPregnancyStatus(const Uint16 value, const unsigned long pos = 0);
+
     /** set QualityControlSubject (0010,0200)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -2136,6 +2534,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setServiceEpisodeID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set SmokingStatus (0010,21a0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setSmokingStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set SoftwareVersions (0018,1020)
      *  @param  value  value to be set (possibly multi-valued) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
@@ -2164,6 +2569,27 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setStationName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set StrainAdditionalInformation (0010,0218)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainAdditionalInformation(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainDescription (0010,0212)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainDescription(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainNomenclature (0010,0213)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainNomenclature(const OFString &value, const OFBool check = OFTrue);
+
     /** set StructureSetDate (3006,0008)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -2280,6 +2706,12 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
+    /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
+    DcmLongString PatientBirthDateInAlternativeCalendar;
+    /// PatientDeathDateInAlternativeCalendar (0010,0034) vr=LO, vm=1, type=3
+    DcmLongString PatientDeathDateInAlternativeCalendar;
+    /// PatientAlternativeCalendar (0010,0035) vr=CS, vm=1, type=1C
+    DcmCodeString PatientAlternativeCalendar;
     /// PatientSex (0010,0040) vr=CS, vm=1, type=2
     DcmCodeString PatientSex;
     /// ReferencedPatientPhotoSequence (0010,1100) vr=SQ, vm=1, type=3
@@ -2310,6 +2742,16 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DRTPatientBreedCodeSequence PatientBreedCodeSequence;
     /// BreedRegistrationSequence (0010,2294) vr=SQ, vm=1, type=2C
     DRTBreedRegistrationSequence BreedRegistrationSequence;
+    /// StrainDescription (0010,0212) vr=UC, vm=1, type=3
+    DcmUnlimitedCharacters StrainDescription;
+    /// StrainNomenclature (0010,0213) vr=LO, vm=1, type=3
+    DcmLongString StrainNomenclature;
+    /// StrainCodeSequence (0010,0219) vr=SQ, vm=1, type=3
+    DRTStrainCodeSequence StrainCodeSequence;
+    /// StrainAdditionalInformation (0010,0218) vr=UT, vm=1, type=3
+    DcmUnlimitedText StrainAdditionalInformation;
+    /// StrainStockSequence (0010,0216) vr=SQ, vm=1, type=3
+    DRTStrainStockSequence StrainStockSequence;
     /// ResponsiblePerson (0010,2297) vr=PN, vm=1, type=2C
     DcmPersonName ResponsiblePerson;
     /// ResponsiblePersonRole (0010,2298) vr=CS, vm=1, type=1C
@@ -2322,6 +2764,10 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmLongString DeidentificationMethod;
     /// DeidentificationMethodCodeSequence (0012,0064) vr=SQ, vm=1, type=1C
     DRTDeidentificationMethodCodeSequence DeidentificationMethodCodeSequence;
+    /// SourcePatientGroupIdentificationSequence (0010,0026) vr=SQ, vm=1, type=3
+    DRTSourcePatientGroupIdentificationSequence SourcePatientGroupIdentificationSequence;
+    /// GroupOfPatientsIdentificationSequence (0010,0027) vr=SQ, vm=1, type=3
+    DRTGroupOfPatientsIdentificationSequence GroupOfPatientsIdentificationSequence;
 
     // --- ClinicalTrialSubjectModule (U) ---
 
@@ -2397,8 +2843,26 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmDecimalString PatientSize;
     /// PatientWeight (0010,1030) vr=DS, vm=1, type=3
     DcmDecimalString PatientWeight;
+    /// PatientBodyMassIndex (0010,1022) vr=DS, vm=1, type=3
+    DcmDecimalString PatientBodyMassIndex;
+    /// MeasuredAPDimension (0010,1023) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredAPDimension;
+    /// MeasuredLateralDimension (0010,1024) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredLateralDimension;
     /// PatientSizeCodeSequence (0010,1021) vr=SQ, vm=1, type=3
     DRTPatientSizeCodeSequence PatientSizeCodeSequence;
+    /// MedicalAlerts (0010,2000) vr=LO, vm=1-n, type=3
+    DcmLongString MedicalAlerts;
+    /// Allergies (0010,2110) vr=LO, vm=1-n, type=3
+    DcmLongString Allergies;
+    /// SmokingStatus (0010,21a0) vr=CS, vm=1, type=3
+    DcmCodeString SmokingStatus;
+    /// PregnancyStatus (0010,21c0) vr=US, vm=1, type=3
+    DcmUnsignedShort PregnancyStatus;
+    /// LastMenstrualDate (0010,21d0) vr=DA, vm=1, type=3
+    DcmDate LastMenstrualDate;
+    /// PatientState (0038,0500) vr=LO, vm=1, type=3
+    DcmLongString PatientState;
     /// Occupation (0010,2180) vr=SH, vm=1, type=3
     DcmShortString Occupation;
     /// AdditionalPatientHistory (0010,21b0) vr=LT, vm=1, type=3
@@ -2443,6 +2907,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DRTSeriesDescriptionCodeSequence SeriesDescriptionCodeSequence;
     /// OperatorsName (0008,1070) vr=PN, vm=1-n, type=2
     DcmPersonName OperatorsName;
+    /// OperatorIdentificationSequence (0008,1072) vr=SQ, vm=1, type=3
+    DRTOperatorIdentificationSequence OperatorIdentificationSequence;
     /// ReferencedPerformedProcedureStepSequence (0008,1111) vr=SQ, vm=1, type=3
     DRTReferencedPerformedProcedureStepSequence ReferencedPerformedProcedureStepSequence;
     /// RequestAttributesSequence (0040,0275) vr=SQ, vm=1, type=3
@@ -2493,6 +2959,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmLongString SoftwareVersions;
     /// GantryID (0018,1008) vr=LO, vm=1, type=3
     DcmLongString GantryID;
+    /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
+    DRTUDISequence UDISequence;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -2552,6 +3020,21 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     /// ReviewerName (300e,0008) vr=PN, vm=1, type=2C
     DcmPersonName ReviewerName;
 
+    // --- GeneralReferenceModule (U) ---
+
+    /// ReferencedImageSequence (0008,1140) vr=SQ, vm=1, type=3
+    DRTReferencedImageSequence ReferencedImageSequence;
+    /// ReferencedInstanceSequence (0008,114a) vr=SQ, vm=1, type=3
+    DRTReferencedInstanceSequence ReferencedInstanceSequence;
+    /// DerivationDescription (0008,2111) vr=ST, vm=1, type=3
+    DcmShortText DerivationDescription;
+    /// DerivationCodeSequence (0008,9215) vr=SQ, vm=1, type=3
+    DRTDerivationCodeSequence DerivationCodeSequence;
+    /// SourceImageSequence (0008,2112) vr=SQ, vm=1, type=3
+    DRTSourceImageSequence SourceImageSequence;
+    /// SourceInstanceSequence (0042,0013) vr=SQ, vm=1, type=3
+    DRTSourceInstanceSequence SourceInstanceSequence;
+
     // --- SOPCommonModule (M) ---
 
     /// SOPClassUID (0008,0016) vr=UI, vm=1, type=1
@@ -2574,6 +3057,10 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmUniqueIdentifier OriginalSpecializedSOPClassUID;
     /// CodingSchemeIdentificationSequence (0008,0110) vr=SQ, vm=1, type=3
     DRTCodingSchemeIdentificationSequence CodingSchemeIdentificationSequence;
+    /// ContextGroupIdentificationSequence (0008,0123) vr=SQ, vm=1, type=3
+    DRTContextGroupIdentificationSequence ContextGroupIdentificationSequence;
+    /// MappingResourceIdentificationSequence (0008,0124) vr=SQ, vm=1, type=3
+    DRTMappingResourceIdentificationSequence MappingResourceIdentificationSequence;
     /// TimezoneOffsetFromUTC (0008,0201) vr=SH, vm=1, type=3
     DcmShortString TimezoneOffsetFromUTC;
     /// ContributingEquipmentSequence (0018,a001) vr=SQ, vm=1, type=3
diff --git a/dcmrt/include/dcmtk/dcmrt/drttreat.h b/dcmrt/include/dcmtk/dcmrt/drttreat.h
index 5822e24..e79c49c 100644
--- a/dcmrt/include/dcmtk/dcmrt/drttreat.h
+++ b/dcmrt/include/dcmtk/dcmrt/drttreat.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2016-11-23 14:23:36
  *
  */
 
@@ -23,18 +23,23 @@
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtcgis.h"   // for ContextGroupIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
+#include "dcmtk/dcmrt/seq/drtdcs.h"    // for DerivationCodeSequence
 #include "dcmtk/dcmrt/seq/drtdss.h"    // for DigitalSignaturesSequence
 #include "dcmtk/dcmrt/seq/drteas.h"    // for EncryptedAttributesSequence
 #include "dcmtk/dcmrt/seq/drtfgss.h"   // for FractionGroupSummarySequence
+#include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
 #include "dcmtk/dcmrt/seq/drtiais.h"   // for IssuerOfAdmissionIDSequence
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtiseis.h"  // for IssuerOfServiceEpisodeIDSequence
 #include "dcmtk/dcmrt/seq/drtmps.h"    // for MACParametersSequence
+#include "dcmtk/dcmrt/seq/drtmris.h"   // for MappingResourceIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtois.h"    // for OperatorIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtoas.h"    // for OriginalAttributesSequence
 #include "dcmtk/dcmrt/seq/drtopis.h"   // for OtherPatientIDsSequence
 #include "dcmtk/dcmrt/seq/drtpbcs.h"   // for PatientBreedCodeSequence
@@ -46,6 +51,8 @@
 #include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
+#include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
+#include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
@@ -57,12 +64,21 @@
 #include "dcmtk/dcmrt/seq/drtras.h"    // for RequestAttributesSequence
 #include "dcmtk/dcmrt/seq/drtrscs.h"   // for RequestingServiceCodeSequence
 #include "dcmtk/dcmrt/seq/drtsdcs.h"   // for SeriesDescriptionCodeSequence
+#include "dcmtk/dcmrt/seq/drtsis.h"    // for SourceImageSequence
+#include "dcmtk/dcmrt/seq/drtsins.h"   // for SourceInstanceSequence
+#include "dcmtk/dcmrt/seq/drtspgis.h"  // for SourcePatientGroupIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtscs.h"    // for StrainCodeSequence
+#include "dcmtk/dcmrt/seq/drtsss.h"    // for StrainStockSequence
 #include "dcmtk/dcmrt/seq/drtscris.h"  // for StudiesContainingOtherReferencedInstancesSequence
 #include "dcmtk/dcmrt/seq/drttscds.h"  // for TreatmentSummaryCalculatedDoseReferenceSequence
 #include "dcmtk/dcmrt/seq/drttsmds.h"  // for TreatmentSummaryMeasuredDoseReferenceSequence
+#include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 
 
 /** Interface class for RTTreatmentSummaryRecordIOD
+ *  @note Because of its many member variables, an instance of this class requires quite
+ *    some memory. So be careful when creating automatic variables from this class (the
+ *    stack size might be exceeded); it is probably better to use the heap space.
  */
 class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
   : protected DRTTypes
@@ -87,6 +103,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
 
     /** assigment operator
      *  @param copy IOD object to be copied
+     *  @return reference to this object
      */
     DRTTreatmentSummaryRecordIOD &operator=(const DRTTreatmentSummaryRecordIOD &copy);
 
@@ -167,6 +184,14 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFBool isClinicalTrialSeriesModulePresent(const OFBool complete = OFFalse);
 
+    /** check whether GeneralReferenceModule (U) is present.
+     *  By default, a module is reported as being present if at least one attribute
+     *  from this module has a non-empty value.
+     *  @param  complete  check for all mandatory attributes of this module if enabled
+     *  @return OFTrue if module is present, OFFalse otherwise
+     */
+    virtual OFBool isGeneralReferenceModulePresent(const OFBool complete = OFFalse);
+
     /** check whether CommonInstanceReferenceModule (U) is present.
      *  By default, a module is reported as being present if at least one attribute
      *  from this module has a non-empty value.
@@ -205,6 +230,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getAdmittingDiagnosesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get Allergies (0010,2110)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getAllergies(OFString &value, const signed long pos = 0) const;
+
     /** get AuthorizationEquipmentCertificationNumber (0100,0426)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -352,6 +384,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getDeidentificationMethod(OFString &value, const signed long pos = 0) const;
 
+    /** get DerivationDescription (0008,2111)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDerivationDescription(OFString &value, const signed long pos = 0) const;
+
     /** get DeviceSerialNumber (0018,1000)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -450,6 +489,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getIssuerOfPatientID(OFString &value, const signed long pos = 0) const;
 
+    /** get LastMenstrualDate (0010,21d0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getLastMenstrualDate(OFString &value, const signed long pos = 0) const;
+
     /** get LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -471,6 +517,41 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
 
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredAPDimension (0010,1023)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredAPDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(OFString &value, const signed long pos = 0) const;
+
+    /** get MeasuredLateralDimension (0010,1024)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMeasuredLateralDimension(Float64 &value, const unsigned long pos = 0) const;
+
+    /** get MedicalAlerts (0010,2000)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getMedicalAlerts(OFString &value, const signed long pos = 0) const;
+
     /** get Modality (0008,0060)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -534,6 +615,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getPatientAge(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientAlternativeCalendar (0010,0035)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthDate (0010,0030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -541,6 +629,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getPatientBirthDate(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientBirthTime (0010,0032)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -548,6 +643,20 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getPatientBirthTime(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(OFString &value, const signed long pos = 0) const;
+
+    /** get PatientBodyMassIndex (0010,1022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientBodyMassIndex(Float64 &value, const unsigned long pos = 0) const;
+
     /** get PatientBreedDescription (0010,2292)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -562,6 +671,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getPatientComments(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos = 0) const;
+
     /** get PatientID (0010,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -618,6 +734,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getPatientSpeciesDescription(OFString &value, const signed long pos = 0) const;
 
+    /** get PatientState (0038,0500)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPatientState(OFString &value, const signed long pos = 0) const;
+
     /** get PatientWeight (0010,1030)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -688,6 +811,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getPixelPaddingValue(Uint16 &value, const unsigned long pos = 0) const;
 
+    /** get PregnancyStatus (0010,21c0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPregnancyStatus(Uint16 &value, const unsigned long pos = 0) const;
+
     /** get QualityControlSubject (0010,0200)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -828,6 +958,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getServiceEpisodeID(OFString &value, const signed long pos = 0) const;
 
+    /** get SmokingStatus (0010,21a0)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getSmokingStatus(OFString &value, const signed long pos = 0) const;
+
     /** get SoftwareVersions (0018,1020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -863,6 +1000,27 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getStationName(OFString &value, const signed long pos = 0) const;
 
+    /** get StrainAdditionalInformation (0010,0218)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainAdditionalInformation(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainDescription (0010,0212)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainDescription(OFString &value, const signed long pos = 0) const;
+
+    /** get StrainNomenclature (0010,0213)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStrainNomenclature(OFString &value, const signed long pos = 0) const;
+
     /** get StudyDate (0008,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -995,6 +1153,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
         { return ConsultingPhysicianIdentificationSequence; }
 
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return reference to sequence element
+     */
+    DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence()
+        { return ContextGroupIdentificationSequence; }
+
+    /** get ContextGroupIdentificationSequence (0008,0123)
+     *  @return const reference to sequence element
+     */
+    const DRTContextGroupIdentificationSequence &getContextGroupIdentificationSequence() const
+        { return ContextGroupIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1031,6 +1201,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTDeidentificationMethodCodeSequence &getDeidentificationMethodCodeSequence() const
         { return DeidentificationMethodCodeSequence; }
 
+    /** get DerivationCodeSequence (0008,9215)
+     *  @return reference to sequence element
+     */
+    DRTDerivationCodeSequence &getDerivationCodeSequence()
+        { return DerivationCodeSequence; }
+
+    /** get DerivationCodeSequence (0008,9215)
+     *  @return const reference to sequence element
+     */
+    const DRTDerivationCodeSequence &getDerivationCodeSequence() const
+        { return DerivationCodeSequence; }
+
     /** get DigitalSignaturesSequence (fffa,fffa)
      *  @return reference to sequence element
      */
@@ -1067,6 +1249,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTFractionGroupSummarySequence &getFractionGroupSummarySequence() const
         { return FractionGroupSummarySequence; }
 
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return reference to sequence element
+     */
+    DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence()
+        { return GroupOfPatientsIdentificationSequence; }
+
+    /** get GroupOfPatientsIdentificationSequence (0010,0027)
+     *  @return const reference to sequence element
+     */
+    const DRTGroupOfPatientsIdentificationSequence &getGroupOfPatientsIdentificationSequence() const
+        { return GroupOfPatientsIdentificationSequence; }
+
     /** get HL7StructuredDocumentReferenceSequence (0040,a390)
      *  @return reference to sequence element
      */
@@ -1139,6 +1333,30 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTMACParametersSequence &getMACParametersSequence() const
         { return MACParametersSequence; }
 
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return reference to sequence element
+     */
+    DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence()
+        { return MappingResourceIdentificationSequence; }
+
+    /** get MappingResourceIdentificationSequence (0008,0124)
+     *  @return const reference to sequence element
+     */
+    const DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence() const
+        { return MappingResourceIdentificationSequence; }
+
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return reference to sequence element
+     */
+    DRTOperatorIdentificationSequence &getOperatorIdentificationSequence()
+        { return OperatorIdentificationSequence; }
+
+    /** get OperatorIdentificationSequence (0008,1072)
+     *  @return const reference to sequence element
+     */
+    const DRTOperatorIdentificationSequence &getOperatorIdentificationSequence() const
+        { return OperatorIdentificationSequence; }
+
     /** get OriginalAttributesSequence (0400,0561)
      *  @return reference to sequence element
      */
@@ -1271,6 +1489,30 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const
         { return ReasonForPerformedProcedureCodeSequence; }
 
+    /** get ReferencedImageSequence (0008,1140)
+     *  @return reference to sequence element
+     */
+    DRTReferencedImageSequence &getReferencedImageSequence()
+        { return ReferencedImageSequence; }
+
+    /** get ReferencedImageSequence (0008,1140)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedImageSequence &getReferencedImageSequence() const
+        { return ReferencedImageSequence; }
+
+    /** get ReferencedInstanceSequence (0008,114a)
+     *  @return reference to sequence element
+     */
+    DRTReferencedInstanceSequence &getReferencedInstanceSequence()
+        { return ReferencedInstanceSequence; }
+
+    /** get ReferencedInstanceSequence (0008,114a)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedInstanceSequence &getReferencedInstanceSequence() const
+        { return ReferencedInstanceSequence; }
+
     /** get ReferencedPatientPhotoSequence (0010,1100)
      *  @return reference to sequence element
      */
@@ -1403,6 +1645,66 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTSeriesDescriptionCodeSequence &getSeriesDescriptionCodeSequence() const
         { return SeriesDescriptionCodeSequence; }
 
+    /** get SourceImageSequence (0008,2112)
+     *  @return reference to sequence element
+     */
+    DRTSourceImageSequence &getSourceImageSequence()
+        { return SourceImageSequence; }
+
+    /** get SourceImageSequence (0008,2112)
+     *  @return const reference to sequence element
+     */
+    const DRTSourceImageSequence &getSourceImageSequence() const
+        { return SourceImageSequence; }
+
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return reference to sequence element
+     */
+    DRTSourceInstanceSequence &getSourceInstanceSequence()
+        { return SourceInstanceSequence; }
+
+    /** get SourceInstanceSequence (0042,0013)
+     *  @return const reference to sequence element
+     */
+    const DRTSourceInstanceSequence &getSourceInstanceSequence() const
+        { return SourceInstanceSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return reference to sequence element
+     */
+    DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence()
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get SourcePatientGroupIdentificationSequence (0010,0026)
+     *  @return const reference to sequence element
+     */
+    const DRTSourcePatientGroupIdentificationSequence &getSourcePatientGroupIdentificationSequence() const
+        { return SourcePatientGroupIdentificationSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return reference to sequence element
+     */
+    DRTStrainCodeSequence &getStrainCodeSequence()
+        { return StrainCodeSequence; }
+
+    /** get StrainCodeSequence (0010,0219)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainCodeSequence &getStrainCodeSequence() const
+        { return StrainCodeSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return reference to sequence element
+     */
+    DRTStrainStockSequence &getStrainStockSequence()
+        { return StrainStockSequence; }
+
+    /** get StrainStockSequence (0010,0216)
+     *  @return const reference to sequence element
+     */
+    const DRTStrainStockSequence &getStrainStockSequence() const
+        { return StrainStockSequence; }
+
     /** get StudiesContainingOtherReferencedInstancesSequence (0008,1200)
      *  @return reference to sequence element
      */
@@ -1439,6 +1741,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTTreatmentSummaryMeasuredDoseReferenceSequence &getTreatmentSummaryMeasuredDoseReferenceSequence() const
         { return TreatmentSummaryMeasuredDoseReferenceSequence; }
 
+    /** get UDISequence (0018,100a)
+     *  @return reference to sequence element
+     */
+    DRTUDISequence &getUDISequence()
+        { return UDISequence; }
+
+    /** get UDISequence (0018,100a)
+     *  @return const reference to sequence element
+     */
+    const DRTUDISequence &getUDISequence() const
+        { return UDISequence; }
+
   // --- set DICOM attribute values ---
 
     /** set AccessionNumber (0008,0050)
@@ -1469,6 +1783,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setAdmittingDiagnosesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set Allergies (0010,2110)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setAllergies(const OFString &value, const OFBool check = OFTrue);
+
     /** set AuthorizationEquipmentCertificationNumber (0100,0426)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1616,6 +1937,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setDeidentificationMethod(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DerivationDescription (0008,2111)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDerivationDescription(const OFString &value, const OFBool check = OFTrue);
+
     /** set DeviceSerialNumber (0018,1000)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1707,6 +2035,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setIssuerOfPatientID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set LastMenstrualDate (0010,21d0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setLastMenstrualDate(const OFString &value, const OFBool check = OFTrue);
+
     /** set LongitudinalTemporalInformationModified (0028,0303)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1728,6 +2063,27 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set MeasuredAPDimension (0010,1023)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredAPDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MeasuredLateralDimension (0010,1024)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMeasuredLateralDimension(const OFString &value, const OFBool check = OFTrue);
+
+    /** set MedicalAlerts (0010,2000)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setMedicalAlerts(const OFString &value, const OFBool check = OFTrue);
+
     /** set Modality (0008,0060)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1791,6 +2147,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setPatientAge(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientAlternativeCalendar (0010,0035)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthDate (0010,0030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -1798,6 +2161,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setPatientBirthDate(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBirthDateInAlternativeCalendar (0010,0033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBirthTime (0010,0032)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (TM) and VM (1) if enabled
@@ -1805,6 +2175,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setPatientBirthTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientBodyMassIndex (0010,1022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientBodyMassIndex(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientBreedDescription (0010,2292)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1819,6 +2196,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setPatientComments(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientDeathDateInAlternativeCalendar (0010,0034)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientID (0010,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1868,6 +2252,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setPatientSpeciesDescription(const OFString &value, const OFBool check = OFTrue);
 
+    /** set PatientState (0038,0500)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPatientState(const OFString &value, const OFBool check = OFTrue);
+
     /** set PatientWeight (0010,1030)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -1931,6 +2322,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setPixelPaddingValue(const Uint16 value, const unsigned long pos = 0);
 
+    /** set PregnancyStatus (0010,21c0)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPregnancyStatus(const Uint16 value, const unsigned long pos = 0);
+
     /** set QualityControlSubject (0010,0200)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -2064,6 +2462,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setServiceEpisodeID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set SmokingStatus (0010,21a0)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setSmokingStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set SoftwareVersions (0018,1020)
      *  @param  value  value to be set (possibly multi-valued) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
@@ -2092,6 +2497,27 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setStationName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set StrainAdditionalInformation (0010,0218)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainAdditionalInformation(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainDescription (0010,0212)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainDescription(const OFString &value, const OFBool check = OFTrue);
+
+    /** set StrainNomenclature (0010,0213)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStrainNomenclature(const OFString &value, const OFBool check = OFTrue);
+
     /** set StudyDate (0008,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -2194,6 +2620,12 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
+    /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
+    DcmLongString PatientBirthDateInAlternativeCalendar;
+    /// PatientDeathDateInAlternativeCalendar (0010,0034) vr=LO, vm=1, type=3
+    DcmLongString PatientDeathDateInAlternativeCalendar;
+    /// PatientAlternativeCalendar (0010,0035) vr=CS, vm=1, type=1C
+    DcmCodeString PatientAlternativeCalendar;
     /// PatientSex (0010,0040) vr=CS, vm=1, type=2
     DcmCodeString PatientSex;
     /// ReferencedPatientPhotoSequence (0010,1100) vr=SQ, vm=1, type=3
@@ -2224,6 +2656,16 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DRTPatientBreedCodeSequence PatientBreedCodeSequence;
     /// BreedRegistrationSequence (0010,2294) vr=SQ, vm=1, type=2C
     DRTBreedRegistrationSequence BreedRegistrationSequence;
+    /// StrainDescription (0010,0212) vr=UC, vm=1, type=3
+    DcmUnlimitedCharacters StrainDescription;
+    /// StrainNomenclature (0010,0213) vr=LO, vm=1, type=3
+    DcmLongString StrainNomenclature;
+    /// StrainCodeSequence (0010,0219) vr=SQ, vm=1, type=3
+    DRTStrainCodeSequence StrainCodeSequence;
+    /// StrainAdditionalInformation (0010,0218) vr=UT, vm=1, type=3
+    DcmUnlimitedText StrainAdditionalInformation;
+    /// StrainStockSequence (0010,0216) vr=SQ, vm=1, type=3
+    DRTStrainStockSequence StrainStockSequence;
     /// ResponsiblePerson (0010,2297) vr=PN, vm=1, type=2C
     DcmPersonName ResponsiblePerson;
     /// ResponsiblePersonRole (0010,2298) vr=CS, vm=1, type=1C
@@ -2236,6 +2678,10 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmLongString DeidentificationMethod;
     /// DeidentificationMethodCodeSequence (0012,0064) vr=SQ, vm=1, type=1C
     DRTDeidentificationMethodCodeSequence DeidentificationMethodCodeSequence;
+    /// SourcePatientGroupIdentificationSequence (0010,0026) vr=SQ, vm=1, type=3
+    DRTSourcePatientGroupIdentificationSequence SourcePatientGroupIdentificationSequence;
+    /// GroupOfPatientsIdentificationSequence (0010,0027) vr=SQ, vm=1, type=3
+    DRTGroupOfPatientsIdentificationSequence GroupOfPatientsIdentificationSequence;
 
     // --- ClinicalTrialSubjectModule (U) ---
 
@@ -2311,8 +2757,26 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmDecimalString PatientSize;
     /// PatientWeight (0010,1030) vr=DS, vm=1, type=3
     DcmDecimalString PatientWeight;
+    /// PatientBodyMassIndex (0010,1022) vr=DS, vm=1, type=3
+    DcmDecimalString PatientBodyMassIndex;
+    /// MeasuredAPDimension (0010,1023) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredAPDimension;
+    /// MeasuredLateralDimension (0010,1024) vr=DS, vm=1, type=3
+    DcmDecimalString MeasuredLateralDimension;
     /// PatientSizeCodeSequence (0010,1021) vr=SQ, vm=1, type=3
     DRTPatientSizeCodeSequence PatientSizeCodeSequence;
+    /// MedicalAlerts (0010,2000) vr=LO, vm=1-n, type=3
+    DcmLongString MedicalAlerts;
+    /// Allergies (0010,2110) vr=LO, vm=1-n, type=3
+    DcmLongString Allergies;
+    /// SmokingStatus (0010,21a0) vr=CS, vm=1, type=3
+    DcmCodeString SmokingStatus;
+    /// PregnancyStatus (0010,21c0) vr=US, vm=1, type=3
+    DcmUnsignedShort PregnancyStatus;
+    /// LastMenstrualDate (0010,21d0) vr=DA, vm=1, type=3
+    DcmDate LastMenstrualDate;
+    /// PatientState (0038,0500) vr=LO, vm=1, type=3
+    DcmLongString PatientState;
     /// Occupation (0010,2180) vr=SH, vm=1, type=3
     DcmShortString Occupation;
     /// AdditionalPatientHistory (0010,21b0) vr=LT, vm=1, type=3
@@ -2357,6 +2821,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DRTSeriesDescriptionCodeSequence SeriesDescriptionCodeSequence;
     /// OperatorsName (0008,1070) vr=PN, vm=1-n, type=2
     DcmPersonName OperatorsName;
+    /// OperatorIdentificationSequence (0008,1072) vr=SQ, vm=1, type=3
+    DRTOperatorIdentificationSequence OperatorIdentificationSequence;
     /// ReferencedPerformedProcedureStepSequence (0008,1111) vr=SQ, vm=1, type=3
     DRTReferencedPerformedProcedureStepSequence ReferencedPerformedProcedureStepSequence;
     /// RequestAttributesSequence (0040,0275) vr=SQ, vm=1, type=3
@@ -2407,6 +2873,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmLongString SoftwareVersions;
     /// GantryID (0018,1008) vr=LO, vm=1, type=3
     DcmLongString GantryID;
+    /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
+    DRTUDISequence UDISequence;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -2447,6 +2915,21 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     /// TreatmentSummaryCalculatedDoseReferenceSequence (3008,0050) vr=SQ, vm=1, type=3
     DRTTreatmentSummaryCalculatedDoseReferenceSequence TreatmentSummaryCalculatedDoseReferenceSequence;
 
+    // --- GeneralReferenceModule (U) ---
+
+    /// ReferencedImageSequence (0008,1140) vr=SQ, vm=1, type=3
+    DRTReferencedImageSequence ReferencedImageSequence;
+    /// ReferencedInstanceSequence (0008,114a) vr=SQ, vm=1, type=3
+    DRTReferencedInstanceSequence ReferencedInstanceSequence;
+    /// DerivationDescription (0008,2111) vr=ST, vm=1, type=3
+    DcmShortText DerivationDescription;
+    /// DerivationCodeSequence (0008,9215) vr=SQ, vm=1, type=3
+    DRTDerivationCodeSequence DerivationCodeSequence;
+    /// SourceImageSequence (0008,2112) vr=SQ, vm=1, type=3
+    DRTSourceImageSequence SourceImageSequence;
+    /// SourceInstanceSequence (0042,0013) vr=SQ, vm=1, type=3
+    DRTSourceInstanceSequence SourceInstanceSequence;
+
     // --- SOPCommonModule (M) ---
 
     /// SOPClassUID (0008,0016) vr=UI, vm=1, type=1
@@ -2469,6 +2952,10 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmUniqueIdentifier OriginalSpecializedSOPClassUID;
     /// CodingSchemeIdentificationSequence (0008,0110) vr=SQ, vm=1, type=3
     DRTCodingSchemeIdentificationSequence CodingSchemeIdentificationSequence;
+    /// ContextGroupIdentificationSequence (0008,0123) vr=SQ, vm=1, type=3
+    DRTContextGroupIdentificationSequence ContextGroupIdentificationSequence;
+    /// MappingResourceIdentificationSequence (0008,0124) vr=SQ, vm=1, type=3
+    DRTMappingResourceIdentificationSequence MappingResourceIdentificationSequence;
     /// TimezoneOffsetFromUTC (0008,0201) vr=SH, vm=1, type=3
     DcmShortString TimezoneOffsetFromUTC;
     /// ContributingEquipmentSequence (0018,a001) vr=SQ, vm=1, type=3
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h
index 271dfb2..1e99053 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningAgencyOrDepartmentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTAssigningAgencyOrDepartmentCodeSequence &operator=(const DRTAssigningAgencyOrDepartmentCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h
index 1221170..137644b 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAdmittingDiagnosesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTAdmittingDiagnosesCodeSequence &operator=(const DRTAdmittingDiagnosesCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtads.h b/dcmrt/include/dcmtk/dcmrt/seq/drtads.h
index bd799e3..dea2491 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtads.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtads.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAdditionalDrugSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTAdditionalDrugSequence &operator=(const DRTAdditionalDrugSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
index af706b1..2283c18 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningFacilitySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -166,6 +167,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTAssigningFacilitySequence &operator=(const DRTAssigningFacilitySequence &copy);
 
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -227,31 +229,31 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -264,13 +266,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -305,7 +307,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -313,7 +315,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtags.h b/dcmrt/include/dcmtk/dcmrt/seq/drtags.h
index 9f9fa99..7e5a7a8 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtags.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtags.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorGeometrySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorGeometrySequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -182,6 +183,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorGeometrySequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTApplicatorGeometrySequence &operator=(const DRTApplicatorGeometrySequence &copy);
 
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorGeometrySequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -220,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorGeometrySequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -243,31 +245,31 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorGeometrySequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -280,13 +282,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorGeometrySequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -321,7 +323,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorGeometrySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -329,7 +331,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorGeometrySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h
index 4d404cf..88f5ab8 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningJurisdictionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTAssigningJurisdictionCodeSequence &operator=(const DRTAssigningJurisdictionCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas1.h
index c1d420a..efebd9e 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtas1.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtas1.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -215,6 +216,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTApplicatorSequenceInRTBeamsModule &operator=(const DRTApplicatorSequenceInRTBeamsModule &copy);
 
@@ -237,7 +239,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -253,7 +255,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -276,31 +278,31 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -313,13 +315,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -354,7 +356,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -362,7 +364,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas5.h
index a07e40e..4957ece 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtas5.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtas5.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -215,6 +216,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTApplicatorSequenceInRTImageModule &operator=(const DRTApplicatorSequenceInRTImageModule &copy);
 
@@ -237,7 +239,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -253,7 +255,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -276,31 +278,31 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -313,13 +315,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -354,7 +356,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -362,7 +364,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
index 2ca82ef..b3ea5bb 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -182,6 +183,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTApplicatorSequenceInRTIonBeamsModule &operator=(const DRTApplicatorSequenceInRTIonBeamsModule &copy);
 
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -220,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -243,31 +245,31 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -280,13 +282,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -321,7 +323,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -329,7 +331,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas7.h
index 743c951..6c077e2 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtas7.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtas7.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -182,6 +183,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &copy);
 
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -220,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -243,31 +245,31 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -280,13 +282,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -321,7 +323,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -329,7 +331,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtass.h b/dcmrt/include/dcmtk/dcmrt/seq/drtass.h
index d6f9922..6814c04 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtass.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtass.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicationSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -58,6 +58,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicationSetupSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -314,6 +315,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicationSetupSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTApplicationSetupSequence &operator=(const DRTApplicationSetupSequence &copy);
 
@@ -336,7 +338,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicationSetupSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -352,7 +354,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicationSetupSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -375,31 +377,31 @@ class DCMTK_DCMRT_EXPORT DRTApplicationSetupSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -412,13 +414,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicationSetupSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -453,7 +455,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicationSetupSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -461,7 +463,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicationSetupSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbads.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbads.h
index 6a9203b..ad8d7a2 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbads.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbads.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyAccessoryDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyAccessoryDeviceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -274,6 +275,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyAccessoryDeviceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBrachyAccessoryDeviceSequence &operator=(const DRTBrachyAccessoryDeviceSequence &copy);
 
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyAccessoryDeviceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -312,7 +314,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyAccessoryDeviceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -335,31 +337,31 @@ class DCMTK_DCMRT_EXPORT DRTBrachyAccessoryDeviceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -372,13 +374,13 @@ class DCMTK_DCMRT_EXPORT DRTBrachyAccessoryDeviceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -413,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyAccessoryDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -421,7 +423,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyAccessoryDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbas.h
index 6252502..494983d 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbas.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbas.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContrastBolusAgentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTContrastBolusAgentSequence &operator=(const DRTContrastBolusAgentSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h
index 0d01624..013e0ea 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyControlPointSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -249,6 +250,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyControlPointSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBrachyControlPointSequence &operator=(const DRTBrachyControlPointSequence &copy);
 
@@ -271,7 +273,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyControlPointSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -287,7 +289,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyControlPointSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -310,31 +312,31 @@ class DCMTK_DCMRT_EXPORT DRTBrachyControlPointSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -347,13 +349,13 @@ class DCMTK_DCMRT_EXPORT DRTBrachyControlPointSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -388,7 +390,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyControlPointSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -396,7 +398,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyControlPointSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h
index a516809..9be375f 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBlockSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -229,6 +230,13 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
          */
         OFCondition getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get TrayAccessoryCode (300a,0355)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTrayAccessoryCode(OFString &value, const signed long pos = 0) const;
+
       // --- set DICOM attribute values ---
 
         /** set AccessoryCode (300a,00f9)
@@ -322,6 +330,13 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
          */
         OFCondition setSourceToBlockTrayDistance(const OFString &value, const OFBool check = OFTrue);
 
+        /** set TrayAccessoryCode (300a,0355)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTrayAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -353,6 +368,8 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
         DcmShortString MaterialID;
         /// SourceToBlockTrayDistance (300a,00f6) vr=DS, vm=1, type=2
         DcmDecimalString SourceToBlockTrayDistance;
+        /// TrayAccessoryCode (300a,0355) vr=LO, vm=1, type=3
+        DcmLongString TrayAccessoryCode;
 
     };
 
@@ -374,6 +391,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBlockSequenceInRTBeamsModule &operator=(const DRTBlockSequenceInRTBeamsModule &copy);
 
@@ -396,7 +414,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -412,7 +430,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -435,31 +453,31 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -472,13 +490,13 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -513,7 +531,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -521,7 +539,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h
index c0046f2..26ac3b0 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBlockSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -215,6 +216,13 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
          */
         OFCondition getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get TrayAccessoryCode (300a,0355)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTrayAccessoryCode(OFString &value, const signed long pos = 0) const;
+
       // --- set DICOM attribute values ---
 
         /** set AccessoryCode (300a,00f9)
@@ -301,6 +309,13 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
          */
         OFCondition setSourceToBlockTrayDistance(const OFString &value, const OFBool check = OFTrue);
 
+        /** set TrayAccessoryCode (300a,0355)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTrayAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -330,6 +345,8 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
         DcmShortString MaterialID;
         /// SourceToBlockTrayDistance (300a,00f6) vr=DS, vm=1, type=2
         DcmDecimalString SourceToBlockTrayDistance;
+        /// TrayAccessoryCode (300a,0355) vr=LO, vm=1, type=3
+        DcmLongString TrayAccessoryCode;
 
     };
 
@@ -351,6 +368,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBlockSequenceInRTImageModule &operator=(const DRTBlockSequenceInRTImageModule &copy);
 
@@ -373,7 +391,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -389,7 +407,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -412,31 +430,31 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -449,13 +467,13 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -490,7 +508,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h
index b6a15af..f85dd84 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceLeafPairsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceLeafPairsSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -157,6 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceLeafPairsSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBeamLimitingDeviceLeafPairsSequence &operator=(const DRTBeamLimitingDeviceLeafPairsSequence &copy);
 
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceLeafPairsSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceLeafPairsSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -218,31 +220,31 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceLeafPairsSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -255,13 +257,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceLeafPairsSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceLeafPairsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -304,7 +306,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceLeafPairsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h
index acadc81..cf32f7e 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDevicePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDevicePositionSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -163,6 +164,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDevicePositionSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBeamLimitingDevicePositionSequence &operator=(const DRTBeamLimitingDevicePositionSequence &copy);
 
@@ -185,7 +187,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDevicePositionSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -201,7 +203,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDevicePositionSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -224,31 +226,31 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDevicePositionSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -261,13 +263,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDevicePositionSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -302,7 +304,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDevicePositionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -310,7 +312,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDevicePositionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h
index 05d8c5a..055b0cc 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -209,6 +210,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBeamLimitingDeviceSequenceInRTBeamsModule &operator=(const DRTBeamLimitingDeviceSequenceInRTBeamsModule &copy);
 
@@ -231,7 +233,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -247,7 +249,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -270,31 +272,31 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -307,13 +309,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -348,7 +350,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -356,7 +358,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h
index e23c711..1c83a27 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -238,6 +239,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBeamLimitingDeviceSequenceInRTImageModule &operator=(const DRTBeamLimitingDeviceSequenceInRTImageModule &copy);
 
@@ -260,7 +262,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -276,7 +278,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -299,31 +301,31 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -336,13 +338,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -385,7 +387,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h
index b3ca61b..95eaaab 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -238,6 +239,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBeamLimitingDeviceSequenceInRTIonBeamsModule &operator=(const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule &copy);
 
@@ -260,7 +262,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -276,7 +278,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -299,31 +301,31 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -336,13 +338,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -385,7 +387,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h
index 8cc3222..95b71d2 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceToleranceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceToleranceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -157,6 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceToleranceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBeamLimitingDeviceToleranceSequence &operator=(const DRTBeamLimitingDeviceToleranceSequence &copy);
 
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceToleranceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceToleranceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -218,31 +220,31 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceToleranceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -255,13 +257,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceToleranceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceToleranceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -304,7 +306,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceToleranceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h
index 52a1c54..1bd508d 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBreedRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBreedRegistryCodeSequence &operator=(const DRTBreedRegistryCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h
index 1926e81..63b9f1c 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyReferencedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyReferencedDoseReferenceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -164,6 +165,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyReferencedDoseReferenceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBrachyReferencedDoseReferenceSequence &operator=(const DRTBrachyReferencedDoseReferenceSequence &copy);
 
@@ -186,7 +188,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyReferencedDoseReferenceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -202,7 +204,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyReferencedDoseReferenceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -225,31 +227,31 @@ class DCMTK_DCMRT_EXPORT DRTBrachyReferencedDoseReferenceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -262,13 +264,13 @@ class DCMTK_DCMRT_EXPORT DRTBrachyReferencedDoseReferenceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -303,7 +305,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyReferencedDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -311,7 +313,7 @@ class DCMTK_DCMRT_EXPORT DRTBrachyReferencedDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h
index bb5998f..4a43dd2 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBreedRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistrationSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -151,6 +152,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistrationSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBreedRegistrationSequence &operator=(const DRTBreedRegistrationSequence &copy);
 
@@ -173,7 +175,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistrationSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -189,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistrationSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -212,31 +214,31 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistrationSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -249,13 +251,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistrationSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -290,7 +292,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistrationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -298,7 +300,7 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistrationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbs.h
index a585e4d..12ad743 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -67,6 +67,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -800,6 +801,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBeamSequence &operator=(const DRTBeamSequence &copy);
 
@@ -822,7 +824,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -838,7 +840,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -861,31 +863,31 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -898,13 +900,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -939,7 +941,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -947,7 +949,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
index 1ef3ef9..3baa2a3 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBlockSlabSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -173,6 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBlockSlabSequence &operator=(const DRTBlockSlabSequence &copy);
 
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -234,31 +236,31 @@ class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -271,13 +273,13 @@ class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -312,7 +314,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -320,7 +322,7 @@ class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h
index 0084c67..9f158a8 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamDoseVerificationControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -111,12 +112,12 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
          */
         OFCondition getAverageBeamDosePointSSD(Float32 &value, const unsigned long pos = 0) const;
 
-        /** get AverageBeamDosePointSourceToExternalContourSurfaceDistance (300a,0131)
+        /** get AverageBeamDosePointSourceToExternalContourDistance (300a,0131)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getAverageBeamDosePointSourceToExternalContourSurfaceDistance(Float32 &value, const unsigned long pos = 0) const;
+        OFCondition getAverageBeamDosePointSourceToExternalContourDistance(Float32 &value, const unsigned long pos = 0) const;
 
         /** get CumulativeMetersetWeight (300a,0134)
          *  @param  value  reference to variable in which the value should be stored
@@ -169,12 +170,12 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
          */
         OFCondition setAverageBeamDosePointSSD(const Float32 value, const unsigned long pos = 0);
 
-        /** set AverageBeamDosePointSourceToExternalContourSurfaceDistance (300a,0131)
+        /** set AverageBeamDosePointSourceToExternalContourDistance (300a,0131)
          *  @param  value  value to be set (should be valid for this VR)
          *  @param  pos    index of the value to be set (0..vm-1), vm=1
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setAverageBeamDosePointSourceToExternalContourSurfaceDistance(const Float32 value, const unsigned long pos = 0);
+        OFCondition setAverageBeamDosePointSourceToExternalContourDistance(const Float32 value, const unsigned long pos = 0);
 
         /** set CumulativeMetersetWeight (300a,0134)
          *  @param  value  value to be set (single value only) or "" for no value
@@ -201,8 +202,8 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
         DcmFloatingPointSingle AverageBeamDosePointEquivalentDepth;
         /// AverageBeamDosePointSSD (300a,008f) vr=FL, vm=1, type=2C
         DcmFloatingPointSingle AverageBeamDosePointSSD;
-        /// AverageBeamDosePointSourceToExternalContourSurfaceDistance (300a,0131) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle AverageBeamDosePointSourceToExternalContourSurfaceDistance;
+        /// AverageBeamDosePointSourceToExternalContourDistance (300a,0131) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle AverageBeamDosePointSourceToExternalContourDistance;
         /// CumulativeMetersetWeight (300a,0134) vr=DS, vm=1, type=1
         DcmDecimalString CumulativeMetersetWeight;
         /// ReferencedControlPointIndex (300c,00f0) vr=IS, vm=1, type=1C
@@ -228,6 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTBeamDoseVerificationControlPointSequence &operator=(const DRTBeamDoseVerificationControlPointSequence &copy);
 
@@ -250,7 +252,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -266,7 +268,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -289,31 +291,31 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -326,13 +328,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -367,7 +369,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -375,7 +377,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
index b4a8b96..5f62b92 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContrastBolusAdministrationRouteSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -176,6 +177,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -302,6 +310,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -349,6 +364,8 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -374,6 +391,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTContrastBolusAdministrationRouteSequence &operator=(const DRTContrastBolusAdministrationRouteSequence &copy);
 
@@ -396,7 +414,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -412,7 +430,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -435,31 +453,31 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -472,13 +490,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -513,7 +531,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -521,7 +539,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtccs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtccs.h
index dbc3c4f..21f74fe 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtccs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtccs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConceptCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTConceptCodeSequence &operator=(const DRTConceptCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h
index d9546ee..df6672e 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConsentForClinicalTrialUseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTConsentForClinicalTrialUseSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -166,6 +167,7 @@ class DCMTK_DCMRT_EXPORT DRTConsentForClinicalTrialUseSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTConsentForClinicalTrialUseSequence &operator=(const DRTConsentForClinicalTrialUseSequence &copy);
 
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTConsentForClinicalTrialUseSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTConsentForClinicalTrialUseSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -227,31 +229,31 @@ class DCMTK_DCMRT_EXPORT DRTConsentForClinicalTrialUseSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -264,13 +266,13 @@ class DCMTK_DCMRT_EXPORT DRTConsentForClinicalTrialUseSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -305,7 +307,7 @@ class DCMTK_DCMRT_EXPORT DRTConsentForClinicalTrialUseSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -313,7 +315,7 @@ class DCMTK_DCMRT_EXPORT DRTConsentForClinicalTrialUseSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h
index e03002a..f66260a 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTCalculatedDoseReferenceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -203,6 +204,7 @@ class DCMTK_DCMRT_EXPORT DRTCalculatedDoseReferenceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTCalculatedDoseReferenceSequence &operator=(const DRTCalculatedDoseReferenceSequence &copy);
 
@@ -225,7 +227,7 @@ class DCMTK_DCMRT_EXPORT DRTCalculatedDoseReferenceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -241,7 +243,7 @@ class DCMTK_DCMRT_EXPORT DRTCalculatedDoseReferenceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -264,31 +266,31 @@ class DCMTK_DCMRT_EXPORT DRTCalculatedDoseReferenceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -301,13 +303,13 @@ class DCMTK_DCMRT_EXPORT DRTCalculatedDoseReferenceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -342,7 +344,7 @@ class DCMTK_DCMRT_EXPORT DRTCalculatedDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -350,7 +352,7 @@ class DCMTK_DCMRT_EXPORT DRTCalculatedDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtces.h b/dcmrt/include/dcmtk/dcmrt/seq/drtces.h
index 4ff68b0..24a0d79 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtces.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtces.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContributingEquipmentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -381,6 +382,7 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTContributingEquipmentSequence &operator=(const DRTContributingEquipmentSequence &copy);
 
@@ -403,7 +405,7 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -419,7 +421,7 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -442,31 +444,31 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -479,13 +481,13 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -520,7 +522,7 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -528,7 +530,7 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h
similarity index 78%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h
index 2ca82ef..50bae9e 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTApplicatorSequenceInRTIonBeamsModule
+ *  Header file for class DRTContextGroupIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTAS6_H
-#define DRTAS6_H
+#ifndef DRTCGIS_H
+#define DRTCGIS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
@@ -21,9 +21,9 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 
 
-/** Interface class for ApplicatorSequence (300a,0107) in RTIonBeamsModule
+/** Interface class for ContextGroupIdentificationSequence (0008,0123)
  */
-class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
+class DCMTK_DCMRT_EXPORT DRTContextGroupIdentificationSequence
   : protected DRTTypes
 {
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -90,77 +91,77 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
 
       // --- get DICOM attribute values ---
 
-        /** get AccessoryCode (300a,00f9)
+        /** get ContextGroupVersion (0008,0106)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
 
-        /** get ApplicatorDescription (300a,010a)
+        /** get ContextIdentifier (0008,010f)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const;
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
 
-        /** get ApplicatorID (300a,0108)
+        /** get ContextUID (0008,0117)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const;
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
-        /** get ApplicatorType (300a,0109)
+        /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const;
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
       // --- set DICOM attribute values ---
 
-        /** set AccessoryCode (300a,00f9)
+        /** set ContextGroupVersion (0008,0106)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
 
-        /** set ApplicatorDescription (300a,010a)
+        /** set ContextIdentifier (0008,010f)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
 
-        /** set ApplicatorID (300a,0108)
+        /** set ContextUID (0008,0117)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
-        /** set ApplicatorType (300a,0109)
+        /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
-        DcmLongString AccessoryCode;
-        /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3
-        DcmLongString ApplicatorDescription;
-        /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1
-        DcmShortString ApplicatorID;
-        /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1
-        DcmCodeString ApplicatorType;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=1
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1
+        DcmCodeString MappingResource;
 
     };
 
@@ -169,21 +170,22 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTApplicatorSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+    DRTContextGroupIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTApplicatorSequenceInRTIonBeamsModule(const DRTApplicatorSequenceInRTIonBeamsModule &copy);
+    DRTContextGroupIdentificationSequence(const DRTContextGroupIdentificationSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTApplicatorSequenceInRTIonBeamsModule();
+    virtual ~DRTContextGroupIdentificationSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTApplicatorSequenceInRTIonBeamsModule &operator=(const DRTApplicatorSequenceInRTIonBeamsModule &copy);
+    DRTContextGroupIdentificationSequence &operator=(const DRTContextGroupIdentificationSequence &copy);
 
   // --- general methods ---
 
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -220,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -243,31 +245,31 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -280,13 +282,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -321,7 +323,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -329,7 +331,7 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtchs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtchs.h
index a613817..8e1c679 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtchs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtchs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -614,6 +615,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTChannelSequence &operator=(const DRTChannelSequence &copy);
 
@@ -636,7 +638,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -652,7 +654,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -675,31 +677,31 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -712,13 +714,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -753,7 +755,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -761,7 +763,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
index 014d4a4..89240eb 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContentItemModifierSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -59,6 +59,7 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -369,6 +370,7 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTContentItemModifierSequence &operator=(const DRTContentItemModifierSequence &copy);
 
@@ -391,7 +393,7 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -407,7 +409,7 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -430,31 +432,31 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -467,13 +469,13 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -508,7 +510,7 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -516,7 +518,7 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcis.h
index 2b6ca66..407a4d9 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContourImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTContourImageSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -189,6 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTContourImageSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTContourImageSequence &operator=(const DRTContourImageSequence &copy);
 
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTContourImageSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTContourImageSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -250,31 +252,31 @@ class DCMTK_DCMRT_EXPORT DRTContourImageSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -287,13 +289,13 @@ class DCMTK_DCMRT_EXPORT DRTContourImageSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -328,7 +330,7 @@ class DCMTK_DCMRT_EXPORT DRTContourImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -336,7 +338,7 @@ class DCMTK_DCMRT_EXPORT DRTContourImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h
index d2fe418..a43cf3f 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConceptNameCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTConceptNameCodeSequence &operator=(const DRTConceptNameCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcos.h
index b3165ac..37a1150 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcos.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcos.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -302,6 +303,13 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
          */
         OFCondition getSourceToCompensatorTrayDistance(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get TrayAccessoryCode (300a,0355)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTrayAccessoryCode(OFString &value, const signed long pos = 0) const;
+
       // --- set DICOM attribute values ---
 
         /** set AccessoryCode (300a,00f9)
@@ -423,6 +431,13 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
          */
         OFCondition setSourceToCompensatorTrayDistance(const OFString &value, const OFBool check = OFTrue);
 
+        /** set TrayAccessoryCode (300a,0355)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTrayAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -462,6 +477,8 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
         DcmDecimalString SourceToCompensatorDistance;
         /// SourceToCompensatorTrayDistance (300a,00e6) vr=DS, vm=1, type=2
         DcmDecimalString SourceToCompensatorTrayDistance;
+        /// TrayAccessoryCode (300a,0355) vr=LO, vm=1, type=3
+        DcmLongString TrayAccessoryCode;
 
     };
 
@@ -483,6 +500,7 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTCompensatorSequence &operator=(const DRTCompensatorSequence &copy);
 
@@ -505,7 +523,7 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -521,7 +539,7 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -544,31 +562,31 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -581,13 +599,13 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -622,7 +640,7 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -630,7 +648,7 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h
index 2f27218..a6d98d2 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCorrectedParameterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTCorrectedParameterSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -189,6 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTCorrectedParameterSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTCorrectedParameterSequence &operator=(const DRTCorrectedParameterSequence &copy);
 
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTCorrectedParameterSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTCorrectedParameterSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -250,31 +252,31 @@ class DCMTK_DCMRT_EXPORT DRTCorrectedParameterSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -287,13 +289,13 @@ class DCMTK_DCMRT_EXPORT DRTCorrectedParameterSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -328,7 +330,7 @@ class DCMTK_DCMRT_EXPORT DRTCorrectedParameterSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -336,7 +338,7 @@ class DCMTK_DCMRT_EXPORT DRTCorrectedParameterSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
index 76052a2..19ed79e 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConsultingPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -230,6 +231,7 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTConsultingPhysicianIdentificationSequence &operator=(const DRTConsultingPhysicianIdentificationSequence &copy);
 
@@ -252,7 +254,7 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -268,7 +270,7 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -291,31 +293,31 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -328,13 +330,13 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -369,7 +371,7 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcps.h
index 996ace1..5ec1825 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -59,6 +59,7 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -729,6 +730,7 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTControlPointSequence &operator=(const DRTControlPointSequence &copy);
 
@@ -751,7 +753,7 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -767,7 +769,7 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -790,31 +792,31 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -827,13 +829,13 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -868,7 +870,7 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -876,7 +878,7 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcs.h
index 1e90545..4a8c3ac 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -301,6 +302,7 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTContourSequence &operator=(const DRTContourSequence &copy);
 
@@ -323,7 +325,7 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -339,7 +341,7 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -362,31 +364,31 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -399,13 +401,13 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -440,7 +442,7 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -448,7 +450,7 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h
index e57aa0e..7e06430 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConversionSourceAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTConversionSourceAttributesSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -189,6 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTConversionSourceAttributesSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTConversionSourceAttributesSequence &operator=(const DRTConversionSourceAttributesSequence &copy);
 
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTConversionSourceAttributesSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTConversionSourceAttributesSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -250,31 +252,31 @@ class DCMTK_DCMRT_EXPORT DRTConversionSourceAttributesSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -287,13 +289,13 @@ class DCMTK_DCMRT_EXPORT DRTConversionSourceAttributesSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -328,7 +330,7 @@ class DCMTK_DCMRT_EXPORT DRTConversionSourceAttributesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -336,7 +338,7 @@ class DCMTK_DCMRT_EXPORT DRTConversionSourceAttributesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h
index 273d59e..3be5955 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelShieldSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelShieldSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -258,6 +259,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelShieldSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTChannelShieldSequence &operator=(const DRTChannelShieldSequence &copy);
 
@@ -280,7 +282,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelShieldSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelShieldSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -319,31 +321,31 @@ class DCMTK_DCMRT_EXPORT DRTChannelShieldSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -356,13 +358,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelShieldSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -397,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelShieldSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -405,7 +407,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelShieldSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
index 279ba04..0932365 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCodingSchemeIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -230,6 +231,7 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTCodingSchemeIdentificationSequence &operator=(const DRTCodingSchemeIdentificationSequence &copy);
 
@@ -252,7 +254,7 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -268,7 +270,7 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -291,31 +293,31 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -328,13 +330,13 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -369,7 +371,7 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcss.h
index 5368bc5..79c0d22 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTChannelSourceSequence &operator=(const DRTChannelSourceSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h
index 49f3811..7280e61 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDerivationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTDerivationCodeSequence &operator=(const DRTDerivationCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h
similarity index 72%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h
index d24f3e9..e687b54 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h
@@ -1,30 +1,29 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTROIContourSequence
+ *  Header file for class DRTDeliveredDepthDoseParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTRCS_H
-#define DRTRCS_H
+#ifndef DRTDDDPS_H
+#define DRTDDDPS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtcs.h"     // for ContourSequence
 
 
-/** Interface class for ROIContourSequence (3006,0039)
+/** Interface class for DeliveredDepthDoseParametersSequence (300a,0506)
  */
-class DCMTK_DCMRT_EXPORT DRTROIContourSequence
+class DCMTK_DCMRT_EXPORT DRTDeliveredDepthDoseParametersSequence
   : protected DRTTypes
 {
 
@@ -56,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -91,107 +91,93 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
 
       // --- get DICOM attribute values ---
 
-        /** get ROIDisplayColor (3006,002a)
+        /** get DeliveredDistalDepth (300a,0508)
          *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getROIDisplayColor(OFString &value, const signed long pos = 0) const;
+        OFCondition getDeliveredDistalDepth(Float32 &value, const unsigned long pos = 0) const;
 
-        /** get ROIDisplayColor (3006,002a)
+        /** get DeliveredDistalDepthFraction (300a,0507)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getROIDisplayColor(Sint32 &value, const unsigned long pos = 0) const;
+        OFCondition getDeliveredDistalDepthFraction(Float32 &value, const unsigned long pos = 0) const;
 
-        /** get RecommendedDisplayCIELabValue (0062,000d)
+        /** get DeliveredNominalRangeModulatedRegionDepths (300a,0510)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getRecommendedDisplayCIELabValue(Uint16 &value, const unsigned long pos = 0) const;
+        OFCondition getDeliveredNominalRangeModulatedRegionDepths(Float32 &value, const unsigned long pos = 0) const;
 
-        /** get RecommendedDisplayGrayscaleValue (0062,000c)
+        /** get DeliveredNominalRangeModulationFractions (300a,0509)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getRecommendedDisplayGrayscaleValue(Uint16 &value, const unsigned long pos = 0) const;
+        OFCondition getDeliveredNominalRangeModulationFractions(Float32 &value, const unsigned long pos = 0) const;
 
-        /** get ReferencedROINumber (3006,0084)
+        /** get DeliveredReferenceDoseDefinition (300a,0511)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const;
+        OFCondition getDeliveredReferenceDoseDefinition(OFString &value, const signed long pos = 0) const;
 
-        /** get ReferencedROINumber (3006,0084)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- get DICOM sequence attributes ---
-
-        /** get ContourSequence (3006,0040)
-         *  @return reference to sequence element
-         */
-        DRTContourSequence &getContourSequence()
-            { return ContourSequence; }
+      // --- set DICOM attribute values ---
 
-        /** get ContourSequence (3006,0040)
-         *  @return const reference to sequence element
+        /** set DeliveredDistalDepth (300a,0508)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
          */
-        const DRTContourSequence &getContourSequence() const
-            { return ContourSequence; }
+        OFCondition setDeliveredDistalDepth(const Float32 value, const unsigned long pos = 0);
 
-      // --- set DICOM attribute values ---
-
-        /** set ROIDisplayColor (3006,002a)
-         *  @param  value  value to be set (possibly multi-valued) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (3) if enabled
+        /** set DeliveredDistalDepthFraction (300a,0507)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setROIDisplayColor(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setDeliveredDistalDepthFraction(const Float32 value, const unsigned long pos = 0);
 
-        /** set RecommendedDisplayCIELabValue (0062,000d)
+        /** set DeliveredNominalRangeModulatedRegionDepths (300a,0510)
          *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=3
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setRecommendedDisplayCIELabValue(const Uint16 value, const unsigned long pos = 0);
+        OFCondition setDeliveredNominalRangeModulatedRegionDepths(const Float32 value, const unsigned long pos = 0);
 
-        /** set RecommendedDisplayGrayscaleValue (0062,000c)
+        /** set DeliveredNominalRangeModulationFractions (300a,0509)
          *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setRecommendedDisplayGrayscaleValue(const Uint16 value, const unsigned long pos = 0);
+        OFCondition setDeliveredNominalRangeModulationFractions(const Float32 value, const unsigned long pos = 0);
 
-        /** set ReferencedROINumber (3006,0084)
+        /** set DeliveredReferenceDoseDefinition (300a,0511)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setDeliveredReferenceDoseDefinition(const OFString &value, const OFBool check = OFTrue);
 
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// ContourSequence (3006,0040) vr=SQ, vm=1, type=3
-        DRTContourSequence ContourSequence;
-        /// ROIDisplayColor (3006,002a) vr=IS, vm=3, type=3
-        DcmIntegerString ROIDisplayColor;
-        /// RecommendedDisplayCIELabValue (0062,000d) vr=US, vm=3, type=3
-        DcmUnsignedShort RecommendedDisplayCIELabValue;
-        /// RecommendedDisplayGrayscaleValue (0062,000c) vr=US, vm=1, type=3
-        DcmUnsignedShort RecommendedDisplayGrayscaleValue;
-        /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedROINumber;
+        /// DeliveredDistalDepth (300a,0508) vr=FL, vm=1, type=1
+        DcmFloatingPointSingle DeliveredDistalDepth;
+        /// DeliveredDistalDepthFraction (300a,0507) vr=FL, vm=1, type=1
+        DcmFloatingPointSingle DeliveredDistalDepthFraction;
+        /// DeliveredNominalRangeModulatedRegionDepths (300a,0510) vr=FL, vm=2, type=1C
+        DcmFloatingPointSingle DeliveredNominalRangeModulatedRegionDepths;
+        /// DeliveredNominalRangeModulationFractions (300a,0509) vr=FL, vm=2, type=1C
+        DcmFloatingPointSingle DeliveredNominalRangeModulationFractions;
+        /// DeliveredReferenceDoseDefinition (300a,0511) vr=CS, vm=1, type=1
+        DcmCodeString DeliveredReferenceDoseDefinition;
 
     };
 
@@ -200,21 +186,22 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTROIContourSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTDeliveredDepthDoseParametersSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTROIContourSequence(const DRTROIContourSequence &copy);
+    DRTDeliveredDepthDoseParametersSequence(const DRTDeliveredDepthDoseParametersSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTROIContourSequence();
+    virtual ~DRTDeliveredDepthDoseParametersSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTROIContourSequence &operator=(const DRTROIContourSequence &copy);
+    DRTDeliveredDepthDoseParametersSequence &operator=(const DRTDeliveredDepthDoseParametersSequence &copy);
 
   // --- general methods ---
 
@@ -235,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -251,7 +238,7 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -274,31 +261,31 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -311,13 +298,13 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -352,7 +339,7 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -360,7 +347,7 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtddps.h
similarity index 73%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtddps.h
index 7476aaf..f5a3642 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtddps.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
+ *  Header file for class DRTDepthDoseParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTRSHS6_H
-#define DRTRSHS6_H
+#ifndef DRTDDPS_H
+#define DRTDDPS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
@@ -21,9 +21,9 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 
 
-/** Interface class for RangeShifterSettingsSequence (300a,0360) in RTIonBeamsModule
+/** Interface class for DepthDoseParametersSequence (300a,0505)
  */
-class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
+class DCMTK_DCMRT_EXPORT DRTDepthDoseParametersSequence
   : protected DRTTypes
 {
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -90,84 +91,93 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
 
       // --- get DICOM attribute values ---
 
-        /** get IsocenterToRangeShifterDistance (300a,0364)
+        /** get DistalDepth (300a,0502)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getIsocenterToRangeShifterDistance(Float32 &value, const unsigned long pos = 0) const;
+        OFCondition getDistalDepth(Float32 &value, const unsigned long pos = 0) const;
 
-        /** get RangeShifterSetting (300a,0362)
+        /** get DistalDepthFraction (300a,0501)
          *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getRangeShifterSetting(OFString &value, const signed long pos = 0) const;
+        OFCondition getDistalDepthFraction(Float32 &value, const unsigned long pos = 0) const;
 
-        /** get RangeShifterWaterEquivalentThickness (300a,0366)
+        /** get NominalRangeModulatedRegionDepths (300a,0504)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getRangeShifterWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const;
+        OFCondition getNominalRangeModulatedRegionDepths(Float32 &value, const unsigned long pos = 0) const;
 
-        /** get ReferencedRangeShifterNumber (300c,0100)
+        /** get NominalRangeModulationFractions (300a,0503)
          *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getReferencedRangeShifterNumber(OFString &value, const signed long pos = 0) const;
+        OFCondition getNominalRangeModulationFractions(Float32 &value, const unsigned long pos = 0) const;
 
-        /** get ReferencedRangeShifterNumber (300c,0100)
+        /** get ReferenceDoseDefinition (300a,0512)
          *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos = 0) const;
+        OFCondition getReferenceDoseDefinition(OFString &value, const signed long pos = 0) const;
 
       // --- set DICOM attribute values ---
 
-        /** set IsocenterToRangeShifterDistance (300a,0364)
+        /** set DistalDepth (300a,0502)
          *  @param  value  value to be set (should be valid for this VR)
          *  @param  pos    index of the value to be set (0..vm-1), vm=1
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setIsocenterToRangeShifterDistance(const Float32 value, const unsigned long pos = 0);
+        OFCondition setDistalDepth(const Float32 value, const unsigned long pos = 0);
 
-        /** set RangeShifterSetting (300a,0362)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+        /** set DistalDepthFraction (300a,0501)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setRangeShifterSetting(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setDistalDepthFraction(const Float32 value, const unsigned long pos = 0);
 
-        /** set RangeShifterWaterEquivalentThickness (300a,0366)
+        /** set NominalRangeModulatedRegionDepths (300a,0504)
          *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNominalRangeModulatedRegionDepths(const Float32 value, const unsigned long pos = 0);
+
+        /** set NominalRangeModulationFractions (300a,0503)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setRangeShifterWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0);
+        OFCondition setNominalRangeModulationFractions(const Float32 value, const unsigned long pos = 0);
 
-        /** set ReferencedRangeShifterNumber (300c,0100)
+        /** set ReferenceDoseDefinition (300a,0512)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setReferencedRangeShifterNumber(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setReferenceDoseDefinition(const OFString &value, const OFBool check = OFTrue);
 
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// IsocenterToRangeShifterDistance (300a,0364) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle IsocenterToRangeShifterDistance;
-        /// RangeShifterSetting (300a,0362) vr=LO, vm=1, type=1
-        DcmLongString RangeShifterSetting;
-        /// RangeShifterWaterEquivalentThickness (300a,0366) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle RangeShifterWaterEquivalentThickness;
-        /// ReferencedRangeShifterNumber (300c,0100) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedRangeShifterNumber;
+        /// DistalDepth (300a,0502) vr=FL, vm=1, type=1
+        DcmFloatingPointSingle DistalDepth;
+        /// DistalDepthFraction (300a,0501) vr=FL, vm=1, type=1
+        DcmFloatingPointSingle DistalDepthFraction;
+        /// NominalRangeModulatedRegionDepths (300a,0504) vr=FL, vm=2, type=1C
+        DcmFloatingPointSingle NominalRangeModulatedRegionDepths;
+        /// NominalRangeModulationFractions (300a,0503) vr=FL, vm=2, type=1C
+        DcmFloatingPointSingle NominalRangeModulationFractions;
+        /// ReferenceDoseDefinition (300a,0512) vr=CS, vm=1, type=1
+        DcmCodeString ReferenceDoseDefinition;
 
     };
 
@@ -176,21 +186,22 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+    DRTDepthDoseParametersSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy);
+    DRTDepthDoseParametersSequence(const DRTDepthDoseParametersSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTRangeShifterSettingsSequenceInRTIonBeamsModule();
+    virtual ~DRTDepthDoseParametersSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy);
+    DRTDepthDoseParametersSequence &operator=(const DRTDepthDoseParametersSequence &copy);
 
   // --- general methods ---
 
@@ -211,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -227,7 +238,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -250,31 +261,31 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -287,13 +298,13 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -328,7 +339,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -336,7 +347,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
index 9e66cb6..3c41a37 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDeidentificationActionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTDeidentificationActionSequence &operator=(const DRTDeidentificationActionSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h
index 40d30cb..a41917e 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDeidentificationMethodCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTDeidentificationMethodCodeSequence &operator=(const DRTDeidentificationMethodCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
index 9bca717..36c3959 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDICOMMediaRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTDICOMMediaRetrievalSequence &operator=(const DRTDICOMMediaRetrievalSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h
index ca2f907..6a56023 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDICOMRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMRetrievalSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -134,6 +135,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMRetrievalSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTDICOMRetrievalSequence &operator=(const DRTDICOMRetrievalSequence &copy);
 
@@ -156,7 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMRetrievalSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMRetrievalSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -195,31 +197,31 @@ class DCMTK_DCMRT_EXPORT DRTDICOMRetrievalSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -232,13 +234,13 @@ class DCMTK_DCMRT_EXPORT DRTDICOMRetrievalSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -273,7 +275,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMRetrievalSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -281,7 +283,7 @@ class DCMTK_DCMRT_EXPORT DRTDICOMRetrievalSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h
index 254a86f..13f3d6b 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTDoseReferenceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -533,6 +534,7 @@ class DCMTK_DCMRT_EXPORT DRTDoseReferenceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTDoseReferenceSequence &operator=(const DRTDoseReferenceSequence &copy);
 
@@ -555,7 +557,7 @@ class DCMTK_DCMRT_EXPORT DRTDoseReferenceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -571,7 +573,7 @@ class DCMTK_DCMRT_EXPORT DRTDoseReferenceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -594,31 +596,31 @@ class DCMTK_DCMRT_EXPORT DRTDoseReferenceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -631,13 +633,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseReferenceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -672,7 +674,7 @@ class DCMTK_DCMRT_EXPORT DRTDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -680,7 +682,7 @@ class DCMTK_DCMRT_EXPORT DRTDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtds.h
index c1c1a54..e43afa7 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -273,6 +274,13 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -457,6 +465,13 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -522,6 +537,8 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
         DcmLongString ManufacturerModelName;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -547,6 +564,7 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTDeviceSequence &operator=(const DRTDeviceSequence &copy);
 
@@ -569,7 +587,7 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -585,7 +603,7 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -608,31 +626,31 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -645,13 +663,13 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -686,7 +704,7 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -694,7 +712,7 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h
index 258b1b9..58f7315 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDigitalSignaturePurposeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTDigitalSignaturePurposeCodeSequence &operator=(const DRTDigitalSignaturePurposeCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdss.h
index 6def9ee..3e93b87 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtdss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDigitalSignaturesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturesSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -263,6 +264,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturesSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTDigitalSignaturesSequence &operator=(const DRTDigitalSignaturesSequence &copy);
 
@@ -285,7 +287,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturesSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -301,7 +303,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturesSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -324,31 +326,31 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturesSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -361,13 +363,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturesSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -402,7 +404,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -410,7 +412,7 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h
index ec4b5ce..3440e89 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDVHSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -343,6 +344,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTDVHSequence &operator=(const DRTDVHSequence &copy);
 
@@ -365,7 +367,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -381,7 +383,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -404,31 +406,31 @@ class DCMTK_DCMRT_EXPORT DRTDVHSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -441,13 +443,13 @@ class DCMTK_DCMRT_EXPORT DRTDVHSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -482,7 +484,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -490,7 +492,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h
index 4bffe6d..5d4cd2b 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDVHReferencedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHReferencedROISequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -157,6 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHReferencedROISequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTDVHReferencedROISequence &operator=(const DRTDVHReferencedROISequence &copy);
 
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHReferencedROISequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHReferencedROISequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -218,31 +220,31 @@ class DCMTK_DCMRT_EXPORT DRTDVHReferencedROISequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -255,13 +257,13 @@ class DCMTK_DCMRT_EXPORT DRTDVHReferencedROISequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHReferencedROISequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -304,7 +306,7 @@ class DCMTK_DCMRT_EXPORT DRTDVHReferencedROISequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drteas.h b/dcmrt/include/dcmtk/dcmrt/seq/drteas.h
index ca2279e..dde50fe 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drteas.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drteas.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTEncryptedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTEncryptedAttributesSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTEncryptedAttributesSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTEncryptedAttributesSequence &operator=(const DRTEncryptedAttributesSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTEncryptedAttributesSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTEncryptedAttributesSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTEncryptedAttributesSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTEncryptedAttributesSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTEncryptedAttributesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTEncryptedAttributesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
index 0bedc2c..f867aa5 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTEquivalentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -118,6 +119,48 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
          */
         OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
 
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
         /** get LongCodeValue (0008,0119)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -125,6 +168,27 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
          */
         OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
         /** get URNCodeValue (0008,0120)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -162,6 +226,48 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
          */
         OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
         /** set LongCodeValue (0008,0119)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
@@ -169,6 +275,27 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
          */
         OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
         /** set URNCodeValue (0008,0120)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
@@ -189,8 +316,26 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
         /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
         DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
         DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
@@ -214,6 +359,7 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTEquivalentCodeSequence &operator=(const DRTEquivalentCodeSequence &copy);
 
@@ -236,7 +382,7 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -252,7 +398,7 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -275,31 +421,31 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -312,13 +458,13 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -353,7 +499,7 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -361,7 +507,7 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtes.h b/dcmrt/include/dcmtk/dcmrt/seq/drtes.h
index 91d4851..7f58875 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtes.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtes.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTExposureSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -60,6 +60,7 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -580,6 +581,7 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTExposureSequence &operator=(const DRTExposureSequence &copy);
 
@@ -602,7 +604,7 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -618,7 +620,7 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -641,31 +643,31 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -678,13 +680,13 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -719,7 +721,7 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -727,7 +729,7 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfds.h
index 3958b4e..3a5f6fb 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtfds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFixationDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTFixationDeviceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -230,6 +231,7 @@ class DCMTK_DCMRT_EXPORT DRTFixationDeviceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTFixationDeviceSequence &operator=(const DRTFixationDeviceSequence &copy);
 
@@ -252,7 +254,7 @@ class DCMTK_DCMRT_EXPORT DRTFixationDeviceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -268,7 +270,7 @@ class DCMTK_DCMRT_EXPORT DRTFixationDeviceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -291,31 +293,31 @@ class DCMTK_DCMRT_EXPORT DRTFixationDeviceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -328,13 +330,13 @@ class DCMTK_DCMRT_EXPORT DRTFixationDeviceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -369,7 +371,7 @@ class DCMTK_DCMRT_EXPORT DRTFixationDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTFixationDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfes.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfes.h
index c0b838a..1dedff0 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtfes.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfes.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFrameExtractionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTFrameExtractionSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -182,6 +183,7 @@ class DCMTK_DCMRT_EXPORT DRTFrameExtractionSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTFrameExtractionSequence &operator=(const DRTFrameExtractionSequence &copy);
 
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTFrameExtractionSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -220,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTFrameExtractionSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -243,31 +245,31 @@ class DCMTK_DCMRT_EXPORT DRTFrameExtractionSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -280,13 +282,13 @@ class DCMTK_DCMRT_EXPORT DRTFrameExtractionSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -321,7 +323,7 @@ class DCMTK_DCMRT_EXPORT DRTFrameExtractionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -329,7 +331,7 @@ class DCMTK_DCMRT_EXPORT DRTFrameExtractionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h
index 271ad22..70ac269 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -59,6 +59,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -366,6 +367,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTFractionGroupSequence &operator=(const DRTFractionGroupSequence &copy);
 
@@ -388,7 +390,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -404,7 +406,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -427,31 +429,31 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -464,13 +466,13 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -505,7 +507,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -513,7 +515,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h
index 2d51366..44ae5bb 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionGroupSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSummarySequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -220,6 +221,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSummarySequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTFractionGroupSummarySequence &operator=(const DRTFractionGroupSummarySequence &copy);
 
@@ -242,7 +244,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSummarySequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -258,7 +260,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSummarySequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -281,31 +283,31 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSummarySequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -318,13 +320,13 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSummarySequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -359,7 +361,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSummarySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -367,7 +369,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSummarySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfms.h
index 8f86405..8d7987e 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtfms.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfms.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFluenceMapSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTFluenceMapSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -157,6 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTFluenceMapSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTFluenceMapSequence &operator=(const DRTFluenceMapSequence &copy);
 
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTFluenceMapSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTFluenceMapSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -218,31 +220,31 @@ class DCMTK_DCMRT_EXPORT DRTFluenceMapSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -255,13 +257,13 @@ class DCMTK_DCMRT_EXPORT DRTFluenceMapSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTFluenceMapSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -304,7 +306,7 @@ class DCMTK_DCMRT_EXPORT DRTFluenceMapSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h
index ae70ff5..3cd3b87 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionStatusSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionStatusSummarySequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -189,6 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionStatusSummarySequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTFractionStatusSummarySequence &operator=(const DRTFractionStatusSummarySequence &copy);
 
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionStatusSummarySequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionStatusSummarySequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -250,31 +252,31 @@ class DCMTK_DCMRT_EXPORT DRTFractionStatusSummarySequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -287,13 +289,13 @@ class DCMTK_DCMRT_EXPORT DRTFractionStatusSummarySequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -328,7 +330,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionStatusSummarySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -336,7 +338,7 @@ class DCMTK_DCMRT_EXPORT DRTFractionStatusSummarySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas.h
index 996eb8b..f367de1 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtgas.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtgas.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTGeneralAccessorySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -221,6 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTGeneralAccessorySequence &operator=(const DRTGeneralAccessorySequence &copy);
 
@@ -243,7 +245,7 @@ class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -259,7 +261,7 @@ class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -282,31 +284,31 @@ class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -319,13 +321,13 @@ class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -360,7 +362,7 @@ class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -368,7 +370,7 @@ class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h
similarity index 81%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h
index c1f068f..4f5a7a5 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTOtherPatientIDsSequence
+ *  Header file for class DRTGroupOfPatientsIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTOPIS_H
-#define DRTOPIS_H
+#ifndef DRTGPIS_H
+#define DRTGPIS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
@@ -22,9 +22,9 @@
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 
 
-/** Interface class for OtherPatientIDsSequence (0010,1002)
+/** Interface class for GroupOfPatientsIdentificationSequence (0010,0027)
  */
-class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
+class DCMTK_DCMRT_EXPORT DRTGroupOfPatientsIdentificationSequence
   : protected DRTTypes
 {
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -105,12 +106,19 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
          */
         OFCondition getPatientID(OFString &value, const signed long pos = 0) const;
 
-        /** get TypeOfPatientID (0010,0022)
+        /** get PatientPosition (0018,5100)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const;
+        OFCondition getPatientPosition(OFString &value, const signed long pos = 0) const;
+
+        /** get SubjectRelativePositionInImage (0010,0028)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSubjectRelativePositionInImage(Uint16 &value, const unsigned long pos = 0) const;
 
       // --- get DICOM sequence attributes ---
 
@@ -142,12 +150,19 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
          */
         OFCondition setPatientID(const OFString &value, const OFBool check = OFTrue);
 
-        /** set TypeOfPatientID (0010,0022)
+        /** set PatientPosition (0018,5100)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setPatientPosition(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SubjectRelativePositionInImage (0010,0028)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=3
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSubjectRelativePositionInImage(const Uint16 value, const unsigned long pos = 0);
 
       private:
 
@@ -160,8 +175,10 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
         DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
         /// PatientID (0010,0020) vr=LO, vm=1, type=1
         DcmLongString PatientID;
-        /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=1
-        DcmCodeString TypeOfPatientID;
+        /// PatientPosition (0018,5100) vr=CS, vm=1, type=3
+        DcmCodeString PatientPosition;
+        /// SubjectRelativePositionInImage (0010,0028) vr=US, vm=3, type=3
+        DcmUnsignedShort SubjectRelativePositionInImage;
 
     };
 
@@ -170,21 +187,22 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTOtherPatientIDsSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTGroupOfPatientsIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTOtherPatientIDsSequence(const DRTOtherPatientIDsSequence &copy);
+    DRTGroupOfPatientsIdentificationSequence(const DRTGroupOfPatientsIdentificationSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTOtherPatientIDsSequence();
+    virtual ~DRTGroupOfPatientsIdentificationSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTOtherPatientIDsSequence &operator=(const DRTOtherPatientIDsSequence &copy);
+    DRTGroupOfPatientsIdentificationSequence &operator=(const DRTGroupOfPatientsIdentificationSequence &copy);
 
   // --- general methods ---
 
@@ -205,7 +223,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -221,7 +239,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -244,31 +262,31 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -281,13 +299,13 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -322,7 +340,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -330,7 +348,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h
index 0b84aa3..32dee63 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTHL7StructuredDocumentReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTHL7StructuredDocumentReferenceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -182,6 +183,7 @@ class DCMTK_DCMRT_EXPORT DRTHL7StructuredDocumentReferenceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTHL7StructuredDocumentReferenceSequence &operator=(const DRTHL7StructuredDocumentReferenceSequence &copy);
 
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTHL7StructuredDocumentReferenceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -220,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTHL7StructuredDocumentReferenceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -243,31 +245,31 @@ class DCMTK_DCMRT_EXPORT DRTHL7StructuredDocumentReferenceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -280,13 +282,13 @@ class DCMTK_DCMRT_EXPORT DRTHL7StructuredDocumentReferenceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -321,7 +323,7 @@ class DCMTK_DCMRT_EXPORT DRTHL7StructuredDocumentReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -329,7 +331,7 @@ class DCMTK_DCMRT_EXPORT DRTHL7StructuredDocumentReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiais.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiais.h
index 3426c48..d20b640 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtiais.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiais.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfAdmissionIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAdmissionIDSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -166,6 +167,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAdmissionIDSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIssuerOfAdmissionIDSequence &operator=(const DRTIssuerOfAdmissionIDSequence &copy);
 
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAdmissionIDSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAdmissionIDSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -227,31 +229,31 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAdmissionIDSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -264,13 +266,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAdmissionIDSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -305,7 +307,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAdmissionIDSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -313,7 +315,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAdmissionIDSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtians.h b/dcmrt/include/dcmtk/dcmrt/seq/drtians.h
index d3c22e6..a603cb4 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtians.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtians.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfAccessionNumberSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAccessionNumberSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -166,6 +167,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAccessionNumberSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIssuerOfAccessionNumberSequence &operator=(const DRTIssuerOfAccessionNumberSequence &copy);
 
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAccessionNumberSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAccessionNumberSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -227,31 +229,31 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAccessionNumberSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -264,13 +266,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAccessionNumberSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -305,7 +307,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAccessionNumberSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -313,7 +315,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAccessionNumberSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h
index 253673f..edb16f5 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamLimitingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamLimitingDeviceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -202,6 +203,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamLimitingDeviceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIonBeamLimitingDeviceSequence &operator=(const DRTIonBeamLimitingDeviceSequence &copy);
 
@@ -224,7 +226,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamLimitingDeviceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -240,7 +242,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamLimitingDeviceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -263,31 +265,31 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamLimitingDeviceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -300,13 +302,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamLimitingDeviceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -341,7 +343,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamLimitingDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -349,7 +351,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamLimitingDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtibls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtibls.h
index d1cf983..ee649bc 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtibls.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtibls.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -384,6 +385,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIonBlockSequence &operator=(const DRTIonBlockSequence &copy);
 
@@ -406,7 +408,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -422,7 +424,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -445,31 +447,31 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -482,13 +484,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -523,7 +525,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -531,7 +533,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtibs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtibs.h
index 105ab41..ae50776 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtibs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtibs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtas6.h"    // for ApplicatorSequence
+#include "dcmtk/dcmrt/seq/drtddps.h"   // for DepthDoseParametersSequence
 #include "dcmtk/dcmrt/seq/drtgas.h"    // for GeneralAccessorySequence
 #include "dcmtk/dcmrt/seq/drtiblds.h"  // for IonBeamLimitingDeviceSequence
 #include "dcmtk/dcmrt/seq/drtibls.h"   // for IonBlockSequence
@@ -69,6 +70,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -160,6 +162,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
          */
         OFCondition getFinalCumulativeMetersetWeight(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get FixationEye (300a,0150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getFixationEye(OFString &value, const signed long pos = 0) const;
+
         /** get FixationLightAzimuthalAngle (300a,0356)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
@@ -209,6 +218,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
          */
         OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
 
+        /** get ModulatedScanModeType (300a,0309)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getModulatedScanModeType(OFString &value, const signed long pos = 0) const;
+
         /** get NumberOfBlocks (300a,00f0)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -482,6 +498,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
         const DRTApplicatorSequenceInRTIonBeamsModule &getApplicatorSequence() const
             { return ApplicatorSequence; }
 
+        /** get DepthDoseParametersSequence (300a,0505)
+         *  @return reference to sequence element
+         */
+        DRTDepthDoseParametersSequence &getDepthDoseParametersSequence()
+            { return DepthDoseParametersSequence; }
+
+        /** get DepthDoseParametersSequence (300a,0505)
+         *  @return const reference to sequence element
+         */
+        const DRTDepthDoseParametersSequence &getDepthDoseParametersSequence() const
+            { return DepthDoseParametersSequence; }
+
         /** get GeneralAccessorySequence (300a,0420)
          *  @return reference to sequence element
          */
@@ -682,6 +710,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
          */
         OFCondition setFinalCumulativeMetersetWeight(const OFString &value, const OFBool check = OFTrue);
 
+        /** set FixationEye (300a,0150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setFixationEye(const OFString &value, const OFBool check = OFTrue);
+
         /** set FixationLightAzimuthalAngle (300a,0356)
          *  @param  value  value to be set (should be valid for this VR)
          *  @param  pos    index of the value to be set (0..vm-1), vm=1
@@ -731,6 +766,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
          */
         OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ModulatedScanModeType (300a,0309)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setModulatedScanModeType(const OFString &value, const OFBool check = OFTrue);
+
         /** set NumberOfBlocks (300a,00f0)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -921,10 +963,14 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
         DcmIntegerString BeamNumber;
         /// BeamType (300a,00c4) vr=CS, vm=1, type=1
         DcmCodeString BeamType;
+        /// DepthDoseParametersSequence (300a,0505) vr=SQ, vm=1, type=3
+        DRTDepthDoseParametersSequence DepthDoseParametersSequence;
         /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
         DcmLongString DeviceSerialNumber;
         /// FinalCumulativeMetersetWeight (300a,010e) vr=DS, vm=1, type=1C
         DcmDecimalString FinalCumulativeMetersetWeight;
+        /// FixationEye (300a,0150) vr=CS, vm=1, type=3
+        DcmCodeString FixationEye;
         /// FixationLightAzimuthalAngle (300a,0356) vr=FL, vm=1, type=3
         DcmFloatingPointSingle FixationLightAzimuthalAngle;
         /// FixationLightPolarAngle (300a,0358) vr=FL, vm=1, type=3
@@ -953,6 +999,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
         DcmLongString Manufacturer;
         /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
         DcmLongString ManufacturerModelName;
+        /// ModulatedScanModeType (300a,0309) vr=CS, vm=1, type=1C
+        DcmCodeString ModulatedScanModeType;
         /// NumberOfBlocks (300a,00f0) vr=IS, vm=1, type=1
         DcmIntegerString NumberOfBlocks;
         /// NumberOfBoli (300a,00ed) vr=IS, vm=1, type=1
@@ -1036,6 +1084,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIonBeamSequence &operator=(const DRTIonBeamSequence &copy);
 
@@ -1058,7 +1107,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -1074,7 +1123,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -1097,31 +1146,31 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -1134,13 +1183,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -1175,7 +1224,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -1183,7 +1232,7 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drticpds.h b/dcmrt/include/dcmtk/dcmrt/seq/drticpds.h
index 5cd017c..7158e6d 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drticpds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drticpds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonControlPointDeliverySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -62,6 +62,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -118,6 +119,20 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
          */
         OFCondition getBeamLimitingDeviceRotationDirection(OFString &value, const signed long pos = 0) const;
 
+        /** get ChairHeadFramePosition (300a,0151)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getChairHeadFramePosition(OFString &value, const signed long pos = 0) const;
+
+        /** get ChairHeadFramePosition (300a,0151)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getChairHeadFramePosition(Float64 &value, const unsigned long pos = 0) const;
+
         /** get DeliveredMeterset (3008,0044)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -293,6 +308,34 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
          */
         OFCondition getScanSpotPositionMap(Float32 &value, const unsigned long pos = 0) const;
 
+        /** get ScanSpotPrescribedIndices (300a,0391)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getScanSpotPrescribedIndices(OFString &value, const signed long pos = 0) const;
+
+        /** get ScanSpotPrescribedIndices (300a,0391)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getScanSpotPrescribedIndices(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get ScanSpotReordered (300a,0393)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getScanSpotReordered(OFString &value, const signed long pos = 0) const;
+
+        /** get ScanSpotTimeOffset (300a,038f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getScanSpotTimeOffset(Float32 &value, const unsigned long pos = 0) const;
+
         /** get ScanSpotTuneID (300a,0390)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -514,6 +557,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
          */
         OFCondition setBeamLimitingDeviceRotationDirection(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ChairHeadFramePosition (300a,0151)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setChairHeadFramePosition(const OFString &value, const OFBool check = OFTrue);
+
         /** set DeliveredMeterset (3008,0044)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -633,6 +683,27 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
          */
         OFCondition setScanSpotPositionMap(const Float32 value, const unsigned long pos = 0);
 
+        /** set ScanSpotPrescribedIndices (300a,0391)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1-n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setScanSpotPrescribedIndices(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ScanSpotReordered (300a,0393)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setScanSpotReordered(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ScanSpotTimeOffset (300a,038f)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setScanSpotTimeOffset(const Float32 value, const unsigned long pos = 0);
+
         /** set ScanSpotTuneID (300a,0390)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
@@ -735,6 +806,8 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
         DRTBeamLimitingDevicePositionSequence BeamLimitingDevicePositionSequence;
         /// BeamLimitingDeviceRotationDirection (300a,0121) vr=CS, vm=1, type=1C
         DcmCodeString BeamLimitingDeviceRotationDirection;
+        /// ChairHeadFramePosition (300a,0151) vr=DS, vm=1, type=3
+        DcmDecimalString ChairHeadFramePosition;
         /// CorrectedParameterSequence (3008,0068) vr=SQ, vm=1, type=3
         DRTCorrectedParameterSequence CorrectedParameterSequence;
         /// DeliveredMeterset (3008,0044) vr=DS, vm=1, type=1
@@ -781,6 +854,12 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
         DcmFloatingPointSingle ScanSpotMetersetsDelivered;
         /// ScanSpotPositionMap (300a,0394) vr=FL, vm=1-n, type=1C
         DcmFloatingPointSingle ScanSpotPositionMap;
+        /// ScanSpotPrescribedIndices (300a,0391) vr=IS, vm=1-n, type=1C
+        DcmIntegerString ScanSpotPrescribedIndices;
+        /// ScanSpotReordered (300a,0393) vr=CS, vm=1, type=3
+        DcmCodeString ScanSpotReordered;
+        /// ScanSpotTimeOffset (300a,038f) vr=FL, vm=1-n, type=3
+        DcmFloatingPointSingle ScanSpotTimeOffset;
         /// ScanSpotTuneID (300a,0390) vr=SH, vm=1, type=1C
         DcmShortString ScanSpotTuneID;
         /// ScanningSpotSize (300a,0398) vr=FL, vm=2, type=3
@@ -828,6 +907,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIonControlPointDeliverySequence &operator=(const DRTIonControlPointDeliverySequence &copy);
 
@@ -850,7 +930,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -866,7 +946,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -889,31 +969,31 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -926,13 +1006,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -967,7 +1047,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -975,7 +1055,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drticps.h b/dcmrt/include/dcmtk/dcmrt/seq/drticps.h
index e13581a..a94405b 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drticps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drticps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -61,6 +61,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -117,6 +118,20 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
          */
         OFCondition getBeamLimitingDeviceRotationDirection(OFString &value, const signed long pos = 0) const;
 
+        /** get ChairHeadFramePosition (300a,0151)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getChairHeadFramePosition(OFString &value, const signed long pos = 0) const;
+
+        /** get ChairHeadFramePosition (300a,0151)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getChairHeadFramePosition(Float64 &value, const unsigned long pos = 0) const;
+
         /** get ControlPointIndex (300a,0112)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -312,6 +327,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
          */
         OFCondition getScanSpotPositionMap(Float32 &value, const unsigned long pos = 0) const;
 
+        /** get ScanSpotReorderingAllowed (300a,0395)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getScanSpotReorderingAllowed(OFString &value, const signed long pos = 0) const;
+
         /** get ScanSpotTuneID (300a,0390)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -513,6 +535,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
          */
         OFCondition setBeamLimitingDeviceRotationDirection(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ChairHeadFramePosition (300a,0151)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setChairHeadFramePosition(const OFString &value, const OFBool check = OFTrue);
+
         /** set ControlPointIndex (300a,0112)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -639,6 +668,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
          */
         OFCondition setScanSpotPositionMap(const Float32 value, const unsigned long pos = 0);
 
+        /** set ScanSpotReorderingAllowed (300a,0395)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setScanSpotReorderingAllowed(const OFString &value, const OFBool check = OFTrue);
+
         /** set ScanSpotTuneID (300a,0390)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
@@ -727,6 +763,8 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
         DRTBeamLimitingDevicePositionSequence BeamLimitingDevicePositionSequence;
         /// BeamLimitingDeviceRotationDirection (300a,0121) vr=CS, vm=1, type=1C
         DcmCodeString BeamLimitingDeviceRotationDirection;
+        /// ChairHeadFramePosition (300a,0151) vr=DS, vm=1, type=3
+        DcmDecimalString ChairHeadFramePosition;
         /// ControlPointIndex (300a,0112) vr=IS, vm=1, type=1
         DcmIntegerString ControlPointIndex;
         /// CumulativeMetersetWeight (300a,0134) vr=DS, vm=1, type=2
@@ -773,6 +811,8 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
         DcmFloatingPointSingle ScanSpotMetersetWeights;
         /// ScanSpotPositionMap (300a,0394) vr=FL, vm=1-n, type=1C
         DcmFloatingPointSingle ScanSpotPositionMap;
+        /// ScanSpotReorderingAllowed (300a,0395) vr=CS, vm=1, type=3
+        DcmCodeString ScanSpotReorderingAllowed;
         /// ScanSpotTuneID (300a,0390) vr=SH, vm=1, type=1C
         DcmShortString ScanSpotTuneID;
         /// ScanningSpotSize (300a,0398) vr=FL, vm=2, type=3
@@ -816,6 +856,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIonControlPointSequence &operator=(const DRTIonControlPointSequence &copy);
 
@@ -838,7 +879,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -854,7 +895,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -877,31 +918,31 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -914,13 +955,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -955,7 +996,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -963,7 +1004,7 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtics.h
index 653883f..5433227 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtics.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtics.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTInstitutionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTInstitutionCodeSequence &operator=(const DRTInstitutionCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiis.h
index de08f19..9999b54 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtiis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIconImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -118,6 +119,13 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
          */
         OFCondition getBluePaletteColorLookupTableDescriptor(Uint16 &value, const unsigned long pos = 0) const;
 
+        /** get ColorSpace (0028,2002)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getColorSpace(OFString &value, const signed long pos = 0) const;
+
         /** get Columns (0028,0011)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
@@ -274,6 +282,13 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
          */
         OFCondition setBluePaletteColorLookupTableDescriptor(const Uint16 value, const unsigned long pos = 0);
 
+        /** set ColorSpace (0028,2002)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setColorSpace(const OFString &value, const OFBool check = OFTrue);
+
         /** set Columns (0028,0011)
          *  @param  value  value to be set (should be valid for this VR)
          *  @param  pos    index of the value to be set (0..vm-1), vm=1
@@ -392,6 +407,8 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
         DcmOtherByteOtherWord BluePaletteColorLookupTableData;
         /// BluePaletteColorLookupTableDescriptor (0028,1103) vr=US/SS, vm=3, type=1C
         DcmUnsignedShort BluePaletteColorLookupTableDescriptor;
+        /// ColorSpace (0028,2002) vr=CS, vm=1, type=3
+        DcmCodeString ColorSpace;
         /// Columns (0028,0011) vr=US, vm=1, type=1
         DcmUnsignedShort Columns;
         /// GreenPaletteColorLookupTableData (0028,1202) vr=OW, vm=1, type=1C
@@ -408,7 +425,7 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
         DcmCodeString PhotometricInterpretation;
         /// PixelAspectRatio (0028,0034) vr=IS, vm=2, type=1C
         DcmIntegerString PixelAspectRatio;
-        /// PixelData (7fe0,0010) vr=OB/OW, vm=1, type=1C
+        /// PixelData (7fe0,0010) vr=OB/OW, vm=1, type=1
         DcmPixelData PixelData;
         /// PixelRepresentation (0028,0103) vr=US, vm=1, type=1
         DcmUnsignedShort PixelRepresentation;
@@ -445,6 +462,7 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIconImageSequence &operator=(const DRTIconImageSequence &copy);
 
@@ -467,7 +485,7 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -483,7 +501,7 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -506,31 +524,31 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -543,13 +561,13 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -584,7 +602,7 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -592,7 +610,7 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h
index 60405a4..3debc5b 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfPatientIDQualifiersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -58,6 +58,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfPatientIDQualifiersSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -213,6 +214,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfPatientIDQualifiersSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIssuerOfPatientIDQualifiersSequence &operator=(const DRTIssuerOfPatientIDQualifiersSequence &copy);
 
@@ -235,7 +237,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfPatientIDQualifiersSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -251,7 +253,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfPatientIDQualifiersSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -274,31 +276,31 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfPatientIDQualifiersSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -311,13 +313,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfPatientIDQualifiersSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -352,7 +354,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfPatientIDQualifiersSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -360,7 +362,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfPatientIDQualifiersSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtircs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtircs.h
index 0cd3969..b21673c 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtircs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtircs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonRangeCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTIonRangeCompensatorSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -450,6 +451,7 @@ class DCMTK_DCMRT_EXPORT DRTIonRangeCompensatorSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIonRangeCompensatorSequence &operator=(const DRTIonRangeCompensatorSequence &copy);
 
@@ -472,7 +474,7 @@ class DCMTK_DCMRT_EXPORT DRTIonRangeCompensatorSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -488,7 +490,7 @@ class DCMTK_DCMRT_EXPORT DRTIonRangeCompensatorSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -511,31 +513,31 @@ class DCMTK_DCMRT_EXPORT DRTIonRangeCompensatorSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -548,13 +550,13 @@ class DCMTK_DCMRT_EXPORT DRTIonRangeCompensatorSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -589,7 +591,7 @@ class DCMTK_DCMRT_EXPORT DRTIonRangeCompensatorSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -597,7 +599,7 @@ class DCMTK_DCMRT_EXPORT DRTIonRangeCompensatorSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h
index bc19b3e..472b5b9 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfServiceEpisodeIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfServiceEpisodeIDSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -166,6 +167,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfServiceEpisodeIDSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIssuerOfServiceEpisodeIDSequence &operator=(const DRTIssuerOfServiceEpisodeIDSequence &copy);
 
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfServiceEpisodeIDSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfServiceEpisodeIDSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -227,31 +229,31 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfServiceEpisodeIDSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -264,13 +266,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfServiceEpisodeIDSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -305,7 +307,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfServiceEpisodeIDSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -313,7 +315,7 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfServiceEpisodeIDSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtitts.h b/dcmrt/include/dcmtk/dcmrt/seq/drtitts.h
index 957209a..1f48a7d 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtitts.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtitts.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -105,6 +106,48 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
          */
         OFCondition getBeamLimitingDeviceAngleTolerance(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get ChairHeadFramePositionTolerance (300a,0153)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getChairHeadFramePositionTolerance(OFString &value, const signed long pos = 0) const;
+
+        /** get ChairHeadFramePositionTolerance (300a,0153)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getChairHeadFramePositionTolerance(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get FixationLightAzimuthalAngleTolerance (300a,0154)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getFixationLightAzimuthalAngleTolerance(OFString &value, const signed long pos = 0) const;
+
+        /** get FixationLightAzimuthalAngleTolerance (300a,0154)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getFixationLightAzimuthalAngleTolerance(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get FixationLightPolarAngleTolerance (300a,0155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getFixationLightPolarAngleTolerance(OFString &value, const signed long pos = 0) const;
+
+        /** get FixationLightPolarAngleTolerance (300a,0155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getFixationLightPolarAngleTolerance(Float64 &value, const unsigned long pos = 0) const;
+
         /** get GantryAngleTolerance (300a,0044)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -119,6 +162,20 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
          */
         OFCondition getGantryAngleTolerance(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get HeadFixationAngleTolerance (300a,0152)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getHeadFixationAngleTolerance(OFString &value, const signed long pos = 0) const;
+
+        /** get HeadFixationAngleTolerance (300a,0152)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getHeadFixationAngleTolerance(Float64 &value, const unsigned long pos = 0) const;
+
         /** get PatientSupportAngleTolerance (300a,004c)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -240,6 +297,27 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
          */
         OFCondition setBeamLimitingDeviceAngleTolerance(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ChairHeadFramePositionTolerance (300a,0153)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setChairHeadFramePositionTolerance(const OFString &value, const OFBool check = OFTrue);
+
+        /** set FixationLightAzimuthalAngleTolerance (300a,0154)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setFixationLightAzimuthalAngleTolerance(const OFString &value, const OFBool check = OFTrue);
+
+        /** set FixationLightPolarAngleTolerance (300a,0155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setFixationLightPolarAngleTolerance(const OFString &value, const OFBool check = OFTrue);
+
         /** set GantryAngleTolerance (300a,0044)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -247,6 +325,13 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
          */
         OFCondition setGantryAngleTolerance(const OFString &value, const OFBool check = OFTrue);
 
+        /** set HeadFixationAngleTolerance (300a,0152)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setHeadFixationAngleTolerance(const OFString &value, const OFBool check = OFTrue);
+
         /** set PatientSupportAngleTolerance (300a,004c)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -319,8 +404,16 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
         DcmDecimalString BeamLimitingDeviceAngleTolerance;
         /// BeamLimitingDeviceToleranceSequence (300a,0048) vr=SQ, vm=1, type=3
         DRTBeamLimitingDeviceToleranceSequence BeamLimitingDeviceToleranceSequence;
+        /// ChairHeadFramePositionTolerance (300a,0153) vr=DS, vm=1, type=3
+        DcmDecimalString ChairHeadFramePositionTolerance;
+        /// FixationLightAzimuthalAngleTolerance (300a,0154) vr=DS, vm=1, type=3
+        DcmDecimalString FixationLightAzimuthalAngleTolerance;
+        /// FixationLightPolarAngleTolerance (300a,0155) vr=DS, vm=1, type=3
+        DcmDecimalString FixationLightPolarAngleTolerance;
         /// GantryAngleTolerance (300a,0044) vr=DS, vm=1, type=3
         DcmDecimalString GantryAngleTolerance;
+        /// HeadFixationAngleTolerance (300a,0152) vr=DS, vm=1, type=3
+        DcmDecimalString HeadFixationAngleTolerance;
         /// PatientSupportAngleTolerance (300a,004c) vr=DS, vm=1, type=3
         DcmDecimalString PatientSupportAngleTolerance;
         /// SnoutPositionTolerance (300a,004b) vr=FL, vm=1, type=3
@@ -360,6 +453,7 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIonToleranceTableSequence &operator=(const DRTIonToleranceTableSequence &copy);
 
@@ -382,7 +476,7 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -398,7 +492,7 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -421,31 +515,31 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -458,13 +552,13 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -499,7 +593,7 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -507,7 +601,7 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h
index fb5df8b..2852b40 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgePositionSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -173,6 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgePositionSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIonWedgePositionSequence &operator=(const DRTIonWedgePositionSequence &copy);
 
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgePositionSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgePositionSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -234,31 +236,31 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgePositionSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -271,13 +273,13 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgePositionSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -312,7 +314,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgePositionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -320,7 +322,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgePositionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
index 5e4800c..03d2147 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -251,6 +252,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTIonWedgeSequence &operator=(const DRTIonWedgeSequence &copy);
 
@@ -273,7 +275,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -312,31 +314,31 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -349,13 +351,13 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -390,7 +392,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -398,7 +400,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h
index 0bd66a7..a4755a3 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -205,6 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTLateralSpreadingDeviceSequence &operator=(const DRTLateralSpreadingDeviceSequence &copy);
 
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -243,7 +245,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -266,31 +268,31 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -303,13 +305,13 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -344,7 +346,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -352,7 +354,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h
index 45ec9aa..8ea25e3 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsMo
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -189,6 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsMo
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &copy);
 
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsMo
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsMo
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -250,31 +252,31 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsMo
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -287,13 +289,13 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsMo
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -328,7 +330,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsMo
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -336,7 +338,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsMo
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h
index 4f57af6..9473fa9 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSe
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -157,6 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSe
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
 
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSe
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSe
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -218,31 +220,31 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSe
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -255,13 +257,13 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSe
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSe
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -304,7 +306,7 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSe
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h
index 9ebcc72..c161a77 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMultiplexedAudioChannelsDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTMultiplexedAudioChannelsDescriptionCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -174,6 +175,7 @@ class DCMTK_DCMRT_EXPORT DRTMultiplexedAudioChannelsDescriptionCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTMultiplexedAudioChannelsDescriptionCodeSequence &operator=(const DRTMultiplexedAudioChannelsDescriptionCodeSequence &copy);
 
@@ -196,7 +198,7 @@ class DCMTK_DCMRT_EXPORT DRTMultiplexedAudioChannelsDescriptionCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -212,7 +214,7 @@ class DCMTK_DCMRT_EXPORT DRTMultiplexedAudioChannelsDescriptionCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -235,31 +237,31 @@ class DCMTK_DCMRT_EXPORT DRTMultiplexedAudioChannelsDescriptionCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -272,13 +274,13 @@ class DCMTK_DCMRT_EXPORT DRTMultiplexedAudioChannelsDescriptionCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -313,7 +315,7 @@ class DCMTK_DCMRT_EXPORT DRTMultiplexedAudioChannelsDescriptionCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -321,7 +323,7 @@ class DCMTK_DCMRT_EXPORT DRTMultiplexedAudioChannelsDescriptionCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmas.h
index 040061c..87c9b6d 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtmas.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmas.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTModifiedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTModifiedAttributesSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -114,6 +115,7 @@ class DCMTK_DCMRT_EXPORT DRTModifiedAttributesSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTModifiedAttributesSequence &operator=(const DRTModifiedAttributesSequence &copy);
 
@@ -136,7 +138,7 @@ class DCMTK_DCMRT_EXPORT DRTModifiedAttributesSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -152,7 +154,7 @@ class DCMTK_DCMRT_EXPORT DRTModifiedAttributesSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -175,31 +177,31 @@ class DCMTK_DCMRT_EXPORT DRTModifiedAttributesSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -212,13 +214,13 @@ class DCMTK_DCMRT_EXPORT DRTModifiedAttributesSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -253,7 +255,7 @@ class DCMTK_DCMRT_EXPORT DRTModifiedAttributesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -261,7 +263,7 @@ class DCMTK_DCMRT_EXPORT DRTModifiedAttributesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h
index 4b6cd50..471ff25 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasuredDoseReferenceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -235,6 +236,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasuredDoseReferenceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTMeasuredDoseReferenceSequence &operator=(const DRTMeasuredDoseReferenceSequence &copy);
 
@@ -257,7 +259,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasuredDoseReferenceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -273,7 +275,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasuredDoseReferenceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -296,31 +298,31 @@ class DCMTK_DCMRT_EXPORT DRTMeasuredDoseReferenceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -333,13 +335,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasuredDoseReferenceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -374,7 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasuredDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -382,7 +384,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasuredDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmls.h
index 3fab93e..c8ae0e2 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtmls.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmls.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTModalityLUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTModalityLUTSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -153,13 +154,13 @@ class DCMTK_DCMRT_EXPORT DRTModalityLUTSequence
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// LUTData (0028,3006) vr=US/OW, vm=1-n, type=1C
+        /// LUTData (0028,3006) vr=US/OW, vm=1-n, type=1
         DcmOtherByteOtherWord LUTData;
-        /// LUTDescriptor (0028,3002) vr=US/SS, vm=3, type=1C
+        /// LUTDescriptor (0028,3002) vr=US/SS, vm=3, type=1
         DcmUnsignedShort LUTDescriptor;
         /// LUTExplanation (0028,3003) vr=LO, vm=1, type=3
         DcmLongString LUTExplanation;
-        /// ModalityLUTType (0028,3004) vr=LO, vm=1, type=1C
+        /// ModalityLUTType (0028,3004) vr=LO, vm=1, type=1
         DcmLongString ModalityLUTType;
 
     };
@@ -182,6 +183,7 @@ class DCMTK_DCMRT_EXPORT DRTModalityLUTSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTModalityLUTSequence &operator=(const DRTModalityLUTSequence &copy);
 
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTModalityLUTSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -220,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTModalityLUTSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -243,31 +245,31 @@ class DCMTK_DCMRT_EXPORT DRTModalityLUTSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -280,13 +282,13 @@ class DCMTK_DCMRT_EXPORT DRTModalityLUTSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -321,7 +323,7 @@ class DCMTK_DCMRT_EXPORT DRTModalityLUTSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -329,7 +331,7 @@ class DCMTK_DCMRT_EXPORT DRTModalityLUTSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmps.h
index 8cb09f2..bfaffbe 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtmps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMACParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTMACParametersSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -182,6 +183,7 @@ class DCMTK_DCMRT_EXPORT DRTMACParametersSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTMACParametersSequence &operator=(const DRTMACParametersSequence &copy);
 
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTMACParametersSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -220,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTMACParametersSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -243,31 +245,31 @@ class DCMTK_DCMRT_EXPORT DRTMACParametersSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -280,13 +282,13 @@ class DCMTK_DCMRT_EXPORT DRTMACParametersSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -321,7 +323,7 @@ class DCMTK_DCMRT_EXPORT DRTMACParametersSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -329,7 +331,7 @@ class DCMTK_DCMRT_EXPORT DRTMACParametersSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmris.h
similarity index 79%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtmris.h
index af706b1..53d319a 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmris.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTAssigningFacilitySequence
+ *  Header file for class DRTMappingResourceIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTAFS_H
-#define DRTAFS_H
+#ifndef DRTMRIS_H
+#define DRTMRIS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
@@ -21,9 +21,9 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 
 
-/** Interface class for AssigningFacilitySequence (0040,0036)
+/** Interface class for MappingResourceIdentificationSequence (0008,0124)
  */
-class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
+class DCMTK_DCMRT_EXPORT DRTMappingResourceIdentificationSequence
   : protected DRTTypes
 {
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -90,61 +91,61 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
 
       // --- get DICOM attribute values ---
 
-        /** get LocalNamespaceEntityID (0040,0031)
+        /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getLocalNamespaceEntityID(OFString &value, const signed long pos = 0) const;
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
-        /** get UniversalEntityID (0040,0032)
+        /** get MappingResourceName (0008,0122)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getUniversalEntityID(OFString &value, const signed long pos = 0) const;
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
 
-        /** get UniversalEntityIDType (0040,0033)
+        /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getUniversalEntityIDType(OFString &value, const signed long pos = 0) const;
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
 
       // --- set DICOM attribute values ---
 
-        /** set LocalNamespaceEntityID (0040,0031)
+        /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setLocalNamespaceEntityID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
-        /** set UniversalEntityID (0040,0032)
+        /** set MappingResourceName (0008,0122)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setUniversalEntityID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
 
-        /** set UniversalEntityIDType (0040,0033)
+        /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setUniversalEntityIDType(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
 
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// LocalNamespaceEntityID (0040,0031) vr=UT, vm=1, type=1C
-        DcmUnlimitedText LocalNamespaceEntityID;
-        /// UniversalEntityID (0040,0032) vr=UT, vm=1, type=1C
-        DcmUnlimitedText UniversalEntityID;
-        /// UniversalEntityIDType (0040,0033) vr=CS, vm=1, type=1C
-        DcmCodeString UniversalEntityIDType;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
 
     };
 
@@ -153,21 +154,22 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTAssigningFacilitySequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTMappingResourceIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTAssigningFacilitySequence(const DRTAssigningFacilitySequence &copy);
+    DRTMappingResourceIdentificationSequence(const DRTMappingResourceIdentificationSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTAssigningFacilitySequence();
+    virtual ~DRTMappingResourceIdentificationSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTAssigningFacilitySequence &operator=(const DRTAssigningFacilitySequence &copy);
+    DRTMappingResourceIdentificationSequence &operator=(const DRTMappingResourceIdentificationSequence &copy);
 
   // --- general methods ---
 
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -227,31 +229,31 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -264,13 +266,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -305,7 +307,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -313,7 +315,7 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmss.h
index 586f153..609cb9f 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtmss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMotionSynchronizationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTMotionSynchronizationSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -182,6 +183,7 @@ class DCMTK_DCMRT_EXPORT DRTMotionSynchronizationSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTMotionSynchronizationSequence &operator=(const DRTMotionSynchronizationSequence &copy);
 
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTMotionSynchronizationSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -220,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTMotionSynchronizationSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -243,31 +245,31 @@ class DCMTK_DCMRT_EXPORT DRTMotionSynchronizationSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -280,13 +282,13 @@ class DCMTK_DCMRT_EXPORT DRTMotionSynchronizationSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -321,7 +323,7 @@ class DCMTK_DCMRT_EXPORT DRTMotionSynchronizationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -329,7 +331,7 @@ class DCMTK_DCMRT_EXPORT DRTMotionSynchronizationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h
index 6f73d72..f5d1ec8 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMeasurementUnitsCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTMeasurementUnitsCodeSequence &operator=(const DRTMeasurementUnitsCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtoas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtoas.h
index b0de7e0..8db022d 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtoas.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtoas.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOriginalAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -199,6 +200,7 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTOriginalAttributesSequence &operator=(const DRTOriginalAttributesSequence &copy);
 
@@ -221,7 +223,7 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -237,7 +239,7 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -260,31 +262,31 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -297,13 +299,13 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -338,7 +340,7 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -346,7 +348,7 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtois.h b/dcmrt/include/dcmtk/dcmrt/seq/drtois.h
index 68c33b9..91798e3 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtois.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtois.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOperatorIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -230,6 +231,7 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTOperatorIdentificationSequence &operator=(const DRTOperatorIdentificationSequence &copy);
 
@@ -252,7 +254,7 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -268,7 +270,7 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -291,31 +293,31 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -328,13 +330,13 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -369,7 +371,7 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
index c1f068f..f81ef78 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOtherPatientIDsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -183,6 +184,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTOtherPatientIDsSequence &operator=(const DRTOtherPatientIDsSequence &copy);
 
@@ -205,7 +207,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -221,7 +223,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -244,31 +246,31 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -281,13 +283,13 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -322,7 +324,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -330,7 +332,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtos.h
index eee419e..ade82ca 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtos.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtos.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOverrideSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtois.h"    // for OperatorIdentificationSequence
 
 
 /** Interface class for OverrideSequence (3008,0060)
@@ -55,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -132,6 +134,27 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
          */
         OFCondition getParameterSequencePointer(OFString &value, const signed long pos = 0) const;
 
+        /** get ParameterValueNumber (3008,0067)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getParameterValueNumber(Uint16 &value, const unsigned long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get OperatorIdentificationSequence (0008,1072)
+         *  @return reference to sequence element
+         */
+        DRTOperatorIdentificationSequence &getOperatorIdentificationSequence()
+            { return OperatorIdentificationSequence; }
+
+        /** get OperatorIdentificationSequence (0008,1072)
+         *  @return const reference to sequence element
+         */
+        const DRTOperatorIdentificationSequence &getOperatorIdentificationSequence() const
+            { return OperatorIdentificationSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set OperatorsName (0008,1070)
@@ -169,11 +192,20 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
          */
         OFCondition setParameterSequencePointer(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ParameterValueNumber (3008,0067)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setParameterValueNumber(const Uint16 value, const unsigned long pos = 0);
+
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
+        /// OperatorIdentificationSequence (0008,1072) vr=SQ, vm=1, type=3
+        DRTOperatorIdentificationSequence OperatorIdentificationSequence;
         /// OperatorsName (0008,1070) vr=PN, vm=1-n, type=2
         DcmPersonName OperatorsName;
         /// OverrideParameterPointer (3008,0062) vr=AT, vm=1, type=1
@@ -184,6 +216,8 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
         DcmIntegerString ParameterItemIndex;
         /// ParameterSequencePointer (3008,0061) vr=AT, vm=1, type=1
         DcmAttributeTag ParameterSequencePointer;
+        /// ParameterValueNumber (3008,0067) vr=US, vm=1, type=3
+        DcmUnsignedShort ParameterValueNumber;
 
     };
 
@@ -205,6 +239,7 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTOverrideSequence &operator=(const DRTOverrideSequence &copy);
 
@@ -227,7 +262,7 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -243,7 +278,7 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -266,31 +301,31 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -303,13 +338,13 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -344,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -352,7 +387,7 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h
index a044d02..467edf9 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientBreedCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPatientBreedCodeSequence &operator=(const DRTPatientBreedCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h
index 06942a6..d0cf955 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTProcedureCodeSequence &operator=(const DRTProcedureCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h
index db5baa5..3e09700 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTProtocolContextSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -60,6 +60,7 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -384,6 +385,7 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTProtocolContextSequence &operator=(const DRTProtocolContextSequence &copy);
 
@@ -406,7 +408,7 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -422,7 +424,7 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -445,31 +447,31 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -482,13 +484,13 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -523,7 +525,7 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -531,7 +533,7 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
index 7cbca8a..20f7eca 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPrivateDataElementCharacteristicsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtdias.h"   // for DeidentificationActionSequence
+#include "dcmtk/dcmrt/seq/drtpdeds.h"  // for PrivateDataElementDefinitionSequence
 
 
 /** Interface class for PrivateDataElementCharacteristicsSequence (0008,0300)
@@ -56,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -133,6 +135,18 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
         const DRTDeidentificationActionSequence &getDeidentificationActionSequence() const
             { return DeidentificationActionSequence; }
 
+        /** get PrivateDataElementDefinitionSequence (0008,0310)
+         *  @return reference to sequence element
+         */
+        DRTPrivateDataElementDefinitionSequence &getPrivateDataElementDefinitionSequence()
+            { return PrivateDataElementDefinitionSequence; }
+
+        /** get PrivateDataElementDefinitionSequence (0008,0310)
+         *  @return const reference to sequence element
+         */
+        const DRTPrivateDataElementDefinitionSequence &getPrivateDataElementDefinitionSequence() const
+            { return PrivateDataElementDefinitionSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set BlockIdentifyingInformationStatus (0008,0303)
@@ -176,6 +190,8 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
         DcmUnsignedShort NonidentifyingPrivateElements;
         /// PrivateCreatorReference (0008,0302) vr=LO, vm=1, type=1
         DcmLongString PrivateCreatorReference;
+        /// PrivateDataElementDefinitionSequence (0008,0310) vr=SQ, vm=1, type=3
+        DRTPrivateDataElementDefinitionSequence PrivateDataElementDefinitionSequence;
         /// PrivateGroupReference (0008,0301) vr=US, vm=1, type=1
         DcmUnsignedShort PrivateGroupReference;
 
@@ -199,6 +215,7 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPrivateDataElementCharacteristicsSequence &operator=(const DRTPrivateDataElementCharacteristicsSequence &copy);
 
@@ -221,7 +238,7 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -237,7 +254,7 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -260,31 +277,31 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -297,13 +314,13 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -338,7 +355,7 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -346,7 +363,7 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h
similarity index 68%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h
index 5e4800c..feec7e2 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTIonWedgeSequence
+ *  Header file for class DRTPrivateDataElementDefinitionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTIWS_H
-#define DRTIWS_H
+#ifndef DRTPDEDS_H
+#define DRTPDEDS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
@@ -21,9 +21,9 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 
 
-/** Interface class for IonWedgeSequence (300a,03aa)
+/** Interface class for PrivateDataElementDefinitionSequence (0008,0310)
  */
-class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
+class DCMTK_DCMRT_EXPORT DRTPrivateDataElementDefinitionSequence
   : protected DRTTypes
 {
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -90,146 +91,157 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
 
       // --- get DICOM attribute values ---
 
-        /** get AccessoryCode (300a,00f9)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
-
-        /** get IsocenterToWedgeTrayDistance (300a,00d9)
+        /** get PrivateDataElement (0008,0308)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getIsocenterToWedgeTrayDistance(Float32 &value, const unsigned long pos = 0) const;
+        OFCondition getPrivateDataElement(Uint16 &value, const unsigned long pos = 0) const;
 
-        /** get WedgeAngle (300a,00d5)
+        /** get PrivateDataElementDescription (0008,030e)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getWedgeAngle(OFString &value, const signed long pos = 0) const;
+        OFCondition getPrivateDataElementDescription(OFString &value, const signed long pos = 0) const;
 
-        /** get WedgeAngle (300a,00d5)
+        /** get PrivateDataElementEncoding (0008,030f)
          *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getWedgeAngle(Sint32 &value, const unsigned long pos = 0) const;
+        OFCondition getPrivateDataElementEncoding(OFString &value, const signed long pos = 0) const;
 
-        /** get WedgeID (300a,00d4)
+        /** get PrivateDataElementKeyword (0008,030d)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getWedgeID(OFString &value, const signed long pos = 0) const;
+        OFCondition getPrivateDataElementKeyword(OFString &value, const signed long pos = 0) const;
 
-        /** get WedgeNumber (300a,00d2)
+        /** get PrivateDataElementName (0008,030c)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getWedgeNumber(OFString &value, const signed long pos = 0) const;
+        OFCondition getPrivateDataElementName(OFString &value, const signed long pos = 0) const;
 
-        /** get WedgeNumber (300a,00d2)
+        /** get PrivateDataElementNumberOfItems (0008,030b)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getWedgeNumber(Sint32 &value, const unsigned long pos = 0) const;
+        OFCondition getPrivateDataElementNumberOfItems(Uint32 &value, const unsigned long pos = 0) const;
 
-        /** get WedgeOrientation (300a,00d8)
+        /** get PrivateDataElementValueMultiplicity (0008,0309)
          *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @param  pos    index of the value to get (0..vm-1)
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getWedgeOrientation(OFString &value, const signed long pos = 0) const;
+        OFCondition getPrivateDataElementValueMultiplicity(Uint32 &value, const unsigned long pos = 0) const;
 
-        /** get WedgeOrientation (300a,00d8)
+        /** get PrivateDataElementValueRepresentation (0008,030a)
          *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getWedgeOrientation(Float64 &value, const unsigned long pos = 0) const;
+        OFCondition getPrivateDataElementValueRepresentation(OFString &value, const signed long pos = 0) const;
 
-        /** get WedgeType (300a,00d3)
+        /** get RetrieveURI (0040,e010)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getWedgeType(OFString &value, const signed long pos = 0) const;
+        OFCondition getRetrieveURI(OFString &value, const signed long pos = 0) const;
 
       // --- set DICOM attribute values ---
 
-        /** set AccessoryCode (300a,00f9)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
-
-        /** set IsocenterToWedgeTrayDistance (300a,00d9)
+        /** set PrivateDataElement (0008,0308)
          *  @param  value  value to be set (should be valid for this VR)
          *  @param  pos    index of the value to be set (0..vm-1), vm=1
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setIsocenterToWedgeTrayDistance(const Float32 value, const unsigned long pos = 0);
+        OFCondition setPrivateDataElement(const Uint16 value, const unsigned long pos = 0);
 
-        /** set WedgeAngle (300a,00d5)
+        /** set PrivateDataElementDescription (0008,030e)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setWedgeAngle(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setPrivateDataElementDescription(const OFString &value, const OFBool check = OFTrue);
 
-        /** set WedgeID (300a,00d4)
+        /** set PrivateDataElementEncoding (0008,030f)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setWedgeID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setPrivateDataElementEncoding(const OFString &value, const OFBool check = OFTrue);
 
-        /** set WedgeNumber (300a,00d2)
+        /** set PrivateDataElementKeyword (0008,030d)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setWedgeNumber(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setPrivateDataElementKeyword(const OFString &value, const OFBool check = OFTrue);
 
-        /** set WedgeOrientation (300a,00d8)
+        /** set PrivateDataElementName (0008,030c)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setWedgeOrientation(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setPrivateDataElementName(const OFString &value, const OFBool check = OFTrue);
 
-        /** set WedgeType (300a,00d3)
+        /** set PrivateDataElementNumberOfItems (0008,030b)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-2
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPrivateDataElementNumberOfItems(const Uint32 value, const unsigned long pos = 0);
+
+        /** set PrivateDataElementValueMultiplicity (0008,0309)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-3
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPrivateDataElementValueMultiplicity(const Uint32 value, const unsigned long pos = 0);
+
+        /** set PrivateDataElementValueRepresentation (0008,030a)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setWedgeType(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setPrivateDataElementValueRepresentation(const OFString &value, const OFBool check = OFTrue);
+
+        /** set RetrieveURI (0040,e010)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRetrieveURI(const OFString &value, const OFBool check = OFTrue);
 
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
-        DcmLongString AccessoryCode;
-        /// IsocenterToWedgeTrayDistance (300a,00d9) vr=FL, vm=1, type=1
-        DcmFloatingPointSingle IsocenterToWedgeTrayDistance;
-        /// WedgeAngle (300a,00d5) vr=IS, vm=1, type=2
-        DcmIntegerString WedgeAngle;
-        /// WedgeID (300a,00d4) vr=SH, vm=1, type=3
-        DcmShortString WedgeID;
-        /// WedgeNumber (300a,00d2) vr=IS, vm=1, type=1
-        DcmIntegerString WedgeNumber;
-        /// WedgeOrientation (300a,00d8) vr=DS, vm=1, type=2
-        DcmDecimalString WedgeOrientation;
-        /// WedgeType (300a,00d3) vr=CS, vm=1, type=2
-        DcmCodeString WedgeType;
+        /// PrivateDataElement (0008,0308) vr=US, vm=1, type=1
+        DcmUnsignedShort PrivateDataElement;
+        /// PrivateDataElementDescription (0008,030e) vr=UT, vm=1, type=3
+        DcmUnlimitedText PrivateDataElementDescription;
+        /// PrivateDataElementEncoding (0008,030f) vr=UT, vm=1, type=3
+        DcmUnlimitedText PrivateDataElementEncoding;
+        /// PrivateDataElementKeyword (0008,030d) vr=UC, vm=1, type=1
+        DcmUnlimitedCharacters PrivateDataElementKeyword;
+        /// PrivateDataElementName (0008,030c) vr=UC, vm=1, type=1
+        DcmUnlimitedCharacters PrivateDataElementName;
+        /// PrivateDataElementNumberOfItems (0008,030b) vr=UL, vm=1-2, type=1C
+        DcmUnsignedLong PrivateDataElementNumberOfItems;
+        /// PrivateDataElementValueMultiplicity (0008,0309) vr=UL, vm=1-3, type=1
+        DcmUnsignedLong PrivateDataElementValueMultiplicity;
+        /// PrivateDataElementValueRepresentation (0008,030a) vr=CS, vm=1, type=1
+        DcmCodeString PrivateDataElementValueRepresentation;
+        /// RetrieveURI (0040,e010) vr=UR, vm=1, type=3
+        DcmUniversalResourceIdentifierOrLocator RetrieveURI;
 
     };
 
@@ -238,21 +250,22 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTIonWedgeSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTPrivateDataElementDefinitionSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTIonWedgeSequence(const DRTIonWedgeSequence &copy);
+    DRTPrivateDataElementDefinitionSequence(const DRTPrivateDataElementDefinitionSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTIonWedgeSequence();
+    virtual ~DRTPrivateDataElementDefinitionSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTIonWedgeSequence &operator=(const DRTIonWedgeSequence &copy);
+    DRTPrivateDataElementDefinitionSequence &operator=(const DRTPrivateDataElementDefinitionSequence &copy);
 
   // --- general methods ---
 
@@ -273,7 +286,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -289,7 +302,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -312,31 +325,31 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -349,13 +362,13 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -390,7 +403,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -398,7 +411,7 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h
index 6a2c744..3ae34ac 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPrimaryFluenceModeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTPrimaryFluenceModeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTPrimaryFluenceModeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPrimaryFluenceModeSequence &operator=(const DRTPrimaryFluenceModeSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTPrimaryFluenceModeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTPrimaryFluenceModeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTPrimaryFluenceModeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTPrimaryFluenceModeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTPrimaryFluenceModeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTPrimaryFluenceModeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpics.h
index 1837914..dc2e435 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtpics.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpics.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPersonIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPersonIdentificationCodeSequence &operator=(const DRTPersonIdentificationCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h
index 3f60799..99bf93f 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPurposeOfReferenceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPurposeOfReferenceCodeSequence &operator=(const DRTPurposeOfReferenceCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
index c320ab3..0a9538a 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPhysiciansOfRecordIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -230,6 +231,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPhysiciansOfRecordIdentificationSequence &operator=(const DRTPhysiciansOfRecordIdentificationSequence &copy);
 
@@ -252,7 +254,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -268,7 +270,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -291,31 +293,31 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -328,13 +330,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -369,7 +371,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h
index 61d2314..608c6c9 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPerformedProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -176,6 +177,13 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -302,6 +310,13 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -347,6 +362,8 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// ProtocolContextSequence (0040,0440) vr=SQ, vm=1, type=3
@@ -374,6 +391,7 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPerformedProtocolCodeSequence &operator=(const DRTPerformedProtocolCodeSequence &copy);
 
@@ -396,7 +414,7 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -412,7 +430,7 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -435,31 +453,31 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -472,13 +490,13 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -513,7 +531,7 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -521,7 +539,7 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h
index 77a56c7..dec6f76 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPhysiciansReadingStudyIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -230,6 +231,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPhysiciansReadingStudyIdentificationSequence &operator=(const DRTPhysiciansReadingStudyIdentificationSequence &copy);
 
@@ -252,7 +254,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -268,7 +270,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -291,31 +293,31 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -328,13 +330,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -369,7 +371,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h
index 4e449dd..851a1c7 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSpeciesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPatientSpeciesCodeSequence &operator=(const DRTPatientSpeciesCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h
index 4b78266..b00ca2a 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSizeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPatientSizeCodeSequence &operator=(const DRTPatientSizeCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpss.h
index 8686840..5ac9215 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtpss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -60,6 +60,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSetupSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -367,6 +368,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSetupSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPatientSetupSequence &operator=(const DRTPatientSetupSequence &copy);
 
@@ -389,7 +391,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSetupSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -405,7 +407,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSetupSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -428,31 +430,31 @@ class DCMTK_DCMRT_EXPORT DRTPatientSetupSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -465,13 +467,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSetupSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -506,7 +508,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSetupSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -514,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTPatientSetupSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h
index 2d03e6c..99dc0eb 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPredecessorStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTPredecessorStructureSetSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTPredecessorStructureSetSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPredecessorStructureSetSequence &operator=(const DRTPredecessorStructureSetSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTPredecessorStructureSetSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTPredecessorStructureSetSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTPredecessorStructureSetSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTPredecessorStructureSetSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTPredecessorStructureSetSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTPredecessorStructureSetSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h
index b0ec587..df4f349 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPlannedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTPlannedVerificationImageSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -346,6 +347,7 @@ class DCMTK_DCMRT_EXPORT DRTPlannedVerificationImageSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTPlannedVerificationImageSequence &operator=(const DRTPlannedVerificationImageSequence &copy);
 
@@ -368,7 +370,7 @@ class DCMTK_DCMRT_EXPORT DRTPlannedVerificationImageSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -384,7 +386,7 @@ class DCMTK_DCMRT_EXPORT DRTPlannedVerificationImageSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -407,31 +409,31 @@ class DCMTK_DCMRT_EXPORT DRTPlannedVerificationImageSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -444,13 +446,13 @@ class DCMTK_DCMRT_EXPORT DRTPlannedVerificationImageSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -485,7 +487,7 @@ class DCMTK_DCMRT_EXPORT DRTPlannedVerificationImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -493,7 +495,7 @@ class DCMTK_DCMRT_EXPORT DRTPlannedVerificationImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
index 510cac7..7b70201 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTQuantityDefinitionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -59,6 +59,7 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -369,6 +370,7 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTQuantityDefinitionSequence &operator=(const DRTQuantityDefinitionSequence &copy);
 
@@ -391,7 +393,7 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -407,7 +409,7 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -430,31 +432,31 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -467,13 +469,13 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -508,7 +510,7 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -516,7 +518,7 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtras.h b/dcmrt/include/dcmtk/dcmrt/seq/drtras.h
index 93c3fb5..5493783 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtras.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtras.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -60,6 +60,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestAttributesSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -307,6 +308,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestAttributesSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRequestAttributesSequence &operator=(const DRTRequestAttributesSequence &copy);
 
@@ -329,7 +331,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestAttributesSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -345,7 +347,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestAttributesSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -368,31 +370,31 @@ class DCMTK_DCMRT_EXPORT DRTRequestAttributesSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -405,13 +407,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestAttributesSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -446,7 +448,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestAttributesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -454,7 +456,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestAttributesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h
index cd7017b..9fd3b97 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -141,6 +142,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &copy);
 
@@ -163,7 +165,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -202,31 +204,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -239,13 +241,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -280,7 +282,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -288,7 +290,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h
index 9bd023c..b308933 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFraction
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -193,6 +194,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFraction
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &copy);
 
@@ -215,7 +217,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFraction
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -231,7 +233,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFraction
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -254,31 +256,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFraction
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -291,13 +293,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFraction
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -332,7 +334,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFraction
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -340,7 +342,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFraction
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h
index 2fe4014..0f32569 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -189,6 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRecordedBlockSequence &operator=(const DRTRecordedBlockSequence &copy);
 
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -250,31 +252,31 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -287,13 +289,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -328,7 +330,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -336,7 +338,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h
index ddf9cd5..b0f5126 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBolusSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -189,6 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedBolusSequenceInRTBeamsModule &operator=(const DRTReferencedBolusSequenceInRTBeamsModule &copy);
 
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -250,31 +252,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -287,13 +289,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -328,7 +330,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -336,7 +338,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h
index 50524c8..503cafe 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBolusSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -157,6 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedBolusSequenceInRTIonBeamsModule &operator=(const DRTReferencedBolusSequenceInRTIonBeamsModule &copy);
 
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -218,31 +220,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -255,13 +257,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -304,7 +306,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h
index 2f63cf4..473e266 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModu
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -157,6 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModu
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &copy);
 
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModu
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModu
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -218,31 +220,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModu
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -255,13 +257,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModu
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModu
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -304,7 +306,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModu
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h
index ff39330..3205866 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBeamSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -158,6 +159,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedBeamSequenceInRTDoseModule &operator=(const DRTReferencedBeamSequenceInRTDoseModule &copy);
 
@@ -180,7 +182,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -196,7 +198,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -219,31 +221,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -256,13 +258,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -305,7 +307,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h
index 4eb30e6..df87233 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -91,6 +92,27 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
 
       // --- get DICOM attribute values ---
 
+        /** get AlternateBeamDose (300a,0091)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDose(OFString &value, const signed long pos = 0) const;
+
+        /** get AlternateBeamDose (300a,0091)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get AlternateBeamDoseType (300a,0092)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDoseType(OFString &value, const signed long pos = 0) const;
+
         /** get BeamDeliveryDurationLimit (300a,00c5)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
@@ -132,6 +154,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
          */
         OFCondition getBeamDoseSpecificationPoint(OFVector<Float64> &value) const;
 
+        /** get BeamDoseType (300a,0090)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDoseType(OFString &value, const signed long pos = 0) const;
+
         /** get BeamMeterset (300a,0086)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -176,6 +205,20 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
 
       // --- set DICOM attribute values ---
 
+        /** set AlternateBeamDose (300a,0091)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlternateBeamDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set AlternateBeamDoseType (300a,0092)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlternateBeamDoseType(const OFString &value, const OFBool check = OFTrue);
+
         /** set BeamDeliveryDurationLimit (300a,00c5)
          *  @param  value  value to be set (should be valid for this VR)
          *  @param  pos    index of the value to be set (0..vm-1), vm=1
@@ -197,6 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
          */
         OFCondition setBeamDoseSpecificationPoint(const OFString &value, const OFBool check = OFTrue);
 
+        /** set BeamDoseType (300a,0090)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamDoseType(const OFString &value, const OFBool check = OFTrue);
+
         /** set BeamMeterset (300a,0086)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -216,12 +266,18 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
+        /// AlternateBeamDose (300a,0091) vr=DS, vm=1, type=3
+        DcmDecimalString AlternateBeamDose;
+        /// AlternateBeamDoseType (300a,0092) vr=CS, vm=1, type=1C
+        DcmCodeString AlternateBeamDoseType;
         /// BeamDeliveryDurationLimit (300a,00c5) vr=FD, vm=1, type=3
         DcmFloatingPointDouble BeamDeliveryDurationLimit;
         /// BeamDose (300a,0084) vr=DS, vm=1, type=3
         DcmDecimalString BeamDose;
         /// BeamDoseSpecificationPoint (300a,0082) vr=DS, vm=3, type=3
         DcmDecimalString BeamDoseSpecificationPoint;
+        /// BeamDoseType (300a,0090) vr=CS, vm=1, type=1C
+        DcmCodeString BeamDoseType;
         /// BeamDoseVerificationControlPointSequence (300a,008c) vr=SQ, vm=1, type=3
         DRTBeamDoseVerificationControlPointSequence BeamDoseVerificationControlPointSequence;
         /// BeamMeterset (300a,0086) vr=DS, vm=1, type=3
@@ -249,6 +305,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &copy);
 
@@ -271,7 +328,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -287,7 +344,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -310,31 +367,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -347,13 +404,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -388,7 +445,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -396,7 +453,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModu
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h
index 335d75e..71e7e92 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBeamSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -91,6 +92,27 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
 
       // --- get DICOM attribute values ---
 
+        /** get AlternateBeamDose (300a,0091)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDose(OFString &value, const signed long pos = 0) const;
+
+        /** get AlternateBeamDose (300a,0091)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get AlternateBeamDoseType (300a,0092)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDoseType(OFString &value, const signed long pos = 0) const;
+
         /** get BeamDeliveryDurationLimit (300a,00c5)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
@@ -132,6 +154,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
          */
         OFCondition getBeamDoseSpecificationPoint(OFVector<Float64> &value) const;
 
+        /** get BeamDoseType (300a,0090)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDoseType(OFString &value, const signed long pos = 0) const;
+
         /** get BeamMeterset (300a,0086)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -176,6 +205,20 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
 
       // --- set DICOM attribute values ---
 
+        /** set AlternateBeamDose (300a,0091)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlternateBeamDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set AlternateBeamDoseType (300a,0092)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlternateBeamDoseType(const OFString &value, const OFBool check = OFTrue);
+
         /** set BeamDeliveryDurationLimit (300a,00c5)
          *  @param  value  value to be set (should be valid for this VR)
          *  @param  pos    index of the value to be set (0..vm-1), vm=1
@@ -197,6 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
          */
         OFCondition setBeamDoseSpecificationPoint(const OFString &value, const OFBool check = OFTrue);
 
+        /** set BeamDoseType (300a,0090)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamDoseType(const OFString &value, const OFBool check = OFTrue);
+
         /** set BeamMeterset (300a,0086)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -216,12 +266,18 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
+        /// AlternateBeamDose (300a,0091) vr=DS, vm=1, type=3
+        DcmDecimalString AlternateBeamDose;
+        /// AlternateBeamDoseType (300a,0092) vr=CS, vm=1, type=1C
+        DcmCodeString AlternateBeamDoseType;
         /// BeamDeliveryDurationLimit (300a,00c5) vr=FD, vm=1, type=3
         DcmFloatingPointDouble BeamDeliveryDurationLimit;
         /// BeamDose (300a,0084) vr=DS, vm=1, type=3
         DcmDecimalString BeamDose;
         /// BeamDoseSpecificationPoint (300a,0082) vr=DS, vm=3, type=3
         DcmDecimalString BeamDoseSpecificationPoint;
+        /// BeamDoseType (300a,0090) vr=CS, vm=1, type=1C
+        DcmCodeString BeamDoseType;
         /// BeamDoseVerificationControlPointSequence (300a,008c) vr=SQ, vm=1, type=3
         DRTBeamDoseVerificationControlPointSequence BeamDoseVerificationControlPointSequence;
         /// BeamMeterset (300a,0086) vr=DS, vm=1, type=3
@@ -249,6 +305,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedBeamSequenceInRTFractionSchemeModule &operator=(const DRTReferencedBeamSequenceInRTFractionSchemeModule &copy);
 
@@ -271,7 +328,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -287,7 +344,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -310,31 +367,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -347,13 +404,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -388,7 +445,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -396,7 +453,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h
index 8928e89..bb2ac94 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedCalculatedDoseReferenceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -187,6 +188,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedCalculatedDoseReferenceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedCalculatedDoseReferenceSequence &operator=(const DRTReferencedCalculatedDoseReferenceSequence &copy);
 
@@ -209,7 +211,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedCalculatedDoseReferenceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -225,7 +227,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedCalculatedDoseReferenceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -248,31 +250,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedCalculatedDoseReferenceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -285,13 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedCalculatedDoseReferenceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -326,7 +328,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedCalculatedDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -334,7 +336,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedCalculatedDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
index eba6728..86b87ab 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -173,6 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRecordedCompensatorSequence &operator=(const DRTRecordedCompensatorSequence &copy);
 
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -234,31 +236,31 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -271,13 +273,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -312,7 +314,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -320,7 +322,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h
index 9f1e496..d67eadf 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedControlPointSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -164,6 +165,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedControlPointSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedControlPointSequence &operator=(const DRTReferencedControlPointSequence &copy);
 
@@ -186,7 +188,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedControlPointSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -202,7 +204,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedControlPointSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -225,31 +227,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedControlPointSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -262,13 +264,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedControlPointSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -303,7 +305,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedControlPointSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -311,7 +313,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedControlPointSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
index d24f3e9..83b1c11 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -213,6 +214,7 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTROIContourSequence &operator=(const DRTROIContourSequence &copy);
 
@@ -235,7 +237,7 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -251,7 +253,7 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -274,31 +276,31 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -311,13 +313,13 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -352,7 +354,7 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -360,7 +362,7 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h
index 80bfbe0..9a2cc74 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTDoseROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRTDoseROISequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -180,6 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTRTDoseROISequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRTDoseROISequence &operator=(const DRTRTDoseROISequence &copy);
 
@@ -202,7 +204,7 @@ class DCMTK_DCMRT_EXPORT DRTRTDoseROISequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -218,7 +220,7 @@ class DCMTK_DCMRT_EXPORT DRTRTDoseROISequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -241,31 +243,31 @@ class DCMTK_DCMRT_EXPORT DRTRTDoseROISequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -278,13 +280,13 @@ class DCMTK_DCMRT_EXPORT DRTRTDoseROISequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -319,7 +321,7 @@ class DCMTK_DCMRT_EXPORT DRTRTDoseROISequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -327,7 +329,7 @@ class DCMTK_DCMRT_EXPORT DRTRTDoseROISequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h
index 3173828..f87dc9a 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseReferenceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -164,6 +165,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedDoseReferenceSequenceInRTBeamsModule &operator=(const DRTReferencedDoseReferenceSequenceInRTBeamsModule &copy);
 
@@ -186,7 +188,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -202,7 +204,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -225,31 +227,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -262,13 +264,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -303,7 +305,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -311,7 +313,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h
index 1732084..8603236 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -164,6 +165,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &operator=(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &copy);
 
@@ -186,7 +188,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -202,7 +204,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -225,31 +227,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -262,13 +264,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -303,7 +305,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -311,7 +313,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h
index 119e77f..4f3a84d 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeMod
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -394,6 +395,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeMod
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &operator=(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &copy);
 
@@ -416,7 +418,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeMod
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -432,7 +434,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeMod
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -455,31 +457,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeMod
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -492,13 +494,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeMod
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -533,7 +535,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeMod
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -541,7 +543,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeMod
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrds.h
index 40e6bca..caed2f5 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedDoseSequence &operator=(const DRTReferencedDoseSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h
index 20b6b1e..60121f6 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIElementalCompositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTROIElementalCompositionSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTROIElementalCompositionSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTROIElementalCompositionSequence &operator=(const DRTROIElementalCompositionSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTROIElementalCompositionSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTROIElementalCompositionSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTROIElementalCompositionSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTROIElementalCompositionSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTROIElementalCompositionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTROIElementalCompositionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h
index 79fad86..32b1907 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFractionGroupSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -173,6 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFractionGroupSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedFractionGroupSequence &operator=(const DRTReferencedFractionGroupSequence &copy);
 
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFractionGroupSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFractionGroupSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -234,31 +236,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFractionGroupSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -271,13 +273,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFractionGroupSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -312,7 +314,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFractionGroupSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -320,7 +322,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFractionGroupSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h
index 514fb87..a8df8af 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedFrameOfReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFrameOfReferenceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -151,6 +152,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFrameOfReferenceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedFrameOfReferenceSequence &operator=(const DRTReferencedFrameOfReferenceSequence &copy);
 
@@ -173,7 +175,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFrameOfReferenceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -189,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFrameOfReferenceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -212,31 +214,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFrameOfReferenceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -249,13 +251,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFrameOfReferenceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -290,7 +292,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFrameOfReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -298,7 +300,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFrameOfReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrics.h
index 2aee19a..72036cb 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrics.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrics.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+#include "dcmtk/dcmrt/seq/drtsptcs.h"  // for SegmentedPropertyTypeModifierCodeSequence
 
 
 /** Interface class for RTROIIdentificationCodeSequence (3006,0086)
@@ -56,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +177,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -203,6 +212,18 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
         const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
             { return EquivalentCodeSequence; }
 
+        /** get SegmentedPropertyTypeModifierCodeSequence (0062,0011)
+         *  @return reference to sequence element
+         */
+        DRTSegmentedPropertyTypeModifierCodeSequence &getSegmentedPropertyTypeModifierCodeSequence()
+            { return SegmentedPropertyTypeModifierCodeSequence; }
+
+        /** get SegmentedPropertyTypeModifierCodeSequence (0062,0011)
+         *  @return const reference to sequence element
+         */
+        const DRTSegmentedPropertyTypeModifierCodeSequence &getSegmentedPropertyTypeModifierCodeSequence() const
+            { return SegmentedPropertyTypeModifierCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -289,6 +310,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,8 +362,12 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
+        /// SegmentedPropertyTypeModifierCodeSequence (0062,0011) vr=SQ, vm=1, type=3
+        DRTSegmentedPropertyTypeModifierCodeSequence SegmentedPropertyTypeModifierCodeSequence;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
         DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
@@ -359,6 +391,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRTROIIdentificationCodeSequence &operator=(const DRTRTROIIdentificationCodeSequence &copy);
 
@@ -381,7 +414,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +430,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +453,31 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +490,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +531,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +539,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrims.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrims.h
index c5cc089..95a68c7 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrims.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrims.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedImageSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -206,6 +207,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedImageSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedImageSequence &operator=(const DRTReferencedImageSequence &copy);
 
@@ -228,7 +230,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedImageSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -244,7 +246,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedImageSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -267,31 +269,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedImageSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -304,13 +306,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedImageSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -345,7 +347,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -353,7 +355,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtris.h b/dcmrt/include/dcmtk/dcmrt/seq/drtris.h
index e02c599..957eb21 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtris.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtris.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -167,6 +168,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedInstanceSequence &operator=(const DRTReferencedInstanceSequence &copy);
 
@@ -189,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -205,7 +207,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -228,31 +230,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -265,13 +267,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -306,7 +308,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -314,7 +316,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h
index c802d6d..693e309 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedLateralSpreadingDeviceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -173,6 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedLateralSpreadingDeviceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRecordedLateralSpreadingDeviceSequence &operator=(const DRTRecordedLateralSpreadingDeviceSequence &copy);
 
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedLateralSpreadingDeviceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedLateralSpreadingDeviceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -234,31 +236,31 @@ class DCMTK_DCMRT_EXPORT DRTRecordedLateralSpreadingDeviceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -271,13 +273,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedLateralSpreadingDeviceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -312,7 +314,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedLateralSpreadingDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -320,7 +322,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedLateralSpreadingDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h
index b8e7da6..32787fe 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedMeasuredDoseReferenceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -187,6 +188,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedMeasuredDoseReferenceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedMeasuredDoseReferenceSequence &operator=(const DRTReferencedMeasuredDoseReferenceSequence &copy);
 
@@ -209,7 +211,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedMeasuredDoseReferenceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -225,7 +227,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedMeasuredDoseReferenceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -248,31 +250,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedMeasuredDoseReferenceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -285,13 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedMeasuredDoseReferenceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -326,7 +328,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedMeasuredDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -334,7 +336,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedMeasuredDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrms.h
index f45f87e..8fcb39b 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrms.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrms.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -221,6 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRangeModulatorSequence &operator=(const DRTRangeModulatorSequence &copy);
 
@@ -243,7 +245,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -259,7 +261,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -282,31 +284,31 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -319,13 +321,13 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -360,7 +362,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -368,7 +370,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h
index 9cf6e01..ecb611c 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -221,6 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &copy);
 
@@ -243,7 +245,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -259,7 +261,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -282,31 +284,31 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -319,13 +321,13 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -360,7 +362,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -368,7 +370,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h
index f0356b7..4b1dd10 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRec
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -173,6 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRec
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
 
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRec
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRec
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -234,31 +236,31 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRec
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -271,13 +273,13 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRec
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -312,7 +314,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRec
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -320,7 +322,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRec
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h
index 75b8e93..2f8a67c 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRequestedProcedureCodeSequence &operator=(const DRTRequestedProcedureCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h
index 4f466b1..c8e6a26 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferringPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -230,6 +231,7 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferringPhysicianIdentificationSequence &operator=(const DRTReferringPhysicianIdentificationSequence &copy);
 
@@ -252,7 +254,7 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -268,7 +270,7 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -291,31 +293,31 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -328,13 +330,13 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -369,7 +371,7 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h
index 165744d..f9e45bc 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReasonForPerformedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReasonForPerformedProcedureCodeSequence &operator=(const DRTReasonForPerformedProcedureCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h
index d726488..a289878 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPatientPhotoSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -61,6 +61,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -258,6 +259,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedPatientPhotoSequence &operator=(const DRTReferencedPatientPhotoSequence &copy);
 
@@ -280,7 +282,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -319,31 +321,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -356,13 +358,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -397,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -405,7 +407,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h
index 193865c..10197f9 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIPhysicalPropertiesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTROIPhysicalPropertiesSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -174,6 +175,7 @@ class DCMTK_DCMRT_EXPORT DRTROIPhysicalPropertiesSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTROIPhysicalPropertiesSequence &operator=(const DRTROIPhysicalPropertiesSequence &copy);
 
@@ -196,7 +198,7 @@ class DCMTK_DCMRT_EXPORT DRTROIPhysicalPropertiesSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -212,7 +214,7 @@ class DCMTK_DCMRT_EXPORT DRTROIPhysicalPropertiesSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -235,31 +237,31 @@ class DCMTK_DCMRT_EXPORT DRTROIPhysicalPropertiesSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -272,13 +274,13 @@ class DCMTK_DCMRT_EXPORT DRTROIPhysicalPropertiesSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -313,7 +315,7 @@ class DCMTK_DCMRT_EXPORT DRTROIPhysicalPropertiesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -321,7 +323,7 @@ class DCMTK_DCMRT_EXPORT DRTROIPhysicalPropertiesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h
index 7d24177..37ce7b1 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPerformedProcedureStepSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProcedureStepSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProcedureStepSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedPerformedProcedureStepSequence &operator=(const DRTReferencedPerformedProcedureStepSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProcedureStepSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProcedureStepSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProcedureStepSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProcedureStepSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProcedureStepSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProcedureStepSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrps.h
index 921b614..50c1c89 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPatientSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedPatientSequence &operator=(const DRTReferencedPatientSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h
index ac4456b..bd374cb 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedReferenceImageSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -219,6 +220,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedReferenceImageSequenceInRTBeamsModule &operator=(const DRTReferencedReferenceImageSequenceInRTBeamsModule &copy);
 
@@ -241,7 +243,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -257,7 +259,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -280,31 +282,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -317,13 +319,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -358,7 +360,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -366,7 +368,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h
index ffd2638..443b4e9 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -173,6 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedReferenceImageSequenceInRTIonBeamsModule &operator=(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule &copy);
 
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -234,31 +236,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -271,13 +273,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -312,7 +314,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -320,7 +322,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h
index 08e660a..5dabc53 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicatio
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicatio
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &operator=(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicatio
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicatio
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicatio
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicatio
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicatio
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicatio
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h
index d6bbcf5..ad71039 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeModulatorSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -205,6 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeModulatorSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRecordedRangeModulatorSequence &operator=(const DRTRecordedRangeModulatorSequence &copy);
 
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeModulatorSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -243,7 +245,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeModulatorSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -266,31 +268,31 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeModulatorSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -303,13 +305,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeModulatorSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -344,7 +346,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeModulatorSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -352,7 +354,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeModulatorSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrros.h
index e2c9b7f..6acf019 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrros.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrros.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -19,7 +19,6 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtarics.h"  // for AdditionalRTROIIdentificationCodeSequence
 #include "dcmtk/dcmrt/seq/drtrpps.h"   // for ROIPhysicalPropertiesSequence
 #include "dcmtk/dcmrt/seq/drtrics.h"   // for RTROIIdentificationCodeSequence
 #include "dcmtk/dcmrt/seq/drtrrs.h"    // for RTRelatedROISequence
@@ -61,6 +60,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -161,18 +161,6 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
 
       // --- get DICOM sequence attributes ---
 
-        /** get AdditionalRTROIIdentificationCodeSequence (3006,00b9)
-         *  @return reference to sequence element
-         */
-        DRTAdditionalRTROIIdentificationCodeSequence &getAdditionalRTROIIdentificationCodeSequence()
-            { return AdditionalRTROIIdentificationCodeSequence; }
-
-        /** get AdditionalRTROIIdentificationCodeSequence (3006,00b9)
-         *  @return const reference to sequence element
-         */
-        const DRTAdditionalRTROIIdentificationCodeSequence &getAdditionalRTROIIdentificationCodeSequence() const
-            { return AdditionalRTROIIdentificationCodeSequence; }
-
         /** get ROIPhysicalPropertiesSequence (3006,00b0)
          *  @return reference to sequence element
          */
@@ -289,8 +277,6 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// AdditionalRTROIIdentificationCodeSequence (3006,00b9) vr=SQ, vm=1, type=3
-        DRTAdditionalRTROIIdentificationCodeSequence AdditionalRTROIIdentificationCodeSequence;
         /// MaterialID (300a,00e1) vr=SH, vm=1, type=3
         DcmShortString MaterialID;
         /// ObservationNumber (3006,0082) vr=IS, vm=1, type=1
@@ -336,6 +322,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRTROIObservationsSequence &operator=(const DRTRTROIObservationsSequence &copy);
 
@@ -358,7 +345,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -374,7 +361,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -397,31 +384,31 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -434,13 +421,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -475,7 +462,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -483,7 +470,7 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h
index 2b34845..1b134f6 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReasonForRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReasonForRequestedProcedureCodeSequence &operator=(const DRTReasonForRequestedProcedureCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h
index d37493c..97640b5 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRelatedRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRelatedRTROIObservationsSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -141,6 +142,7 @@ class DCMTK_DCMRT_EXPORT DRTRelatedRTROIObservationsSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRelatedRTROIObservationsSequence &operator=(const DRTRelatedRTROIObservationsSequence &copy);
 
@@ -163,7 +165,7 @@ class DCMTK_DCMRT_EXPORT DRTRelatedRTROIObservationsSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTRelatedRTROIObservationsSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -202,31 +204,31 @@ class DCMTK_DCMRT_EXPORT DRTRelatedRTROIObservationsSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -239,13 +241,13 @@ class DCMTK_DCMRT_EXPORT DRTRelatedRTROIObservationsSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -280,7 +282,7 @@ class DCMTK_DCMRT_EXPORT DRTRelatedRTROIObservationsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -288,7 +290,7 @@ class DCMTK_DCMRT_EXPORT DRTRelatedRTROIObservationsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h
index 471d72f..62e96fa 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTRelatedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRTRelatedROISequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -157,6 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTRTRelatedROISequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRTRelatedROISequence &operator=(const DRTRTRelatedROISequence &copy);
 
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTRTRelatedROISequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTRTRelatedROISequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -218,31 +220,31 @@ class DCMTK_DCMRT_EXPORT DRTRTRelatedROISequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -255,13 +257,13 @@ class DCMTK_DCMRT_EXPORT DRTRTRelatedROISequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTRTRelatedROISequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -304,7 +306,7 @@ class DCMTK_DCMRT_EXPORT DRTRTRelatedROISequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h
index bb9f495..b825541 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeShifterSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -173,6 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeShifterSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRecordedRangeShifterSequence &operator=(const DRTRecordedRangeShifterSequence &copy);
 
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeShifterSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeShifterSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -234,31 +236,31 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeShifterSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -271,13 +273,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeShifterSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -312,7 +314,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeShifterSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -320,7 +322,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeShifterSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h
index 0b9a7ec..9d22304 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -167,6 +168,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedRTPlanSequence &operator=(const DRTReferencedRTPlanSequence &copy);
 
@@ -189,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -205,7 +207,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -228,31 +230,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -265,13 +267,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -306,7 +308,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -314,7 +316,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h
index 73272e9..f85cb7f 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -166,6 +167,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedRTPlanSequenceInRTGeneralPlanModule &operator=(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule &copy);
 
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -227,31 +229,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -264,13 +266,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -305,7 +307,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -313,7 +315,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h
index 7e5706f..bb1bd8e 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordMo
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordMo
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordMo
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordMo
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordMo
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordMo
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordMo
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordMo
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h
index db4fe1f..10c9a0f 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedRTPlanSequenceInRTImageModule &operator=(const DRTReferencedRTPlanSequenceInRTImageModule &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h
index 4ee8114..4d9e402 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestingServiceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRequestingServiceCodeSequence &operator=(const DRTRequestingServiceCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h
index a0e546e..7058f34 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSeriesSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -151,6 +152,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSeriesSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedSeriesSequence &operator=(const DRTReferencedSeriesSequence &copy);
 
@@ -173,7 +175,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSeriesSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -189,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSeriesSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -212,31 +214,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSeriesSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -249,13 +251,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSeriesSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -290,7 +292,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSeriesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -298,7 +300,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSeriesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrses.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrses.h
index b6aabfd..40d57a2 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrses.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrses.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedSeriesSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -151,6 +152,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedSeriesSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRTReferencedSeriesSequence &operator=(const DRTRTReferencedSeriesSequence &copy);
 
@@ -173,7 +175,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedSeriesSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -189,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedSeriesSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -212,31 +214,31 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedSeriesSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -249,13 +251,13 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedSeriesSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -290,7 +292,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedSeriesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -298,7 +300,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedSeriesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h
index e7f5d44..d5393fe 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -205,6 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRangeShifterSequence &operator=(const DRTRangeShifterSequence &copy);
 
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -243,7 +245,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -266,31 +268,31 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -303,13 +305,13 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -344,7 +346,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -352,7 +354,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
index 7476aaf..5325aad 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -189,6 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRangeShifterSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy);
 
@@ -211,7 +213,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -250,31 +252,31 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -287,13 +289,13 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -328,7 +330,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -336,7 +338,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h
index 51d0ec0..f42c735 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecor
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -157,6 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecor
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
 
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecor
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecor
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -218,31 +220,31 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecor
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -255,13 +257,13 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecor
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecor
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -304,7 +306,7 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecor
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h
index cc41a4f..4dd3f2c 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSetupImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSetupImageSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -205,6 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSetupImageSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedSetupImageSequence &operator=(const DRTReferencedSetupImageSequence &copy);
 
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSetupImageSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -243,7 +245,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSetupImageSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -266,31 +268,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSetupImageSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -303,13 +305,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSetupImageSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -344,7 +346,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSetupImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -352,7 +354,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSetupImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
index 6339f1e..8a15b8a 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRecordedSnoutSequence &operator=(const DRTRecordedSnoutSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h
index 31275ea..a8ea6db 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSOPSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSOPSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -205,6 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSOPSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedSOPSequence &operator=(const DRTReferencedSOPSequence &copy);
 
@@ -227,7 +229,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSOPSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -243,7 +245,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSOPSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -266,31 +268,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSOPSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -303,13 +305,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSOPSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -344,7 +346,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSOPSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -352,7 +354,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSOPSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h
index 40fd303..663bc9c 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSpatialRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSpatialRegistrationSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSpatialRegistrationSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedSpatialRegistrationSequence &operator=(const DRTReferencedSpatialRegistrationSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSpatialRegistrationSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSpatialRegistrationSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSpatialRegistrationSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSpatialRegistrationSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSpatialRegistrationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSpatialRegistrationSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrss.h
index c8bb63c..521323a 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStudySequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStudySequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedStudySequence &operator=(const DRTReferencedStudySequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStudySequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStudySequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStudySequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStudySequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStudySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStudySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h
index 4bff060..55ab3a0 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStructureSetSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStructureSetSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedStructureSetSequence &operator=(const DRTReferencedStructureSetSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStructureSetSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStructureSetSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStructureSetSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStructureSetSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStructureSetSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStructureSetSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
index 524f0aa..60119e1 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -167,6 +168,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRTReferencedStudySequence &operator=(const DRTRTReferencedStudySequence &copy);
 
@@ -189,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -205,7 +207,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -228,31 +230,31 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -265,13 +267,13 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -306,7 +308,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -314,7 +316,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h
index 0697321..441371d 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -167,6 +168,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedTreatmentRecordSequenceInRTDoseModule &operator=(const DRTReferencedTreatmentRecordSequenceInRTDoseModule &copy);
 
@@ -189,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -205,7 +207,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -228,31 +230,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -265,13 +267,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -306,7 +308,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -314,7 +316,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h
index 2a18110..cdef8bd 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmen
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmen
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmen
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmen
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmen
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmen
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmen
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmen
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h
index 61a716f..2c54b3e 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedVerificationImageSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedVerificationImageSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTReferencedVerificationImageSequence &operator=(const DRTReferencedVerificationImageSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedVerificationImageSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedVerificationImageSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedVerificationImageSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedVerificationImageSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedVerificationImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedVerificationImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrws.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrws.h
index 1d1e6ff..180c388 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrws.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrws.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedWedgeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -235,6 +236,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedWedgeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRecordedWedgeSequence &operator=(const DRTRecordedWedgeSequence &copy);
 
@@ -257,7 +259,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedWedgeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -273,7 +275,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedWedgeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -296,31 +298,31 @@ class DCMTK_DCMRT_EXPORT DRTRecordedWedgeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -333,13 +335,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedWedgeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -374,7 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedWedgeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -382,7 +384,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedWedgeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h
index b9f9037..0a164c8 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRealWorldValueMappingSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -92,6 +93,20 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
 
       // --- get DICOM attribute values ---
 
+        /** get DoubleFloatRealWorldValueFirstValueMapped (0040,9214)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDoubleFloatRealWorldValueFirstValueMapped(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get DoubleFloatRealWorldValueLastValueMapped (0040,9213)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDoubleFloatRealWorldValueLastValueMapped(Float64 &value, const unsigned long pos = 0) const;
+
         /** get LUTExplanation (0028,3003)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -169,6 +184,20 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
 
       // --- set DICOM attribute values ---
 
+        /** set DoubleFloatRealWorldValueFirstValueMapped (0040,9214)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDoubleFloatRealWorldValueFirstValueMapped(const Float64 value, const unsigned long pos = 0);
+
+        /** set DoubleFloatRealWorldValueLastValueMapped (0040,9213)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDoubleFloatRealWorldValueLastValueMapped(const Float64 value, const unsigned long pos = 0);
+
         /** set LUTExplanation (0028,3003)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -223,6 +252,10 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
+        /// DoubleFloatRealWorldValueFirstValueMapped (0040,9214) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble DoubleFloatRealWorldValueFirstValueMapped;
+        /// DoubleFloatRealWorldValueLastValueMapped (0040,9213) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble DoubleFloatRealWorldValueLastValueMapped;
         /// LUTExplanation (0028,3003) vr=LO, vm=1, type=1
         DcmLongString LUTExplanation;
         /// LUTLabel (0040,9210) vr=SH, vm=1, type=1
@@ -231,13 +264,13 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
         DRTMeasurementUnitsCodeSequence MeasurementUnitsCodeSequence;
         /// QuantityDefinitionSequence (0040,9220) vr=SQ, vm=1, type=3
         DRTQuantityDefinitionSequence QuantityDefinitionSequence;
-        /// RealWorldValueFirstValueMapped (0040,9216) vr=US/SS, vm=1, type=1
+        /// RealWorldValueFirstValueMapped (0040,9216) vr=US/SS, vm=1, type=1C
         DcmUnsignedShort RealWorldValueFirstValueMapped;
         /// RealWorldValueIntercept (0040,9224) vr=FD, vm=1, type=1C
         DcmFloatingPointDouble RealWorldValueIntercept;
         /// RealWorldValueLUTData (0040,9212) vr=FD, vm=1-n, type=1C
         DcmFloatingPointDouble RealWorldValueLUTData;
-        /// RealWorldValueLastValueMapped (0040,9211) vr=US/SS, vm=1, type=1
+        /// RealWorldValueLastValueMapped (0040,9211) vr=US/SS, vm=1, type=1C
         DcmUnsignedShort RealWorldValueLastValueMapped;
         /// RealWorldValueSlope (0040,9225) vr=FD, vm=1, type=1C
         DcmFloatingPointDouble RealWorldValueSlope;
@@ -262,6 +295,7 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTRealWorldValueMappingSequence &operator=(const DRTRealWorldValueMappingSequence &copy);
 
@@ -284,7 +318,7 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -300,7 +334,7 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -323,31 +357,31 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -360,13 +394,13 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -401,7 +435,7 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -409,7 +443,7 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtscris.h b/dcmrt/include/dcmtk/dcmrt/seq/drtscris.h
index 70c5a4c..a1d9870 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtscris.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtscris.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStudiesContainingOtherReferencedInstancesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTStudiesContainingOtherReferencedInstancesSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -151,6 +152,7 @@ class DCMTK_DCMRT_EXPORT DRTStudiesContainingOtherReferencedInstancesSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTStudiesContainingOtherReferencedInstancesSequence &operator=(const DRTStudiesContainingOtherReferencedInstancesSequence &copy);
 
@@ -173,7 +175,7 @@ class DCMTK_DCMRT_EXPORT DRTStudiesContainingOtherReferencedInstancesSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -189,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTStudiesContainingOtherReferencedInstancesSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -212,31 +214,31 @@ class DCMTK_DCMRT_EXPORT DRTStudiesContainingOtherReferencedInstancesSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -249,13 +251,13 @@ class DCMTK_DCMRT_EXPORT DRTStudiesContainingOtherReferencedInstancesSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -290,7 +292,7 @@ class DCMTK_DCMRT_EXPORT DRTStudiesContainingOtherReferencedInstancesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -298,7 +300,7 @@ class DCMTK_DCMRT_EXPORT DRTStudiesContainingOtherReferencedInstancesSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h b/dcmrt/include/dcmtk/dcmrt/seq/drtscs.h
similarity index 91%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtscs.h
index b4a8b96..914b27a 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtscs.h
@@ -1,31 +1,30 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTContrastBolusAdministrationRouteSequence
+ *  Header file for class DRTStrainCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTCBARS_H
-#define DRTCBARS_H
+#ifndef DRTSCS_H
+#define DRTSCS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtads.h"    // for AdditionalDrugSequence
 #include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
-/** Interface class for ContrastBolusAdministrationRouteSequence (0018,0014)
+/** Interface class for StrainCodeSequence (0010,0219)
  */
-class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
+class DCMTK_DCMRT_EXPORT DRTStrainCodeSequence
   : protected DRTTypes
 {
 
@@ -57,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -176,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -192,18 +199,6 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
 
       // --- get DICOM sequence attributes ---
 
-        /** get AdditionalDrugSequence (0018,002a)
-         *  @return reference to sequence element
-         */
-        DRTAdditionalDrugSequence &getAdditionalDrugSequence()
-            { return AdditionalDrugSequence; }
-
-        /** get AdditionalDrugSequence (0018,002a)
-         *  @return const reference to sequence element
-         */
-        const DRTAdditionalDrugSequence &getAdditionalDrugSequence() const
-            { return AdditionalDrugSequence; }
-
         /** get EquivalentCodeSequence (0008,0121)
          *  @return reference to sequence element
          */
@@ -302,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -321,8 +323,6 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// AdditionalDrugSequence (0018,002a) vr=SQ, vm=1, type=3
-        DRTAdditionalDrugSequence AdditionalDrugSequence;
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
         /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
@@ -349,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -361,21 +363,22 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTContrastBolusAdministrationRouteSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTStrainCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTContrastBolusAdministrationRouteSequence(const DRTContrastBolusAdministrationRouteSequence &copy);
+    DRTStrainCodeSequence(const DRTStrainCodeSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTContrastBolusAdministrationRouteSequence();
+    virtual ~DRTStrainCodeSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTContrastBolusAdministrationRouteSequence &operator=(const DRTContrastBolusAdministrationRouteSequence &copy);
+    DRTStrainCodeSequence &operator=(const DRTStrainCodeSequence &copy);
 
   // --- general methods ---
 
@@ -396,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -412,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -435,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -472,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -513,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -521,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h
index 52646b8..77bfdac 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSeriesDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTSeriesDescriptionCodeSequence &operator=(const DRTSeriesDescriptionCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsds.h
index 06db62c..031af00 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtsds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSetupDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTSetupDeviceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -221,6 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTSetupDeviceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTSetupDeviceSequence &operator=(const DRTSetupDeviceSequence &copy);
 
@@ -243,7 +245,7 @@ class DCMTK_DCMRT_EXPORT DRTSetupDeviceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -259,7 +261,7 @@ class DCMTK_DCMRT_EXPORT DRTSetupDeviceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -282,31 +284,31 @@ class DCMTK_DCMRT_EXPORT DRTSetupDeviceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -319,13 +321,13 @@ class DCMTK_DCMRT_EXPORT DRTSetupDeviceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -360,7 +362,7 @@ class DCMTK_DCMRT_EXPORT DRTSetupDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -368,7 +370,7 @@ class DCMTK_DCMRT_EXPORT DRTSetupDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtshds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtshds.h
index a66db0d..01c6df2 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtshds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtshds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTShieldingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTShieldingDeviceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -198,6 +199,7 @@ class DCMTK_DCMRT_EXPORT DRTShieldingDeviceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTShieldingDeviceSequence &operator=(const DRTShieldingDeviceSequence &copy);
 
@@ -220,7 +222,7 @@ class DCMTK_DCMRT_EXPORT DRTShieldingDeviceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -236,7 +238,7 @@ class DCMTK_DCMRT_EXPORT DRTShieldingDeviceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -259,31 +261,31 @@ class DCMTK_DCMRT_EXPORT DRTShieldingDeviceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -296,13 +298,13 @@ class DCMTK_DCMRT_EXPORT DRTShieldingDeviceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -337,7 +339,7 @@ class DCMTK_DCMRT_EXPORT DRTShieldingDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -345,7 +347,7 @@ class DCMTK_DCMRT_EXPORT DRTShieldingDeviceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtris.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsins.h
similarity index 89%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtris.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtsins.h
index e02c599..01dd96f 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtris.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsins.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTReferencedInstanceSequence
+ *  Header file for class DRTSourceInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTRIS_H
-#define DRTRIS_H
+#ifndef DRTSINS_H
+#define DRTSINS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
@@ -22,9 +22,9 @@
 #include "dcmtk/dcmrt/seq/drtporcs.h"  // for PurposeOfReferenceCodeSequence
 
 
-/** Interface class for ReferencedInstanceSequence (0008,114a)
+/** Interface class for SourceInstanceSequence (0042,0013)
  */
-class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
+class DCMTK_DCMRT_EXPORT DRTSourceInstanceSequence
   : protected DRTTypes
 {
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -140,7 +141,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// PurposeOfReferenceCodeSequence (0040,a170) vr=SQ, vm=1, type=1
+        /// PurposeOfReferenceCodeSequence (0040,a170) vr=SQ, vm=1, type=3
         DRTPurposeOfReferenceCodeSequence PurposeOfReferenceCodeSequence;
         /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
         DcmUniqueIdentifier ReferencedSOPClassUID;
@@ -154,21 +155,22 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTReferencedInstanceSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTSourceInstanceSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTReferencedInstanceSequence(const DRTReferencedInstanceSequence &copy);
+    DRTSourceInstanceSequence(const DRTSourceInstanceSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTReferencedInstanceSequence();
+    virtual ~DRTSourceInstanceSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTReferencedInstanceSequence &operator=(const DRTReferencedInstanceSequence &copy);
+    DRTSourceInstanceSequence &operator=(const DRTSourceInstanceSequence &copy);
 
   // --- general methods ---
 
@@ -189,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -205,7 +207,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -228,31 +230,31 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -265,13 +267,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -306,7 +308,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -314,7 +316,7 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsis.h
index 967bda6..c99c72f 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtsis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsis.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSourceImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceImageSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -238,6 +239,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceImageSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTSourceImageSequence &operator=(const DRTSourceImageSequence &copy);
 
@@ -260,7 +262,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceImageSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -276,7 +278,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceImageSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -299,31 +301,31 @@ class DCMTK_DCMRT_EXPORT DRTSourceImageSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -336,13 +338,13 @@ class DCMTK_DCMRT_EXPORT DRTSourceImageSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -385,7 +387,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceImageSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsns.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsns.h
index db03a31..380d78b 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtsns.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsns.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTSnoutSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTSnoutSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTSnoutSequence &operator=(const DRTSnoutSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTSnoutSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTSnoutSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTSnoutSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTSnoutSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTSnoutSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTSnoutSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h
index 6ec77c8..704f98f 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSegmentedPropertyCategoryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -175,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -289,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -334,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
@@ -359,6 +376,7 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTSegmentedPropertyCategoryCodeSequence &operator=(const DRTSegmentedPropertyCategoryCodeSequence &copy);
 
@@ -381,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -397,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -420,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -457,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -498,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -506,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h
index 075109f..bbb3879 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTScheduledProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -57,6 +57,7 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -176,6 +177,13 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -302,6 +310,13 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -347,6 +362,8 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
         /// ProtocolContextSequence (0040,0440) vr=SQ, vm=1, type=3
@@ -374,6 +391,7 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTScheduledProtocolCodeSequence &operator=(const DRTScheduledProtocolCodeSequence &copy);
 
@@ -396,7 +414,7 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -412,7 +430,7 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -435,31 +453,31 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -472,13 +490,13 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -513,7 +531,7 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -521,7 +539,7 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h
similarity index 84%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h
index c1f068f..d70af51 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTOtherPatientIDsSequence
+ *  Header file for class DRTSourcePatientGroupIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTOPIS_H
-#define DRTOPIS_H
+#ifndef DRTSPGIS_H
+#define DRTSPGIS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
@@ -22,9 +22,9 @@
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 
 
-/** Interface class for OtherPatientIDsSequence (0010,1002)
+/** Interface class for SourcePatientGroupIdentificationSequence (0010,0026)
  */
-class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
+class DCMTK_DCMRT_EXPORT DRTSourcePatientGroupIdentificationSequence
   : protected DRTTypes
 {
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -105,13 +106,6 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
          */
         OFCondition getPatientID(OFString &value, const signed long pos = 0) const;
 
-        /** get TypeOfPatientID (0010,0022)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const;
-
       // --- get DICOM sequence attributes ---
 
         /** get IssuerOfPatientIDQualifiersSequence (0010,0024)
@@ -142,13 +136,6 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
          */
         OFCondition setPatientID(const OFString &value, const OFBool check = OFTrue);
 
-        /** set TypeOfPatientID (0010,0022)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue);
-
       private:
 
         /// internal flag used to mark the empty default item
@@ -160,8 +147,6 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
         DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
         /// PatientID (0010,0020) vr=LO, vm=1, type=1
         DcmLongString PatientID;
-        /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=1
-        DcmCodeString TypeOfPatientID;
 
     };
 
@@ -170,21 +155,22 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTOtherPatientIDsSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTSourcePatientGroupIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTOtherPatientIDsSequence(const DRTOtherPatientIDsSequence &copy);
+    DRTSourcePatientGroupIdentificationSequence(const DRTSourcePatientGroupIdentificationSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTOtherPatientIDsSequence();
+    virtual ~DRTSourcePatientGroupIdentificationSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTOtherPatientIDsSequence &operator=(const DRTOtherPatientIDsSequence &copy);
+    DRTSourcePatientGroupIdentificationSequence &operator=(const DRTSourcePatientGroupIdentificationSequence &copy);
 
   // --- general methods ---
 
@@ -205,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -221,7 +207,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -244,31 +230,31 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -281,13 +267,13 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -322,7 +308,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -330,7 +316,7 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtarics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h
similarity index 90%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtarics.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h
index 6b21868..95667d4 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtarics.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h
@@ -1,31 +1,30 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTAdditionalRTROIIdentificationCodeSequence
+ *  Header file for class DRTSegmentedPropertyTypeModifierCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTARICS_H
-#define DRTARICS_H
+#ifndef DRTSPTCS_H
+#define DRTSPTCS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
-#include "dcmtk/dcmrt/seq/drtporcs.h"  // for PurposeOfReferenceCodeSequence
 
 
-/** Interface class for AdditionalRTROIIdentificationCodeSequence (3006,00b9)
+/** Interface class for SegmentedPropertyTypeModifierCodeSequence (0062,0011)
  */
-class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
+class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyTypeModifierCodeSequence
   : protected DRTTypes
 {
 
@@ -57,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -176,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -204,18 +211,6 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
         const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
             { return EquivalentCodeSequence; }
 
-        /** get PurposeOfReferenceCodeSequence (0040,a170)
-         *  @return reference to sequence element
-         */
-        DRTPurposeOfReferenceCodeSequence &getPurposeOfReferenceCodeSequence()
-            { return PurposeOfReferenceCodeSequence; }
-
-        /** get PurposeOfReferenceCodeSequence (0040,a170)
-         *  @return const reference to sequence element
-         */
-        const DRTPurposeOfReferenceCodeSequence &getPurposeOfReferenceCodeSequence() const
-            { return PurposeOfReferenceCodeSequence; }
-
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -302,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -347,10 +349,10 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
-        /// PurposeOfReferenceCodeSequence (0040,a170) vr=SQ, vm=1, type=1
-        DRTPurposeOfReferenceCodeSequence PurposeOfReferenceCodeSequence;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
         DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
@@ -361,21 +363,22 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTAdditionalRTROIIdentificationCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTSegmentedPropertyTypeModifierCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTAdditionalRTROIIdentificationCodeSequence(const DRTAdditionalRTROIIdentificationCodeSequence &copy);
+    DRTSegmentedPropertyTypeModifierCodeSequence(const DRTSegmentedPropertyTypeModifierCodeSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTAdditionalRTROIIdentificationCodeSequence();
+    virtual ~DRTSegmentedPropertyTypeModifierCodeSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTAdditionalRTROIIdentificationCodeSequence &operator=(const DRTAdditionalRTROIIdentificationCodeSequence &copy);
+    DRTSegmentedPropertyTypeModifierCodeSequence &operator=(const DRTSegmentedPropertyTypeModifierCodeSequence &copy);
 
   // --- general methods ---
 
@@ -396,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -412,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -435,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -472,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -513,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -521,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtss.h
index 418ba83..1fa19cc 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtss.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtss.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -462,6 +463,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTSourceSequence &operator=(const DRTSourceSequence &copy);
 
@@ -484,7 +486,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -500,7 +502,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -523,31 +525,31 @@ class DCMTK_DCMRT_EXPORT DRTSourceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -560,13 +562,13 @@ class DCMTK_DCMRT_EXPORT DRTSourceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -601,7 +603,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -609,7 +611,7 @@ class DCMTK_DCMRT_EXPORT DRTSourceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtarics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h
similarity index 90%
rename from dcmrt/include/dcmtk/dcmrt/seq/drtarics.h
rename to dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h
index 6b21868..37ed044 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtarics.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h
@@ -1,31 +1,30 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTAdditionalRTROIIdentificationCodeSequence
+ *  Header file for class DRTStrainSourceRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTARICS_H
-#define DRTARICS_H
+#ifndef DRTSSRCS_H
+#define DRTSSRCS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
-#include "dcmtk/dcmrt/seq/drtporcs.h"  // for PurposeOfReferenceCodeSequence
 
 
-/** Interface class for AdditionalRTROIIdentificationCodeSequence (3006,00b9)
+/** Interface class for StrainSourceRegistryCodeSequence (0010,0215)
  */
-class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
+class DCMTK_DCMRT_EXPORT DRTStrainSourceRegistryCodeSequence
   : protected DRTTypes
 {
 
@@ -57,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -176,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResourceUID (0008,0118)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -204,18 +211,6 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
         const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
             { return EquivalentCodeSequence; }
 
-        /** get PurposeOfReferenceCodeSequence (0040,a170)
-         *  @return reference to sequence element
-         */
-        DRTPurposeOfReferenceCodeSequence &getPurposeOfReferenceCodeSequence()
-            { return PurposeOfReferenceCodeSequence; }
-
-        /** get PurposeOfReferenceCodeSequence (0040,a170)
-         *  @return const reference to sequence element
-         */
-        const DRTPurposeOfReferenceCodeSequence &getPurposeOfReferenceCodeSequence() const
-            { return PurposeOfReferenceCodeSequence; }
-
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -302,6 +297,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResourceUID (0008,0118)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
@@ -347,10 +349,10 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
         DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
         /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
         DcmUniqueIdentifier MappingResourceUID;
-        /// PurposeOfReferenceCodeSequence (0040,a170) vr=SQ, vm=1, type=1
-        DRTPurposeOfReferenceCodeSequence PurposeOfReferenceCodeSequence;
         /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
         DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
@@ -361,21 +363,22 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTAdditionalRTROIIdentificationCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTStrainSourceRegistryCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTAdditionalRTROIIdentificationCodeSequence(const DRTAdditionalRTROIIdentificationCodeSequence &copy);
+    DRTStrainSourceRegistryCodeSequence(const DRTStrainSourceRegistryCodeSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTAdditionalRTROIIdentificationCodeSequence();
+    virtual ~DRTStrainSourceRegistryCodeSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTAdditionalRTROIIdentificationCodeSequence &operator=(const DRTAdditionalRTROIIdentificationCodeSequence &copy);
+    DRTStrainSourceRegistryCodeSequence &operator=(const DRTStrainSourceRegistryCodeSequence &copy);
 
   // --- general methods ---
 
@@ -396,7 +399,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -412,7 +415,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -435,31 +438,31 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -472,13 +475,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -513,7 +516,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -521,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h
index 5c87802..b19598b 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStructureSetROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -261,6 +262,7 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTStructureSetROISequence &operator=(const DRTStructureSetROISequence &copy);
 
@@ -283,7 +285,7 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -299,7 +301,7 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -322,31 +324,31 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -359,13 +361,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -400,7 +402,7 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -408,7 +410,7 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsss.h
similarity index 78%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtsss.h
index 524f0aa..8250406 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsss.h
@@ -1,30 +1,30 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTRTReferencedStudySequence
+ *  Header file for class DRTStrainStockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTRSTS_H
-#define DRTRSTS_H
+#ifndef DRTSSS_H
+#define DRTSSS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtrses.h"   // for RTReferencedSeriesSequence
+#include "dcmtk/dcmrt/seq/drtssrcs.h"  // for StrainSourceRegistryCodeSequence
 
 
-/** Interface class for RTReferencedStudySequence (3006,0012)
+/** Interface class for StrainStockSequence (0010,0216)
  */
-class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
+class DCMTK_DCMRT_EXPORT DRTStrainStockSequence
   : protected DRTTypes
 {
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -91,61 +92,61 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
 
       // --- get DICOM attribute values ---
 
-        /** get ReferencedSOPClassUID (0008,1150)
+        /** get StrainSource (0010,0217)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+        OFCondition getStrainSource(OFString &value, const signed long pos = 0) const;
 
-        /** get ReferencedSOPInstanceUID (0008,1155)
+        /** get StrainStockNumber (0010,0214)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+        OFCondition getStrainStockNumber(OFString &value, const signed long pos = 0) const;
 
       // --- get DICOM sequence attributes ---
 
-        /** get RTReferencedSeriesSequence (3006,0014)
+        /** get StrainSourceRegistryCodeSequence (0010,0215)
          *  @return reference to sequence element
          */
-        DRTRTReferencedSeriesSequence &getRTReferencedSeriesSequence()
-            { return RTReferencedSeriesSequence; }
+        DRTStrainSourceRegistryCodeSequence &getStrainSourceRegistryCodeSequence()
+            { return StrainSourceRegistryCodeSequence; }
 
-        /** get RTReferencedSeriesSequence (3006,0014)
+        /** get StrainSourceRegistryCodeSequence (0010,0215)
          *  @return const reference to sequence element
          */
-        const DRTRTReferencedSeriesSequence &getRTReferencedSeriesSequence() const
-            { return RTReferencedSeriesSequence; }
+        const DRTStrainSourceRegistryCodeSequence &getStrainSourceRegistryCodeSequence() const
+            { return StrainSourceRegistryCodeSequence; }
 
       // --- set DICOM attribute values ---
 
-        /** set ReferencedSOPClassUID (0008,1150)
+        /** set StrainSource (0010,0217)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setStrainSource(const OFString &value, const OFBool check = OFTrue);
 
-        /** set ReferencedSOPInstanceUID (0008,1155)
+        /** set StrainStockNumber (0010,0214)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setStrainStockNumber(const OFString &value, const OFBool check = OFTrue);
 
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// RTReferencedSeriesSequence (3006,0014) vr=SQ, vm=1, type=1
-        DRTRTReferencedSeriesSequence RTReferencedSeriesSequence;
-        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPClassUID;
-        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+        /// StrainSource (0010,0217) vr=LO, vm=1, type=1
+        DcmLongString StrainSource;
+        /// StrainSourceRegistryCodeSequence (0010,0215) vr=SQ, vm=1, type=1
+        DRTStrainSourceRegistryCodeSequence StrainSourceRegistryCodeSequence;
+        /// StrainStockNumber (0010,0214) vr=LO, vm=1, type=1
+        DcmLongString StrainStockNumber;
 
     };
 
@@ -154,21 +155,22 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTRTReferencedStudySequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTStrainStockSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTRTReferencedStudySequence(const DRTRTReferencedStudySequence &copy);
+    DRTStrainStockSequence(const DRTStrainStockSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTRTReferencedStudySequence();
+    virtual ~DRTStrainStockSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTRTReferencedStudySequence &operator=(const DRTRTReferencedStudySequence &copy);
+    DRTStrainStockSequence &operator=(const DRTStrainStockSequence &copy);
 
   // --- general methods ---
 
@@ -189,7 +191,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -205,7 +207,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -228,31 +230,31 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -265,13 +267,13 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -306,7 +308,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -314,7 +316,7 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms0.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms0.h
index d226e57..c8cf934 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drttms0.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drttms0.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordMo
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -230,6 +231,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordMo
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &operator=(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &copy);
 
@@ -252,7 +254,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordMo
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -268,7 +270,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordMo
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -291,31 +293,31 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordMo
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -328,13 +330,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordMo
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -369,7 +371,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordMo
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordMo
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms9.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms9.h
index f05b97a..ce59b0f 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drttms9.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drttms9.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsM
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -230,6 +231,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsM
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &operator=(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &copy);
 
@@ -252,7 +254,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsM
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -268,7 +270,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsM
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -291,31 +293,31 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsM
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -328,13 +330,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsM
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -369,7 +371,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsM
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -377,7 +379,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsM
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttscds.h b/dcmrt/include/dcmtk/dcmrt/seq/drttscds.h
index e021480..8ba54a4 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drttscds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drttscds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryCalculatedDoseReferenceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -180,6 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryCalculatedDoseReferenceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTTreatmentSummaryCalculatedDoseReferenceSequence &operator=(const DRTTreatmentSummaryCalculatedDoseReferenceSequence &copy);
 
@@ -202,7 +204,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryCalculatedDoseReferenceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -218,7 +220,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryCalculatedDoseReferenceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -241,31 +243,31 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryCalculatedDoseReferenceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -278,13 +280,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryCalculatedDoseReferenceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -319,7 +321,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryCalculatedDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -327,7 +329,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryCalculatedDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h b/dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h
index a76b007..db9ac7b 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSessionIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -21,6 +21,7 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtas7.h"    // for ApplicatorSequence
 #include "dcmtk/dcmrt/seq/drtbldls.h"  // for BeamLimitingDeviceLeafPairsSequence
+#include "dcmtk/dcmrt/seq/drtdddps.h"  // for DeliveredDepthDoseParametersSequence
 #include "dcmtk/dcmrt/seq/drtgas.h"    // for GeneralAccessorySequence
 #include "dcmtk/dcmrt/seq/drticpds.h"  // for IonControlPointDeliverySequence
 #include "dcmtk/dcmrt/seq/drtrbls.h"   // for RecordedBlockSequence
@@ -70,6 +71,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -182,6 +184,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
          */
         OFCondition getDeliveredTreatmentTime(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get FixationEye (300a,0150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getFixationEye(OFString &value, const signed long pos = 0) const;
+
         /** get FixationLightAzimuthalAngle (300a,0356)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
@@ -196,6 +205,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
          */
         OFCondition getFixationLightPolarAngle(Float32 &value, const unsigned long pos = 0) const;
 
+        /** get ModulatedScanModeType (300a,0309)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getModulatedScanModeType(OFString &value, const signed long pos = 0) const;
+
         /** get NumberOfBlocks (300a,00f0)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -516,6 +532,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
         const DRTBeamLimitingDeviceLeafPairsSequence &getBeamLimitingDeviceLeafPairsSequence() const
             { return BeamLimitingDeviceLeafPairsSequence; }
 
+        /** get DeliveredDepthDoseParametersSequence (300a,0506)
+         *  @return reference to sequence element
+         */
+        DRTDeliveredDepthDoseParametersSequence &getDeliveredDepthDoseParametersSequence()
+            { return DeliveredDepthDoseParametersSequence; }
+
+        /** get DeliveredDepthDoseParametersSequence (300a,0506)
+         *  @return const reference to sequence element
+         */
+        const DRTDeliveredDepthDoseParametersSequence &getDeliveredDepthDoseParametersSequence() const
+            { return DeliveredDepthDoseParametersSequence; }
+
         /** get GeneralAccessorySequence (300a,0420)
          *  @return reference to sequence element
          */
@@ -723,6 +751,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
          */
         OFCondition setDeliveredTreatmentTime(const OFString &value, const OFBool check = OFTrue);
 
+        /** set FixationEye (300a,0150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setFixationEye(const OFString &value, const OFBool check = OFTrue);
+
         /** set FixationLightAzimuthalAngle (300a,0356)
          *  @param  value  value to be set (should be valid for this VR)
          *  @param  pos    index of the value to be set (0..vm-1), vm=1
@@ -737,6 +772,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
          */
         OFCondition setFixationLightPolarAngle(const Float32 value, const unsigned long pos = 0);
 
+        /** set ModulatedScanModeType (300a,0309)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setModulatedScanModeType(const OFString &value, const OFBool check = OFTrue);
+
         /** set NumberOfBlocks (300a,00f0)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -936,12 +978,16 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
         DcmCodeString BeamType;
         /// CurrentFractionNumber (3008,0022) vr=IS, vm=1, type=2
         DcmIntegerString CurrentFractionNumber;
+        /// DeliveredDepthDoseParametersSequence (300a,0506) vr=SQ, vm=1, type=3
+        DRTDeliveredDepthDoseParametersSequence DeliveredDepthDoseParametersSequence;
         /// DeliveredPrimaryMeterset (3008,0036) vr=DS, vm=1, type=3
         DcmDecimalString DeliveredPrimaryMeterset;
         /// DeliveredSecondaryMeterset (3008,0037) vr=DS, vm=1, type=3
         DcmDecimalString DeliveredSecondaryMeterset;
         /// DeliveredTreatmentTime (3008,003b) vr=DS, vm=1, type=3
         DcmDecimalString DeliveredTreatmentTime;
+        /// FixationEye (300a,0150) vr=CS, vm=1, type=3
+        DcmCodeString FixationEye;
         /// FixationLightAzimuthalAngle (300a,0356) vr=FL, vm=1, type=3
         DcmFloatingPointSingle FixationLightAzimuthalAngle;
         /// FixationLightPolarAngle (300a,0358) vr=FL, vm=1, type=3
@@ -950,6 +996,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
         DRTGeneralAccessorySequence GeneralAccessorySequence;
         /// IonControlPointDeliverySequence (3008,0041) vr=SQ, vm=1, type=1
         DRTIonControlPointDeliverySequence IonControlPointDeliverySequence;
+        /// ModulatedScanModeType (300a,0309) vr=CS, vm=1, type=1C
+        DcmCodeString ModulatedScanModeType;
         /// NumberOfBlocks (300a,00f0) vr=IS, vm=1, type=1
         DcmIntegerString NumberOfBlocks;
         /// NumberOfBoli (300a,00ed) vr=IS, vm=1, type=1
@@ -1045,6 +1093,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTTreatmentSessionIonBeamSequence &operator=(const DRTTreatmentSessionIonBeamSequence &copy);
 
@@ -1067,7 +1116,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -1083,7 +1132,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -1106,31 +1155,31 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -1143,13 +1192,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -1184,7 +1233,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -1192,7 +1241,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h b/dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h
index 6bab8b3..e338875 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryMeasuredDoseReferenceSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -180,6 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryMeasuredDoseReferenceSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTTreatmentSummaryMeasuredDoseReferenceSequence &operator=(const DRTTreatmentSummaryMeasuredDoseReferenceSequence &copy);
 
@@ -202,7 +204,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryMeasuredDoseReferenceSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -218,7 +220,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryMeasuredDoseReferenceSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -241,31 +243,31 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryMeasuredDoseReferenceSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -278,13 +280,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryMeasuredDoseReferenceSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -319,7 +321,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryMeasuredDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -327,7 +329,7 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryMeasuredDoseReferenceSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttts.h b/dcmrt/include/dcmtk/dcmrt/seq/drttts.h
index c3073b3..272c3df 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drttts.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drttts.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -56,6 +56,7 @@ class DCMTK_DCMRT_EXPORT DRTToleranceTableSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -383,6 +384,7 @@ class DCMTK_DCMRT_EXPORT DRTToleranceTableSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTToleranceTableSequence &operator=(const DRTToleranceTableSequence &copy);
 
@@ -405,7 +407,7 @@ class DCMTK_DCMRT_EXPORT DRTToleranceTableSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -421,7 +423,7 @@ class DCMTK_DCMRT_EXPORT DRTToleranceTableSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -444,31 +446,31 @@ class DCMTK_DCMRT_EXPORT DRTToleranceTableSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -481,13 +483,13 @@ class DCMTK_DCMRT_EXPORT DRTToleranceTableSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -522,7 +524,7 @@ class DCMTK_DCMRT_EXPORT DRTToleranceTableSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -530,7 +532,7 @@ class DCMTK_DCMRT_EXPORT DRTToleranceTableSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h b/dcmrt/include/dcmtk/dcmrt/seq/drtudis.h
similarity index 83%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtudis.h
index 6339f1e..990dc1a 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtudis.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTRecordedSnoutSequence
+ *  Header file for class DRTUDISequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
-#ifndef DRTRSNS_H
-#define DRTRSNS_H
+#ifndef DRTUDIS_H
+#define DRTUDIS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
@@ -21,9 +21,9 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 
 
-/** Interface class for RecordedSnoutSequence (3008,00f0)
+/** Interface class for UDISequence (0018,100a)
  */
-class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
+class DCMTK_DCMRT_EXPORT DRTUDISequence
   : protected DRTTypes
 {
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -90,45 +91,45 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
 
       // --- get DICOM attribute values ---
 
-        /** get AccessoryCode (300a,00f9)
+        /** get DeviceDescription (0050,0020)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+        OFCondition getDeviceDescription(OFString &value, const signed long pos = 0) const;
 
-        /** get SnoutID (300a,030f)
+        /** get UniqueDeviceIdentifier (0018,1009)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getSnoutID(OFString &value, const signed long pos = 0) const;
+        OFCondition getUniqueDeviceIdentifier(OFString &value, const signed long pos = 0) const;
 
       // --- set DICOM attribute values ---
 
-        /** set AccessoryCode (300a,00f9)
+        /** set DeviceDescription (0050,0020)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setDeviceDescription(const OFString &value, const OFBool check = OFTrue);
 
-        /** set SnoutID (300a,030f)
+        /** set UniqueDeviceIdentifier (0018,1009)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setSnoutID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setUniqueDeviceIdentifier(const OFString &value, const OFBool check = OFTrue);
 
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
-        DcmLongString AccessoryCode;
-        /// SnoutID (300a,030f) vr=SH, vm=1, type=1
-        DcmShortString SnoutID;
+        /// DeviceDescription (0050,0020) vr=LO, vm=1, type=3
+        DcmLongString DeviceDescription;
+        /// UniqueDeviceIdentifier (0018,1009) vr=UT, vm=1, type=1
+        DcmUnlimitedText UniqueDeviceIdentifier;
 
     };
 
@@ -137,21 +138,22 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTRecordedSnoutSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTUDISequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTRecordedSnoutSequence(const DRTRecordedSnoutSequence &copy);
+    DRTUDISequence(const DRTUDISequence &copy);
 
     /** destructor
      */
-    virtual ~DRTRecordedSnoutSequence();
+    virtual ~DRTUDISequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
-    DRTRecordedSnoutSequence &operator=(const DRTRecordedSnoutSequence &copy);
+    DRTUDISequence &operator=(const DRTUDISequence &copy);
 
   // --- general methods ---
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtvls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtvls.h
index c2374d6..6ff4cd3 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtvls.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtvls.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTVOILUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTVOILUTSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -166,6 +167,7 @@ class DCMTK_DCMRT_EXPORT DRTVOILUTSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTVOILUTSequence &operator=(const DRTVOILUTSequence &copy);
 
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTVOILUTSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -204,7 +206,7 @@ class DCMTK_DCMRT_EXPORT DRTVOILUTSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -227,31 +229,31 @@ class DCMTK_DCMRT_EXPORT DRTVOILUTSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -264,13 +266,13 @@ class DCMTK_DCMRT_EXPORT DRTVOILUTSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -305,7 +307,7 @@ class DCMTK_DCMRT_EXPORT DRTVOILUTSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -313,7 +315,7 @@ class DCMTK_DCMRT_EXPORT DRTVOILUTSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtwps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtwps.h
index 62fcd56..14bdd16 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtwps.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtwps.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgePositionSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -157,6 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgePositionSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTWedgePositionSequence &operator=(const DRTWedgePositionSequence &copy);
 
@@ -179,7 +181,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgePositionSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -195,7 +197,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgePositionSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -218,31 +220,31 @@ class DCMTK_DCMRT_EXPORT DRTWedgePositionSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -255,13 +257,13 @@ class DCMTK_DCMRT_EXPORT DRTWedgePositionSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -296,7 +298,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgePositionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -304,7 +306,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgePositionSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
index e1c2a36..65fb483 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWADORetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -134,6 +135,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTWADORetrievalSequence &operator=(const DRTWADORetrievalSequence &copy);
 
@@ -156,7 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -195,31 +197,31 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -232,13 +234,13 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -273,7 +275,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -281,7 +283,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
index 964ba62..babd6c9 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWADORSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -134,6 +135,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTWADORSRetrievalSequence &operator=(const DRTWADORSRetrievalSequence &copy);
 
@@ -156,7 +158,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -195,31 +197,31 @@ class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -232,13 +234,13 @@ class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -273,7 +275,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -281,7 +283,7 @@ class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtws.h b/dcmrt/include/dcmtk/dcmrt/seq/drtws.h
index 215e57c..e912914 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtws.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtws.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -304,6 +305,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTWedgeSequence &operator=(const DRTWedgeSequence &copy);
 
@@ -326,7 +328,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -342,7 +344,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -365,31 +367,31 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -402,13 +404,13 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -443,7 +445,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -451,7 +453,7 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h
index 162768d..8bc7cc3 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTXDSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -55,6 +55,7 @@ class DCMTK_DCMRT_EXPORT DRTXDSRetrievalSequence
 
         /** assigment operator
          *  @param copy item object to be copied
+         *  @return reference to this object
          */
         Item &operator=(const Item &copy);
 
@@ -150,6 +151,7 @@ class DCMTK_DCMRT_EXPORT DRTXDSRetrievalSequence
 
     /** assigment operator
      *  @param copy sequence object to be copied
+     *  @return reference to this object
      */
     DRTXDSRetrievalSequence &operator=(const DRTXDSRetrievalSequence &copy);
 
@@ -172,7 +174,7 @@ class DCMTK_DCMRT_EXPORT DRTXDSRetrievalSequence
     /** get number of items in the sequence
      *  @return number of items
      */
-    unsigned long getNumberOfItems() const;
+    size_t getNumberOfItems() const;
 
     /** goto first item in the sequence
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -188,7 +190,7 @@ class DCMTK_DCMRT_EXPORT DRTXDSRetrievalSequence
      *  @param  num  number of the item to be selected (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num);
+    OFCondition gotoItem(const size_t num);
 
     /** get current item in the sequence
      *  @param  item  reference to item pointer (result variable)
@@ -211,31 +213,31 @@ class DCMTK_DCMRT_EXPORT DRTXDSRetrievalSequence
      *  @param  item  reference to item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition getItem(const unsigned long num, Item *&item);
+    OFCondition getItem(const size_t num, Item *&item);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &getItem(const unsigned long num);
+    Item &getItem(const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &getItem(const unsigned long num) const;
+    const Item &getItem(const size_t num) const;
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return reference to specified item if successful, empty default item otherwise
      */
-    Item &operator[](const unsigned long num);
+    Item &operator[](const size_t num);
 
     /** get particular item in the sequence
      *  @param  num  number of the item to be retrieved (0..num-1)
      *  @return const reference to specified item if successful, empty default item otherwise
      */
-    const Item &operator[](const unsigned long num) const;
+    const Item &operator[](const size_t num) const;
 
     /** add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
@@ -248,13 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTXDSRetrievalSequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition insertItem(const unsigned long pos, Item *&item);
+    OFCondition insertItem(const size_t pos, Item *&item);
 
     /** remove particular item from the sequence
      *  @param  pos  position of the item to be removed (0..num-1)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition removeItem(const unsigned long pos);
+    OFCondition removeItem(const size_t pos);
 
   // --- input/output methods ---
 
@@ -289,7 +291,7 @@ class DCMTK_DCMRT_EXPORT DRTXDSRetrievalSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListIterator(Item *) &iterator);
 
     /** goto particular item in the sequence
@@ -297,7 +299,7 @@ class DCMTK_DCMRT_EXPORT DRTXDSRetrievalSequence
      *  @param  iterator  list iterator storing the position of the item
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition gotoItem(const unsigned long num,
+    OFCondition gotoItem(const size_t num,
                          OFListConstIterator(Item *) &iterator) const;
 
   private:
diff --git a/dcmrt/libsrc/CMakeLists.txt b/dcmrt/libsrc/CMakeLists.txt
index c0447c3..ab28356 100644
--- a/dcmrt/libsrc/CMakeLists.txt
+++ b/dcmrt/libsrc/CMakeLists.txt
@@ -1,4 +1,4 @@
 # create library from source files
-DCMTK_ADD_LIBRARY(dcmrt drtdose drtimage drtplan drtstrct drttreat drtionpl drtiontr drmdose drmimage drmplan drmstrct drttypes drtaadcs drtadcs drtads drtafs drtags drtajcs drtarics drtas1 drtas5 drtas6 drtas7 drtass drtbads drtbas drtbcps drtbl2 drtbl5 drtbldls drtbldps drtblds1 drtblds5 drtblds6 drtbldts drtbrcss drtbrdrs drtbrs drtbs drtbss drtbvcps drtcbars drtccs drtcctus drtcdrs drtces drtchs drtcims drtcis drtcncs drtcos drtcpas drtcpis drtcps drtcsas drtcs drtcshs drtcsis drtcss [...]
+DCMTK_ADD_LIBRARY(dcmrt drtdose drtimage drtplan drtstrct drttreat drtionpl drtiontr drmdose drmimage drmplan drmstrct drttypes drtaadcs drtadcs drtads drtafs drtags drtajcs drtas1 drtas5 drtas6 drtas7 drtass drtbads drtbas drtbcps drtbl2 drtbl5 drtbldls drtbldps drtblds1 drtblds5 drtblds6 drtbldts drtbrcss drtbrdrs drtbrs drtbs drtbss drtbvcps drtcbars drtccs drtcctus drtcdrs drtces drtcgis drtchs drtcims drtcis drtcncs drtcos drtcpas drtcpis drtcps drtcsas drtcs drtcshs drtcsis drtcss  [...]
 
 DCMTK_TARGET_LINK_MODULES(dcmrt ofstd oflog dcmdata dcmimgle)
diff --git a/dcmrt/libsrc/Makefile.dep b/dcmrt/libsrc/Makefile.dep
index e85cb72..ccb5d23 100644
--- a/dcmrt/libsrc/Makefile.dep
+++ b/dcmrt/libsrc/Makefile.dep
@@ -119,7 +119,8 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
@@ -129,16 +130,17 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
  ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfes.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
  ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmls.h \
- ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
- ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
@@ -152,17 +154,17 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../include/dcmtk/dcmrt/seq/drtpsss.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
  ../include/dcmtk/dcmrt/seq/drtrdros.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
  ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
@@ -184,9 +186,13 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtssrs.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h
 drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drmimage.h ../include/dcmtk/dcmrt/drtimage.h \
@@ -310,6 +316,7 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
  ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h \
  ../include/dcmtk/dcmrt/seq/drtcbars.h \
  ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
  ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
@@ -324,15 +331,16 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtblds5.h \
  ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
  ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \
- ../include/dcmtk/dcmrt/seq/drtfes.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtfes.h ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
  ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmls.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtmls.h \
  ../include/dcmtk/dcmrt/seq/drtmacds.h \
  ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtoas.h \
  ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
@@ -348,7 +356,9 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
  ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
@@ -369,8 +379,12 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../include/dcmtk/dcmrt/seq/drtrscs.h \
  ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtvls.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/seq/drtvls.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dimoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -525,27 +539,30 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
  ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
  ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h \
  ../include/dcmtk/dcmrt/seq/drtrbas8.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
  ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
  ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
  ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
@@ -561,8 +578,11 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
@@ -572,18 +592,22 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrsss.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
- ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtss.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h ../include/dcmtk/dcmrt/seq/drtss.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
  ../include/dcmtk/dcmrt/seq/drttts.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h \
- ../include/dcmtk/dcmrt/seq/drttms9.h ../include/dcmtk/dcmrt/drmsrch.h
+ ../include/dcmtk/dcmrt/seq/drttms9.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drmsrch.h
 drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drmstrct.h ../include/dcmtk/dcmrt/drtstrct.h \
  ../include/dcmtk/dcmrt/drttypes.h \
@@ -705,23 +729,25 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
  ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
@@ -735,19 +761,23 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../include/dcmtk/dcmrt/seq/drtpsss.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h ../include/dcmtk/dcmrt/seq/drtrros.h \
- ../include/dcmtk/dcmrt/seq/drtarics.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtrros.h \
  ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h \
- ../include/dcmtk/dcmrt/seq/drtrics.h ../include/dcmtk/dcmrt/seq/drtrrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrics.h \
+ ../include/dcmtk/dcmrt/seq/drtsptcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrrs.h \
  ../include/dcmtk/dcmrt/seq/drtrrros.h \
  ../include/dcmtk/dcmrt/seq/drtspccs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
@@ -756,15 +786,20 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
+ ../include/dcmtk/dcmrt/seq/drtras.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h \
- ../include/dcmtk/dcmrt/seq/drtssrs.h ../include/dcmtk/dcmrt/seq/drtdcs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h ../include/dcmtk/dcmrt/drmsrch.h
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtssrs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drmsrch.h
 drtaadcs.o: drtaadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -1459,123 +1494,6 @@ drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtarics.o: drtarics.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtarics.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../../ofstd/include/dcmtk/ofstd/oftypes.h \
- ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
- ../../ofstd/include/dcmtk/ofstd/ofcast.h \
- ../../ofstd/include/dcmtk/ofstd/ofexport.h \
- ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/dcmrt/drttypes.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../ofstd/include/dcmtk/ofstd/ofvector.h \
- ../../oflog/include/dcmtk/oflog/oflog.h \
- ../../oflog/include/dcmtk/oflog/logger.h \
- ../../oflog/include/dcmtk/oflog/config.h \
- ../../oflog/include/dcmtk/oflog/config/defines.h \
- ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
- ../../oflog/include/dcmtk/oflog/loglevel.h \
- ../../oflog/include/dcmtk/oflog/tstring.h \
- ../../oflog/include/dcmtk/oflog/tchar.h \
- ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
- ../../oflog/include/dcmtk/oflog/appender.h \
- ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
- ../../oflog/include/dcmtk/oflog/layout.h \
- ../../oflog/include/dcmtk/oflog/streams.h \
- ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
- ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
- ../../oflog/include/dcmtk/oflog/spi/filter.h \
- ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
- ../../oflog/include/dcmtk/oflog/spi/logfact.h \
- ../../oflog/include/dcmtk/oflog/logmacro.h \
- ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
- ../../oflog/include/dcmtk/oflog/tracelog.h \
- ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
- ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
- ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
- ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/oflimits.h \
- ../../config/include/dcmtk/config/arith.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
- ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
- ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
- ../../ofstd/include/dcmtk/ofstd/ofmap.h \
- ../../ofstd/include/dcmtk/ofstd/ofutil.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
- ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h
 drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtas1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -4709,8 +4627,8 @@ drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h
-drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtchs.h \
+drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4823,12 +4741,9 @@ drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbcps.h \
- ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
- ../include/dcmtk/dcmrt/seq/drtcshs.h
-drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtchs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4942,12 +4857,11 @@ drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtbcps.h \
+ ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcshs.h
+drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5060,9 +4974,13 @@ drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
  ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5175,10 +5093,9 @@ drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcos.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5291,9 +5208,10 @@ drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcpas.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5407,8 +5325,8 @@ drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h \
+drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcpas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5521,11 +5439,9 @@ drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h
-drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5639,11 +5555,10 @@ drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h
-drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5757,9 +5672,11 @@ drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h
-drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h
+drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5872,9 +5789,10 @@ drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcshs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtcis.h
+drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5988,8 +5906,8 @@ drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
+drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcshs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6103,8 +6021,8 @@ drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h \
+drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6217,10 +6135,9 @@ drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6335,8 +6252,8 @@ drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h \
+drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6449,9 +6366,10 @@ drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdddps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6564,10 +6482,9 @@ drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtddps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6681,8 +6598,8 @@ drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
+drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6796,14 +6713,16 @@ drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtdose.h ../include/dcmtk/dcmrt/drttypes.h \
+drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -6830,7 +6749,6 @@ drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
@@ -6910,82 +6828,9 @@ drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
- ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdvhs.h \
- ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfes.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmls.h \
- ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
- ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h \
- ../include/dcmtk/dcmrt/seq/drtrdros.h \
- ../include/dcmtk/dcmrt/seq/drtrwvms.h \
- ../include/dcmtk/dcmrt/seq/drtqds.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrfors.h \
- ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps.h \
- ../include/dcmtk/dcmrt/seq/drtrfgs.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
- ../include/dcmtk/dcmrt/seq/drtssrs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h
-drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7099,8 +6944,8 @@ drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtds.h \
+drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7213,18 +7058,15 @@ drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtdose.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -7251,6 +7093,7 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
@@ -7330,9 +7173,88 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdvhs.h \
+ ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfes.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtrdros.h \
+ ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrfors.h \
+ ../include/dcmtk/dcmrt/seq/drtrsts.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrrtps.h \
+ ../include/dcmtk/dcmrt/seq/drtrfgs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtssrs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h
+drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7445,11 +7367,9 @@ drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdvhs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7563,9 +7483,9 @@ drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdvrrs.h
-drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7678,9 +7598,10 @@ drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drteas.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7793,9 +7714,11 @@ drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdvhs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7908,9 +7831,10 @@ drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtdvrrs.h
+drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8023,15 +7947,11 @@ drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \
- ../include/dcmtk/dcmrt/seq/drtblds5.h \
- ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
- ../include/dcmtk/dcmrt/seq/drtpfms.h
-drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfds.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
@@ -8143,8 +8063,8 @@ drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfes.h \
+drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8258,8 +8178,8 @@ drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfgs.h \
+drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtes.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8373,13 +8293,12 @@ drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrbs8.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h
-drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfgss.h \
+ ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \
+ ../include/dcmtk/dcmrt/seq/drtblds5.h \
+ ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
+ ../include/dcmtk/dcmrt/seq/drtpfms.h
+drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8492,10 +8411,9 @@ drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtfsss.h
-drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfms.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfes.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8609,8 +8527,8 @@ drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfsss.h \
+drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfgs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8723,9 +8641,14 @@ drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs8.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas8.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h
+drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfgss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8838,9 +8761,10 @@ drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtfsss.h
+drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8954,8 +8878,8 @@ drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
+drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfsss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9069,8 +8993,8 @@ drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
+drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtgas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9184,8 +9108,8 @@ drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiblds.h \
+drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9298,9 +9222,13 @@ drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtibls.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
+ ../include/dcmtk/dcmrt/seq/drtajcs.h
+drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9413,10 +9341,9 @@ drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbss.h
-drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtibs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9529,26 +9456,9 @@ drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtas6.h ../include/dcmtk/dcmrt/seq/drtgas.h \
- ../include/dcmtk/dcmrt/seq/drtiblds.h \
- ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
- ../include/dcmtk/dcmrt/seq/drticps.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
- ../include/dcmtk/dcmrt/seq/drtlsds6.h \
- ../include/dcmtk/dcmrt/seq/drtrmss6.h \
- ../include/dcmtk/dcmrt/seq/drtrshs6.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
- ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \
- ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \
- ../include/dcmtk/dcmrt/seq/drtrshs.h \
- ../include/dcmtk/dcmrt/seq/drtrbos6.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h \
- ../include/dcmtk/dcmrt/seq/drtrris6.h \
- ../include/dcmtk/dcmrt/seq/drtsns.h
-drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drticpds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9661,15 +9571,9 @@ drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtcpas.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
- ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \
- ../include/dcmtk/dcmrt/seq/drtrmss7.h \
- ../include/dcmtk/dcmrt/seq/drtrshs7.h
-drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drticps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiblds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9782,15 +9686,9 @@ drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
- ../include/dcmtk/dcmrt/seq/drtlsds6.h \
- ../include/dcmtk/dcmrt/seq/drtrmss6.h \
- ../include/dcmtk/dcmrt/seq/drtrshs6.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs6.h
-drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtibls.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9904,9 +9802,9 @@ drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiis.h \
+ ../include/dcmtk/dcmrt/seq/drtbss.h
+drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtibs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10019,15 +9917,35 @@ drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtimage.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtas6.h ../include/dcmtk/dcmrt/seq/drtddps.h \
+ ../include/dcmtk/dcmrt/seq/drtgas.h \
+ ../include/dcmtk/dcmrt/seq/drtiblds.h \
+ ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
+ ../include/dcmtk/dcmrt/seq/drticps.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds6.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss6.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs6.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
+ ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos6.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h \
+ ../include/dcmtk/dcmrt/seq/drtrris6.h \
+ ../include/dcmtk/dcmrt/seq/drtsns.h
+drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drticpds.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -10054,7 +9972,6 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
@@ -10134,82 +10051,24 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtcbars.h \
- ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtds.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtes.h \
- ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \
- ../include/dcmtk/dcmrt/seq/drtblds5.h \
- ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
- ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \
- ../include/dcmtk/dcmrt/seq/drtfes.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmls.h \
- ../include/dcmtk/dcmrt/seq/drtmacds.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrwvms.h \
- ../include/dcmtk/dcmrt/seq/drtqds.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
- ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtvls.h
-drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtionpl.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtcpas.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss7.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs7.h
+drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drticps.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -10236,7 +10095,6 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
@@ -10316,95 +10174,1666 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
- ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
- ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas6.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h \
- ../include/dcmtk/dcmrt/seq/drtiblds.h \
- ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
- ../include/dcmtk/dcmrt/seq/drticps.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
  ../include/dcmtk/dcmrt/seq/drtiwps.h \
  ../include/dcmtk/dcmrt/seq/drtlsds6.h \
- ../include/dcmtk/dcmrt/seq/drtrmss6.h \
- ../include/dcmtk/dcmrt/seq/drtrshs6.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
- ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \
- ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \
- ../include/dcmtk/dcmrt/seq/drtrshs.h \
- ../include/dcmtk/dcmrt/seq/drtrbos6.h \
- ../include/dcmtk/dcmrt/seq/drtrris6.h \
- ../include/dcmtk/dcmrt/seq/drtsns.h ../include/dcmtk/dcmrt/seq/drtitts.h \
- ../include/dcmtk/dcmrt/seq/drtbldts.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
- ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
- ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
- ../include/dcmtk/dcmrt/seq/drtshds.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrsss.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
- ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h
-drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtiontr.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss6.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs6.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs6.h
+drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiis.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtimage.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h \
+ ../include/dcmtk/dcmrt/seq/drtcbars.h \
+ ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
+ ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtds.h \
+ ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtes.h \
+ ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \
+ ../include/dcmtk/dcmrt/seq/drtblds5.h \
+ ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
+ ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \
+ ../include/dcmtk/dcmrt/seq/drtfes.h ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtmls.h \
+ ../include/dcmtk/dcmrt/seq/drtmacds.h \
+ ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtoas.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
+ ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/seq/drtvls.h
+drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtionpl.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
+ ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas8.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas6.h \
+ ../include/dcmtk/dcmrt/seq/drtddps.h ../include/dcmtk/dcmrt/seq/drtgas.h \
+ ../include/dcmtk/dcmrt/seq/drtiblds.h \
+ ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
+ ../include/dcmtk/dcmrt/seq/drticps.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds6.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss6.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs6.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
+ ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos6.h \
+ ../include/dcmtk/dcmrt/seq/drtrris6.h \
+ ../include/dcmtk/dcmrt/seq/drtsns.h ../include/dcmtk/dcmrt/seq/drtitts.h \
+ ../include/dcmtk/dcmrt/seq/drtbldts.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
+ ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
+ ../include/dcmtk/dcmrt/seq/drtshds.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h
+drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtiontr.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfgss.h \
+ ../include/dcmtk/dcmrt/seq/drtfsss.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtmdrs.h ../include/dcmtk/dcmrt/seq/drtoas.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
+ ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
+ ../include/dcmtk/dcmrt/seq/drtshds.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs4.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drttms0.h \
+ ../include/dcmtk/dcmrt/seq/drttsibs.h \
+ ../include/dcmtk/dcmrt/seq/drtas7.h \
+ ../include/dcmtk/dcmrt/seq/drtbldls.h \
+ ../include/dcmtk/dcmrt/seq/drtdddps.h \
+ ../include/dcmtk/dcmrt/seq/drtgas.h \
+ ../include/dcmtk/dcmrt/seq/drticpds.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtcpas.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss7.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs7.h \
+ ../include/dcmtk/dcmrt/seq/drtrbls.h \
+ ../include/dcmtk/dcmrt/seq/drtrcos.h \
+ ../include/dcmtk/dcmrt/seq/drtrlsds.h \
+ ../include/dcmtk/dcmrt/seq/drtrrms.h \
+ ../include/dcmtk/dcmrt/seq/drtrrshs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos7.h \
+ ../include/dcmtk/dcmrt/seq/drtrcdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvis.h \
+ ../include/dcmtk/dcmrt/seq/drttscds.h \
+ ../include/dcmtk/dcmrt/seq/drttsmds.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h
+drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
+ ../include/dcmtk/dcmrt/seq/drtajcs.h
+drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtircs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtitts.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbldts.h
+drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiws.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds6.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -10431,7 +11860,6 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
@@ -10510,94 +11938,9 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcdrs.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
- ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfgss.h \
- ../include/dcmtk/dcmrt/seq/drtfsss.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmdrs.h \
- ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
- ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
- ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
- ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
- ../include/dcmtk/dcmrt/seq/drtshds.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs4.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drttms0.h \
- ../include/dcmtk/dcmrt/seq/drttsibs.h \
- ../include/dcmtk/dcmrt/seq/drtas7.h \
- ../include/dcmtk/dcmrt/seq/drtbldls.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h \
- ../include/dcmtk/dcmrt/seq/drticpds.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtcpas.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
- ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \
- ../include/dcmtk/dcmrt/seq/drtrmss7.h \
- ../include/dcmtk/dcmrt/seq/drtrshs7.h \
- ../include/dcmtk/dcmrt/seq/drtrbls.h \
- ../include/dcmtk/dcmrt/seq/drtrcos.h \
- ../include/dcmtk/dcmrt/seq/drtrlsds.h \
- ../include/dcmtk/dcmrt/seq/drtrrms.h \
- ../include/dcmtk/dcmrt/seq/drtrrshs.h \
- ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \
- ../include/dcmtk/dcmrt/seq/drtrbos7.h \
- ../include/dcmtk/dcmrt/seq/drtrcdrs.h \
- ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
- ../include/dcmtk/dcmrt/seq/drtrvis.h \
- ../include/dcmtk/dcmrt/seq/drttscds.h \
- ../include/dcmtk/dcmrt/seq/drttsmds.h
-drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds7.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10710,12 +12053,9 @@ drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
- ../include/dcmtk/dcmrt/seq/drtajcs.h
-drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtircs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmacds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10828,9 +12168,10 @@ drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtecs.h
+drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10944,8 +12285,8 @@ drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtitts.h \
+drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11058,10 +12399,9 @@ drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbldts.h
-drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmls.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11175,8 +12515,8 @@ drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiws.h \
+drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11290,8 +12630,8 @@ drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtlsds.h \
+drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmris.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11405,8 +12745,8 @@ drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtlsds6.h \
+drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11520,8 +12860,8 @@ drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtlsds7.h \
+drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11634,9 +12974,10 @@ drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmacds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11750,9 +13091,9 @@ drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtecs.h
-drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h
+drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11865,9 +13206,11 @@ drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmdrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11980,9 +13323,13 @@ drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmls.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
+ ../include/dcmtk/dcmrt/seq/drtajcs.h
+drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12095,9 +13442,11 @@ drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h
+drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12209,10 +13558,11 @@ drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12325,9 +13675,10 @@ drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12441,9 +13792,13 @@ drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtoas.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12557,9 +13912,10 @@ drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h
-drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h
+drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12672,11 +14028,9 @@ drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h
-drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpfms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12789,13 +14143,9 @@ drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
- ../include/dcmtk/dcmrt/seq/drtajcs.h
-drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtos.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12908,17 +14258,16 @@ drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtplan.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -12945,6 +14294,7 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
@@ -13024,9 +14374,99 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \
+ ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
+ ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcshs.h \
+ ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \
+ ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \
+ ../include/dcmtk/dcmrt/seq/drtblds1.h \
+ ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \
+ ../include/dcmtk/dcmrt/seq/drtcps.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \
+ ../include/dcmtk/dcmrt/seq/drtgas.h ../include/dcmtk/dcmrt/seq/drtpvis.h \
+ ../include/dcmtk/dcmrt/seq/drtpfms.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos1.h \
+ ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
+ ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas8.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
+ ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
+ ../include/dcmtk/dcmrt/seq/drtshds.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
  ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h ../include/dcmtk/dcmrt/seq/drtss.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drttts.h \
+ ../include/dcmtk/dcmrt/seq/drtbldts.h \
+ ../include/dcmtk/dcmrt/seq/drttms9.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h
+drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13141,8 +14581,8 @@ drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h \
+drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13256,13 +14696,10 @@ drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13376,9 +14813,13 @@ drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h
-drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpfms.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13491,9 +14932,11 @@ drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13608,14 +15051,16 @@ drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtplan.h ../include/dcmtk/dcmrt/drttypes.h \
+drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -13642,7 +15087,6 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
@@ -13722,89 +15166,9 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \
- ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
- ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
- ../include/dcmtk/dcmrt/seq/drtcshs.h \
- ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \
- ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \
- ../include/dcmtk/dcmrt/seq/drtblds1.h \
- ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \
- ../include/dcmtk/dcmrt/seq/drtcps.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h ../include/dcmtk/dcmrt/seq/drtpvis.h \
- ../include/dcmtk/dcmrt/seq/drtpfms.h \
- ../include/dcmtk/dcmrt/seq/drtrbos1.h \
- ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
- ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
- ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
- ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
- ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
- ../include/dcmtk/dcmrt/seq/drtshds.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrsss.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
- ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtss.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drttts.h \
- ../include/dcmtk/dcmrt/seq/drtbldts.h \
- ../include/dcmtk/dcmrt/seq/drttms9.h
-drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13918,9 +15282,11 @@ drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
+ ../include/dcmtk/dcmrt/seq/drtshds.h
+drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14033,11 +15399,9 @@ drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h
-drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpvis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14150,14 +15514,9 @@ drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14271,10 +15630,12 @@ drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h
-drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtras.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14388,9 +15749,18 @@ drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14503,10 +15873,9 @@ drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas8.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14619,12 +15988,9 @@ drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
- ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
- ../include/dcmtk/dcmrt/seq/drtshds.h
-drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbls.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14738,8 +16104,8 @@ drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpvis.h \
+drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14853,8 +16219,8 @@ drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtqds.h \
+drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos6.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14967,13 +16333,9 @@ drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos7.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15086,19 +16448,9 @@ drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15211,9 +16563,10 @@ drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h
+drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs4.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15326,9 +16679,10 @@ drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbls.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h
+drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs8.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15441,9 +16795,10 @@ drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbos1.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h
+drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrcdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15557,8 +16912,8 @@ drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbos6.h \
+drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrcos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15672,8 +17027,8 @@ drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbos7.h \
+drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15787,8 +17142,8 @@ drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
+drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15902,9 +17257,9 @@ drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h
-drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbs4.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h
+drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrdros.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16017,10 +17372,9 @@ drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h
-drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbs8.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16133,10 +17487,9 @@ drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h
-drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrcdrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16250,8 +17603,8 @@ drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrcos.h \
+drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16365,8 +17718,8 @@ drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h \
+drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16480,8 +17833,8 @@ drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrcs.h \
+drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrecs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16594,10 +17947,9 @@ drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h
-drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrdros.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrfgs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16710,9 +18062,12 @@ drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h
+drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16825,9 +18180,11 @@ drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrsts.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
+drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrics.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16940,9 +18297,11 @@ drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtsptcs.h
+drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17055,9 +18414,11 @@ drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtris.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17170,9 +18531,11 @@ drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrecs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrlsds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17286,8 +18649,8 @@ drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrfgs.h \
+drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17400,12 +18763,9 @@ drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h
-drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrfors.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17518,11 +18878,9 @@ drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
-drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrics.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss6.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17635,10 +18993,9 @@ drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss7.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17751,11 +19108,9 @@ drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17869,10 +19224,9 @@ drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrlsds.h \
+drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17985,9 +19339,11 @@ drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18100,9 +19456,10 @@ drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrms.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18215,9 +19572,14 @@ drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrmss6.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h
+drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18330,9 +19692,10 @@ drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrmss7.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrecs.h
+drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18446,8 +19809,8 @@ drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18560,10 +19923,9 @@ drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrris1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18676,11 +20038,9 @@ drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h
-drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrris6.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18793,10 +20153,9 @@ drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrris9.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18909,14 +20268,9 @@ drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h
-drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrpps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19029,10 +20383,9 @@ drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrecs.h
-drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrros.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19145,9 +20498,16 @@ drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrpps.h \
+ ../include/dcmtk/dcmrt/seq/drtrecs.h \
+ ../include/dcmtk/dcmrt/seq/drtrics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtsptcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrrros.h \
+ ../include/dcmtk/dcmrt/seq/drtspccs.h
+drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19260,9 +20620,10 @@ drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrris1.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrros.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19376,8 +20737,8 @@ drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrris6.h \
+drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19491,8 +20852,8 @@ drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrris9.h \
+drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrshs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19606,8 +20967,8 @@ drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrms.h \
+drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrtps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19720,9 +21081,13 @@ drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrros.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrfgs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h
+drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19835,17 +21200,9 @@ drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtarics.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpps.h \
- ../include/dcmtk/dcmrt/seq/drtrecs.h \
- ../include/dcmtk/dcmrt/seq/drtrics.h ../include/dcmtk/dcmrt/seq/drtrrs.h \
- ../include/dcmtk/dcmrt/seq/drtrrros.h \
- ../include/dcmtk/dcmrt/seq/drtspccs.h
-drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19958,10 +21315,9 @@ drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrros.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20075,8 +21431,8 @@ drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrs.h \
+drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20189,9 +21545,10 @@ drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrshs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20304,9 +21661,12 @@ drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20420,12 +21780,9 @@ drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrfgs.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h
-drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
+ ../include/dcmtk/dcmrt/seq/drtcis.h
+drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20539,8 +21896,8 @@ drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
+drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs6.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20654,8 +22011,8 @@ drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
+drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs7.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20769,8 +22126,8 @@ drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
+drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20883,10 +22240,9 @@ drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsns.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20999,12 +22355,9 @@ drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21117,10 +22470,9 @@ drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h
-drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrshs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21234,8 +22586,8 @@ drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrshs6.h \
+drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21349,8 +22701,8 @@ drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrshs7.h \
+drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21464,8 +22816,8 @@ drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsis.h \
+drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsts.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21578,9 +22930,10 @@ drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsns.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
+drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21693,9 +23046,11 @@ drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h
+drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs4.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21809,8 +23164,8 @@ drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsrs.h \
+drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrvis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21924,8 +23279,8 @@ drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h \
+drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrws.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22039,8 +23394,8 @@ drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsss.h \
+drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrwvms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22153,9 +23508,13 @@ drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsts.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22269,9 +23628,12 @@ drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
-drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22385,10 +23747,9 @@ drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h
-drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs4.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22501,9 +23862,10 @@ drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrvis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22617,8 +23979,8 @@ drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrws.h \
+drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtshds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22732,8 +24094,8 @@ drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22847,12 +24209,10 @@ drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtqds.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22966,12 +24326,10 @@ drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h \
+drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsns.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23084,10 +24442,9 @@ drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtsds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtspccs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23200,9 +24557,10 @@ drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtshds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23315,9 +24673,14 @@ drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23431,10 +24794,12 @@ drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtsns.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
+ ../include/dcmtk/dcmrt/seq/drtajcs.h
+drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsptcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23547,9 +24912,10 @@ drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtspccs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23662,10 +25028,9 @@ drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23779,13 +25144,9 @@ drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtss.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtssrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23898,9 +25259,10 @@ drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtssrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtecs.h
+drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -24014,7 +25376,8 @@ drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtecs.h
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drtstrct.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -24135,23 +25498,25 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
  ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
@@ -24165,19 +25530,23 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../include/dcmtk/dcmrt/seq/drtpsss.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h ../include/dcmtk/dcmrt/seq/drtrros.h \
- ../include/dcmtk/dcmrt/seq/drtarics.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtrros.h \
  ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h \
- ../include/dcmtk/dcmrt/seq/drtrics.h ../include/dcmtk/dcmrt/seq/drtrrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrics.h \
+ ../include/dcmtk/dcmrt/seq/drtsptcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrrs.h \
  ../include/dcmtk/dcmrt/seq/drtrrros.h \
  ../include/dcmtk/dcmrt/seq/drtspccs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
@@ -24186,15 +25555,20 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
+ ../include/dcmtk/dcmrt/seq/drtras.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h \
- ../include/dcmtk/dcmrt/seq/drtssrs.h ../include/dcmtk/dcmrt/seq/drtdcs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtssrs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h
 drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttms0.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -24545,24 +25919,27 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
  ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfgss.h \
  ../include/dcmtk/dcmrt/seq/drtfsss.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
  ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
@@ -24575,8 +25952,11 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
@@ -24586,17 +25966,22 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h \
  ../include/dcmtk/dcmrt/seq/drtrtrs4.h \
  ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
  ../include/dcmtk/dcmrt/seq/drttscds.h \
- ../include/dcmtk/dcmrt/seq/drttsmds.h
+ ../include/dcmtk/dcmrt/seq/drttsmds.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h
 drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttscds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -24829,12 +26214,15 @@ drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtas7.h \
  ../include/dcmtk/dcmrt/seq/drtbldls.h \
+ ../include/dcmtk/dcmrt/seq/drtdddps.h \
  ../include/dcmtk/dcmrt/seq/drtgas.h \
  ../include/dcmtk/dcmrt/seq/drticpds.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
  ../include/dcmtk/dcmrt/seq/drtcpas.h \
  ../include/dcmtk/dcmrt/seq/drtiwps.h \
  ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtrmss7.h \
  ../include/dcmtk/dcmrt/seq/drtrshs7.h \
  ../include/dcmtk/dcmrt/seq/drtrbls.h \
@@ -25192,6 +26580,121 @@ drttypes.o: drttypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtudis.o: drtudis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtvls.o: drtvls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtvls.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
diff --git a/dcmrt/libsrc/Makefile.in b/dcmrt/libsrc/Makefile.in
index 30c5409..56cf836 100644
--- a/dcmrt/libsrc/Makefile.in
+++ b/dcmrt/libsrc/Makefile.in
@@ -23,35 +23,38 @@ LOCALDEFS =
 
 objs = drtdose.o drtimage.o drtplan.o drtstrct.o drttreat.o drtionpl.o drtiontr.o \
 	drmdose.o drmimage.o drmplan.o drmstrct.o drttypes.o \
-	drtaadcs.o drtadcs.o drtads.o drtafs.o drtags.o drtajcs.o drtarics.o \
-	drtas1.o drtas5.o drtas6.o drtas7.o drtass.o drtbads.o drtbas.o \
-	drtbcps.o drtbl2.o drtbl5.o drtbldls.o drtbldps.o drtblds1.o drtblds5.o \
-	drtblds6.o drtbldts.o drtbrcss.o drtbrdrs.o drtbrs.o drtbs.o drtbss.o \
-	drtbvcps.o drtcbars.o drtccs.o drtcctus.o drtcdrs.o drtces.o drtchs.o \
+	drtaadcs.o drtadcs.o drtads.o drtafs.o drtags.o drtajcs.o drtas1.o \
+	drtas5.o drtas6.o drtas7.o drtass.o drtbads.o drtbas.o drtbcps.o \
+	drtbl2.o drtbl5.o drtbldls.o drtbldps.o drtblds1.o drtblds5.o drtblds6.o \
+	drtbldts.o drtbrcss.o drtbrdrs.o drtbrs.o drtbs.o drtbss.o drtbvcps.o \
+	drtcbars.o drtccs.o drtcctus.o drtcdrs.o drtces.o drtcgis.o drtchs.o \
 	drtcims.o drtcis.o drtcncs.o drtcos.o drtcpas.o drtcpis.o drtcps.o \
-	drtcsas.o drtcs.o drtcshs.o drtcsis.o drtcss.o drtdcs.o drtdias.o \
-	drtdimcs.o drtdimrs.o drtdirs.o drtdrs.o drtds.o drtdspcs.o drtdss.o \
-	drtdvhs.o drtdvrrs.o drteas.o drtecs.o drtes.o drtfds.o drtfes.o drtfgs.o \
-	drtfgss.o drtfms.o drtfsss.o drtgas.o drthsdrs.o drtiais.o drtians.o \
-	drtiblds.o drtibls.o drtibs.o drticpds.o drticps.o drtics.o drtiis.o \
-	drtipiqs.o drtircs.o drtiseis.o drtitts.o drtiwps.o drtiws.o drtlsds6.o \
-	drtlsds7.o drtlsds.o drtmacds.o drtmas.o drtmdrs.o drtmls.o drtmps.o \
-	drtmss.o drtmucs.o drtoas.o drtois.o drtopis.o drtos.o drtpbcs.o drtpcs.o \
-	drtpcxs.o drtpdecs.o drtpfms.o drtpics.o drtporcs.o drtporis.o drtppcs.o \
-	drtprsis.o drtpscs.o drtpsics.o drtpss.o drtpsss.o drtpvis.o drtqds.o \
-	drtras.o drtrbas2.o drtrbas8.o drtrbls.o drtrbos1.o drtrbos6.o drtrbos7.o \
-	drtrbs2.o drtrbs4.o drtrbs8.o drtrcdrs.o drtrcos.o drtrcps.o drtrcs.o \
-	drtrdros.o drtrdrs1.o drtrdrs6.o drtrdrs8.o drtrds.o drtrecs.o drtrfgs.o \
-	drtrfors.o drtrics.o drtrims.o drtris.o drtrlsds.o drtrmdrs.o drtrms.o \
-	drtrmss6.o drtrmss7.o drtrpcs.o drtrpis.o drtrppcs.o drtrpphs.o drtrpps.o \
-	drtrppss.o drtrps.o drtrris1.o drtrris6.o drtrris9.o drtrrms.o drtrros.o \
-	drtrrpcs.o drtrrros.o drtrrs.o drtrrshs.o drtrrtps3.o drtrrtps4.o \
-	drtrrtps5.o drtrrtps.o drtrscs.o drtrsers.o drtrses.o drtrshs6.o \
-	drtrshs7.o drtrshs.o drtrsis.o drtrsns.o drtrsos.o drtrsrs.o drtrss.o \
-	drtrsss.o drtrsts.o drtrtrs2.o drtrtrs4.o drtrvis.o drtrws.o drtrwvms.o \
-	drtscris.o drtsdcs.o drtsds.o drtshds.o drtsis.o drtsns.o drtspccs.o \
-	drtspcs.o drtss.o drtssrs.o drttms0.o drttms9.o drttscds.o drttsibs.o \
-	drttsmds.o drttts.o drtvls.o drtwps.o drtwrs.o drtwrsrs.o drtws.o drtxrs.o
+	drtcsas.o drtcs.o drtcshs.o drtcsis.o drtcss.o drtdcs.o drtdddps.o \
+	drtddps.o drtdias.o drtdimcs.o drtdimrs.o drtdirs.o drtdrs.o drtds.o \
+	drtdspcs.o drtdss.o  drtdvhs.o drtdvrrs.o drteas.o drtecs.o drtes.o \
+	drtfds.o drtfes.o drtfgs.o  drtfgss.o drtfms.o drtfsss.o drtgas.o \
+	drtgpis.o drthsdrs.o drtiais.o drtians.o  drtiblds.o drtibls.o drtibs.o \
+	drticpds.o drticps.o drtics.o drtiis.o  drtipiqs.o drtircs.o drtiseis.o \
+	drtitts.o drtiwps.o drtiws.o drtlsds6.o  drtlsds7.o drtlsds.o drtmacds.o \
+	drtmas.o drtmdrs.o drtmls.o drtmps.o drtmris.o  drtmss.o drtmucs.o \
+	drtoas.o drtois.o drtopis.o drtos.o drtpbcs.o drtpcs.o  drtpcxs.o \
+	drtpdecs.o drtpdeds.o drtpfms.o drtpics.o drtporcs.o drtporis.o \
+	drtppcs.o drtprsis.o drtpscs.o drtpsics.o drtpss.o drtpsss.o drtpvis.o \
+	drtqds.o drtras.o drtrbas2.o drtrbas8.o drtrbls.o drtrbos1.o drtrbos6.o \
+	drtrbos7.o drtrbs2.o drtrbs4.o drtrbs8.o drtrcdrs.o drtrcos.o drtrcps.o \
+	drtrcs.o  drtrdros.o drtrdrs1.o drtrdrs6.o drtrdrs8.o drtrds.o drtrecs.o \
+	drtrfgs.o drtrfors.o drtrics.o drtrims.o drtris.o drtrlsds.o drtrmdrs.o \
+	drtrms.o drtrmss6.o drtrmss7.o drtrpcs.o drtrpis.o drtrppcs.o drtrpphs.o \
+	drtrpps.o drtrppss.o drtrps.o drtrris1.o drtrris6.o drtrris9.o drtrrms.o \
+	drtrros.o drtrrpcs.o drtrrros.o drtrrs.o drtrrshs.o drtrrtps3.o \
+	drtrrtps4.o drtrrtps5.o drtrrtps.o drtrscs.o drtrsers.o drtrses.o \
+	drtrshs6.o drtrshs7.o drtrshs.o drtrsis.o drtrsns.o drtrsos.o drtrsrs.o \
+	drtrss.o drtrsss.o drtrsts.o drtrtrs2.o drtrtrs4.o drtrvis.o drtrws.o \
+	drtrwvms.o drtscris.o drtscs.o drtsdcs.o drtsds.o drtshds.o drtsins.o \
+	drtsis.o drtsns.o drtspccs.o drtspcs.o drtspgis.o drtsptcs.o drtss.o \
+	drtssrcs.o drtssrs.o drtsss.o drttms0.o drttms9.o drttscds.o drttsibs.o \
+	drttsmds.o drttts.o drtudis.o drtvls.o drtwps.o drtwrs.o drtwrsrs.o \
+	drtws.o drtxrs.o
 
 library = libdcmrt.$(LIBEXT)
 
diff --git a/dcmrt/libsrc/drmimage.cc b/dcmrt/libsrc/drmimage.cc
index 4387f56..4a2f733 100644
--- a/dcmrt/libsrc/drmimage.cc
+++ b/dcmrt/libsrc/drmimage.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012, OFFIS e.V.
+ *  Copyright (C) 2012-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -102,5 +102,5 @@ OFCondition DRTImage::getOutputData(OFVector<Uint8>& result, const unsigned long
     const unsigned long size = image_->getOutputDataSize(bits);
     result.resize(size);
 
-    return statusToCondition(image_->getOutputData(&result[0], result.size(), bits, frame));
+    return statusToCondition(image_->getOutputData(&result[0], size, bits, frame));
 }
diff --git a/dcmrt/libsrc/drtaadcs.cc b/dcmrt/libsrc/drtaadcs.cc
index c25a13a..f3bb584 100644
--- a/dcmrt/libsrc/drtaadcs.cc
+++ b/dcmrt/libsrc/drtaadcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningAgencyOrDepartmentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTAssigningAgencyOrDepartmentCodeSequence::Item::Item(const OFBool emptyDefault
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTAssigningAgencyOrDepartmentCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartment
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTAssigningAgencyOrDepartmentCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTAssigningAgencyOrDepartmentCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::read(DcmItem &item
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::write(DcmItem &ite
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getMappingResource
 }
 
 
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setMappingResource
 }
 
 
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTAssigningAgencyOrDepartmentCodeSequence::isValid() const
 }
 
 
-unsigned long DRTAssigningAgencyOrDepartmentCodeSequence::getNumberOfItems() const
+size_t DRTAssigningAgencyOrDepartmentCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepa
 }
 
 
-OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::getItem(const unsigned l
 }
 
 
-DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartmentCodeSequence::getItem(const unsigned long num)
+DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartmentCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartment
 }
 
 
-const DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartmentCodeSequence::getItem(const unsigned long num) const
+const DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartmentCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepa
 }
 
 
-DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartmentCodeSequence::operator[](const unsigned long num)
+DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartmentCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartmentCodeSequence::operator[](const unsigned long num) const
+const DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartmentCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::insertItem(const unsigne
 }
 
 
-OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtadcs.cc b/dcmrt/libsrc/drtadcs.cc
index a350a8e..219c58b 100644
--- a/dcmrt/libsrc/drtadcs.cc
+++ b/dcmrt/libsrc/drtadcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAdmittingDiagnosesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTAdmittingDiagnosesCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTAdmittingDiagnosesCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::Item
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTAdmittingDiagnosesCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTAdmittingDiagnosesCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AdmittingDiagnosesCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AdmittingDiagnosesCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AdmittingDiagnosesCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AdmittingDiagnosesCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setMappingResource(const OF
 }
 
 
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTAdmittingDiagnosesCodeSequence::isValid() const
 }
 
 
-unsigned long DRTAdmittingDiagnosesCodeSequence::getNumberOfItems() const
+size_t DRTAdmittingDiagnosesCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTAdmittingDiagnosesCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTAdmittingDiagnosesCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTAdmittingDiagnosesCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTAdmittingDiagnosesCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTAdmittingDiagnosesCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTAdmittingDiagnosesCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence
 }
 
 
-OFCondition DRTAdmittingDiagnosesCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTAdmittingDiagnosesCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::getItem(const unsigned long num,
 }
 
 
-DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::getItem(const unsigned long num)
+DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::getI
 }
 
 
-const DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::getItem(const unsigned long num) const
+const DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence
 }
 
 
-DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::operator[](const unsigned long num)
+DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::operator[](const unsigned long num) const
+const DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTAdmittingDiagnosesCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTAdmittingDiagnosesCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::insertItem(const unsigned long po
 }
 
 
-OFCondition DRTAdmittingDiagnosesCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTAdmittingDiagnosesCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtads.cc b/dcmrt/libsrc/drtads.cc
index b5f23b8..bf61797 100644
--- a/dcmrt/libsrc/drtads.cc
+++ b/dcmrt/libsrc/drtads.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAdditionalDrugSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTAdditionalDrugSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTAdditionalDrugSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::Item::operator=(cons
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTAdditionalDrugSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTAdditionalDrugSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTAdditionalDrugSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AdditionalDrugSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AdditionalDrugSequence");
@@ -186,6 +192,7 @@ OFCondition DRTAdditionalDrugSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AdditionalDrugSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AdditionalDrugSequence");
@@ -303,6 +310,15 @@ OFCondition DRTAdditionalDrugSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTAdditionalDrugSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTAdditionalDrugSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTAdditionalDrugSequence::Item::setMappingResource(const OFString &
 }
 
 
+OFCondition DRTAdditionalDrugSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAdditionalDrugSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTAdditionalDrugSequence::isValid() const
 }
 
 
-unsigned long DRTAdditionalDrugSequence::getNumberOfItems() const
+size_t DRTAdditionalDrugSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTAdditionalDrugSequence::gotoNextItem()
 }
 
 
-OFCondition DRTAdditionalDrugSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTAdditionalDrugSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTAdditionalDrugSequence::gotoItem(const unsigned long num, OFListI
 }
 
 
-OFCondition DRTAdditionalDrugSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTAdditionalDrugSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTAdditionalDrugSequence::gotoItem(const unsigned long num, OFListC
 }
 
 
-OFCondition DRTAdditionalDrugSequence::gotoItem(const unsigned long num)
+OFCondition DRTAdditionalDrugSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::getCurrentItem
 }
 
 
-OFCondition DRTAdditionalDrugSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTAdditionalDrugSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTAdditionalDrugSequence::getItem(const unsigned long num, Item *&i
 }
 
 
-DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::getItem(const unsigned long num)
+DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::getItem(const unsign
 }
 
 
-const DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::getItem(const unsigned long num) const
+const DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::getItem(const
 }
 
 
-DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::operator[](const unsigned long num)
+DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::operator[](const unsigned long num) const
+const DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTAdditionalDrugSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTAdditionalDrugSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTAdditionalDrugSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTAdditionalDrugSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTAdditionalDrugSequence::removeItem(const unsigned long pos)
+OFCondition DRTAdditionalDrugSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtafs.cc b/dcmrt/libsrc/drtafs.cc
index 86fa43f..62f097a 100644
--- a/dcmrt/libsrc/drtafs.cc
+++ b/dcmrt/libsrc/drtafs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningFacilitySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -280,7 +280,7 @@ OFBool DRTAssigningFacilitySequence::isValid() const
 }
 
 
-unsigned long DRTAssigningFacilitySequence::getNumberOfItems() const
+size_t DRTAssigningFacilitySequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -310,12 +310,12 @@ OFCondition DRTAssigningFacilitySequence::gotoNextItem()
 }
 
 
-OFCondition DRTAssigningFacilitySequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTAssigningFacilitySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,12 +330,12 @@ OFCondition DRTAssigningFacilitySequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTAssigningFacilitySequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTAssigningFacilitySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -350,7 +350,7 @@ OFCondition DRTAssigningFacilitySequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTAssigningFacilitySequence::gotoItem(const unsigned long num)
+OFCondition DRTAssigningFacilitySequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -386,7 +386,7 @@ const DRTAssigningFacilitySequence::Item &DRTAssigningFacilitySequence::getCurre
 }
 
 
-OFCondition DRTAssigningFacilitySequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTAssigningFacilitySequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -396,7 +396,7 @@ OFCondition DRTAssigningFacilitySequence::getItem(const unsigned long num, Item
 }
 
 
-DRTAssigningFacilitySequence::Item &DRTAssigningFacilitySequence::getItem(const unsigned long num)
+DRTAssigningFacilitySequence::Item &DRTAssigningFacilitySequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -406,7 +406,7 @@ DRTAssigningFacilitySequence::Item &DRTAssigningFacilitySequence::getItem(const
 }
 
 
-const DRTAssigningFacilitySequence::Item &DRTAssigningFacilitySequence::getItem(const unsigned long num) const
+const DRTAssigningFacilitySequence::Item &DRTAssigningFacilitySequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -416,13 +416,13 @@ const DRTAssigningFacilitySequence::Item &DRTAssigningFacilitySequence::getItem(
 }
 
 
-DRTAssigningFacilitySequence::Item &DRTAssigningFacilitySequence::operator[](const unsigned long num)
+DRTAssigningFacilitySequence::Item &DRTAssigningFacilitySequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTAssigningFacilitySequence::Item &DRTAssigningFacilitySequence::operator[](const unsigned long num) const
+const DRTAssigningFacilitySequence::Item &DRTAssigningFacilitySequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -445,7 +445,7 @@ OFCondition DRTAssigningFacilitySequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTAssigningFacilitySequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTAssigningFacilitySequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -468,7 +468,7 @@ OFCondition DRTAssigningFacilitySequence::insertItem(const unsigned long pos, It
 }
 
 
-OFCondition DRTAssigningFacilitySequence::removeItem(const unsigned long pos)
+OFCondition DRTAssigningFacilitySequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtags.cc b/dcmrt/libsrc/drtags.cc
index d84ca15..433089e 100644
--- a/dcmrt/libsrc/drtags.cc
+++ b/dcmrt/libsrc/drtags.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorGeometrySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -297,7 +297,7 @@ OFBool DRTApplicatorGeometrySequence::isValid() const
 }
 
 
-unsigned long DRTApplicatorGeometrySequence::getNumberOfItems() const
+size_t DRTApplicatorGeometrySequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -327,12 +327,12 @@ OFCondition DRTApplicatorGeometrySequence::gotoNextItem()
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTApplicatorGeometrySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -347,12 +347,12 @@ OFCondition DRTApplicatorGeometrySequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTApplicatorGeometrySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -367,7 +367,7 @@ OFCondition DRTApplicatorGeometrySequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::gotoItem(const unsigned long num)
+OFCondition DRTApplicatorGeometrySequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -403,7 +403,7 @@ const DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getCur
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTApplicatorGeometrySequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -413,7 +413,7 @@ OFCondition DRTApplicatorGeometrySequence::getItem(const unsigned long num, Item
 }
 
 
-DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getItem(const unsigned long num)
+DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -423,7 +423,7 @@ DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getItem(cons
 }
 
 
-const DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getItem(const unsigned long num) const
+const DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -433,13 +433,13 @@ const DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getIte
 }
 
 
-DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::operator[](const unsigned long num)
+DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::operator[](const unsigned long num) const
+const DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -462,7 +462,7 @@ OFCondition DRTApplicatorGeometrySequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTApplicatorGeometrySequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -485,7 +485,7 @@ OFCondition DRTApplicatorGeometrySequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::removeItem(const unsigned long pos)
+OFCondition DRTApplicatorGeometrySequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtajcs.cc b/dcmrt/libsrc/drtajcs.cc
index 17a0ff6..2081efb 100644
--- a/dcmrt/libsrc/drtajcs.cc
+++ b/dcmrt/libsrc/drtajcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningJurisdictionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTAssigningJurisdictionCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTAssigningJurisdictionCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTAssigningJurisdictionCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTAssigningJurisdictionCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AssigningJurisdictionCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AssigningJurisdictionCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AssigningJurisdictionCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AssigningJurisdictionCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::getMappingResource(OFStr
 }
 
 
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTAssigningJurisdictionCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::setMappingResource(const
 }
 
 
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAssigningJurisdictionCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTAssigningJurisdictionCodeSequence::isValid() const
 }
 
 
-unsigned long DRTAssigningJurisdictionCodeSequence::getNumberOfItems() const
+size_t DRTAssigningJurisdictionCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTAssigningJurisdictionCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTAssigningJurisdictionCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTAssigningJurisdictionCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTAssigningJurisdictionCodeSequence::gotoItem(const unsigned long n
 }
 
 
-OFCondition DRTAssigningJurisdictionCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTAssigningJurisdictionCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTAssigningJurisdictionCodeSequence::gotoItem(const unsigned long n
 }
 
 
-OFCondition DRTAssigningJurisdictionCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTAssigningJurisdictionCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSe
 }
 
 
-OFCondition DRTAssigningJurisdictionCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTAssigningJurisdictionCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTAssigningJurisdictionCodeSequence::getItem(const unsigned long nu
 }
 
 
-DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence::getItem(const unsigned long num)
+DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence
 }
 
 
-const DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence::getItem(const unsigned long num) const
+const DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSe
 }
 
 
-DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence::operator[](const unsigned long num)
+DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence::operator[](const unsigned long num) const
+const DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTAssigningJurisdictionCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTAssigningJurisdictionCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTAssigningJurisdictionCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTAssigningJurisdictionCodeSequence::insertItem(const unsigned long
 }
 
 
-OFCondition DRTAssigningJurisdictionCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTAssigningJurisdictionCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtas1.cc b/dcmrt/libsrc/drtas1.cc
index 4c06a73..2aa8fec 100644
--- a/dcmrt/libsrc/drtas1.cc
+++ b/dcmrt/libsrc/drtas1.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -341,7 +341,7 @@ OFBool DRTApplicatorSequenceInRTBeamsModule::isValid() const
 }
 
 
-unsigned long DRTApplicatorSequenceInRTBeamsModule::getNumberOfItems() const
+size_t DRTApplicatorSequenceInRTBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -371,12 +371,12 @@ OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -391,12 +391,12 @@ OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoItem(const unsigned long n
 }
 
 
-OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -411,7 +411,7 @@ OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoItem(const unsigned long n
 }
 
 
-OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -447,7 +447,7 @@ const DRTApplicatorSequenceInRTBeamsModule::Item &DRTApplicatorSequenceInRTBeams
 }
 
 
-OFCondition DRTApplicatorSequenceInRTBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTApplicatorSequenceInRTBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -457,7 +457,7 @@ OFCondition DRTApplicatorSequenceInRTBeamsModule::getItem(const unsigned long nu
 }
 
 
-DRTApplicatorSequenceInRTBeamsModule::Item &DRTApplicatorSequenceInRTBeamsModule::getItem(const unsigned long num)
+DRTApplicatorSequenceInRTBeamsModule::Item &DRTApplicatorSequenceInRTBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -467,7 +467,7 @@ DRTApplicatorSequenceInRTBeamsModule::Item &DRTApplicatorSequenceInRTBeamsModule
 }
 
 
-const DRTApplicatorSequenceInRTBeamsModule::Item &DRTApplicatorSequenceInRTBeamsModule::getItem(const unsigned long num) const
+const DRTApplicatorSequenceInRTBeamsModule::Item &DRTApplicatorSequenceInRTBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -477,13 +477,13 @@ const DRTApplicatorSequenceInRTBeamsModule::Item &DRTApplicatorSequenceInRTBeams
 }
 
 
-DRTApplicatorSequenceInRTBeamsModule::Item &DRTApplicatorSequenceInRTBeamsModule::operator[](const unsigned long num)
+DRTApplicatorSequenceInRTBeamsModule::Item &DRTApplicatorSequenceInRTBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTApplicatorSequenceInRTBeamsModule::Item &DRTApplicatorSequenceInRTBeamsModule::operator[](const unsigned long num) const
+const DRTApplicatorSequenceInRTBeamsModule::Item &DRTApplicatorSequenceInRTBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -506,7 +506,7 @@ OFCondition DRTApplicatorSequenceInRTBeamsModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTApplicatorSequenceInRTBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTApplicatorSequenceInRTBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -529,7 +529,7 @@ OFCondition DRTApplicatorSequenceInRTBeamsModule::insertItem(const unsigned long
 }
 
 
-OFCondition DRTApplicatorSequenceInRTBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTApplicatorSequenceInRTBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtas5.cc b/dcmrt/libsrc/drtas5.cc
index 9f4901a..9735968 100644
--- a/dcmrt/libsrc/drtas5.cc
+++ b/dcmrt/libsrc/drtas5.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -341,7 +341,7 @@ OFBool DRTApplicatorSequenceInRTImageModule::isValid() const
 }
 
 
-unsigned long DRTApplicatorSequenceInRTImageModule::getNumberOfItems() const
+size_t DRTApplicatorSequenceInRTImageModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -371,12 +371,12 @@ OFCondition DRTApplicatorSequenceInRTImageModule::gotoNextItem()
 }
 
 
-OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -391,12 +391,12 @@ OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const unsigned long n
 }
 
 
-OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -411,7 +411,7 @@ OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const unsigned long n
 }
 
 
-OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const unsigned long num)
+OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -447,7 +447,7 @@ const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImage
 }
 
 
-OFCondition DRTApplicatorSequenceInRTImageModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTApplicatorSequenceInRTImageModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -457,7 +457,7 @@ OFCondition DRTApplicatorSequenceInRTImageModule::getItem(const unsigned long nu
 }
 
 
-DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const unsigned long num)
+DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -467,7 +467,7 @@ DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule
 }
 
 
-const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const unsigned long num) const
+const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -477,13 +477,13 @@ const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImage
 }
 
 
-DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const unsigned long num)
+DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const unsigned long num) const
+const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -506,7 +506,7 @@ OFCondition DRTApplicatorSequenceInRTImageModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTApplicatorSequenceInRTImageModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTApplicatorSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -529,7 +529,7 @@ OFCondition DRTApplicatorSequenceInRTImageModule::insertItem(const unsigned long
 }
 
 
-OFCondition DRTApplicatorSequenceInRTImageModule::removeItem(const unsigned long pos)
+OFCondition DRTApplicatorSequenceInRTImageModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtas6.cc b/dcmrt/libsrc/drtas6.cc
index 304bd0a..aa84ae0 100644
--- a/dcmrt/libsrc/drtas6.cc
+++ b/dcmrt/libsrc/drtas6.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -309,7 +309,7 @@ OFBool DRTApplicatorSequenceInRTIonBeamsModule::isValid() const
 }
 
 
-unsigned long DRTApplicatorSequenceInRTIonBeamsModule::getNumberOfItems() const
+size_t DRTApplicatorSequenceInRTIonBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -339,12 +339,12 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -359,12 +359,12 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const unsigned lon
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -379,7 +379,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const unsigned lon
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -415,7 +415,7 @@ const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIo
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -425,7 +425,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getItem(const unsigned long
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const unsigned long num)
+DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -435,7 +435,7 @@ DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeams
 }
 
 
-const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const unsigned long num) const
+const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -445,13 +445,13 @@ const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIo
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const unsigned long num)
+DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const unsigned long num) const
+const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -474,7 +474,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -497,7 +497,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::insertItem(const unsigned l
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtas7.cc b/dcmrt/libsrc/drtas7.cc
index 1abdea1..e2ede8f 100644
--- a/dcmrt/libsrc/drtas7.cc
+++ b/dcmrt/libsrc/drtas7.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -309,7 +309,7 @@ OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::isValid() const
 }
 
 
-unsigned long DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
+size_t DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -339,12 +339,12 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -359,12 +359,12 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -379,7 +379,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num)
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -415,7 +415,7 @@ const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorS
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -425,7 +425,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num)
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -435,7 +435,7 @@ DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenc
 }
 
 
-const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num) const
+const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -445,13 +445,13 @@ const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorS
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const unsigned long num)
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const unsigned long num) const
+const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -474,7 +474,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::addItem(Item *
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -497,7 +497,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::insertItem(con
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::removeItem(const unsigned long pos)
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtass.cc b/dcmrt/libsrc/drtass.cc
index 5578b57..493ed38 100644
--- a/dcmrt/libsrc/drtass.cc
+++ b/dcmrt/libsrc/drtass.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicationSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -473,7 +473,7 @@ OFBool DRTApplicationSetupSequence::isValid() const
 }
 
 
-unsigned long DRTApplicationSetupSequence::getNumberOfItems() const
+size_t DRTApplicationSetupSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -503,12 +503,12 @@ OFCondition DRTApplicationSetupSequence::gotoNextItem()
 }
 
 
-OFCondition DRTApplicationSetupSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTApplicationSetupSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -523,12 +523,12 @@ OFCondition DRTApplicationSetupSequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTApplicationSetupSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTApplicationSetupSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -543,7 +543,7 @@ OFCondition DRTApplicationSetupSequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTApplicationSetupSequence::gotoItem(const unsigned long num)
+OFCondition DRTApplicationSetupSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -579,7 +579,7 @@ const DRTApplicationSetupSequence::Item &DRTApplicationSetupSequence::getCurrent
 }
 
 
-OFCondition DRTApplicationSetupSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTApplicationSetupSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -589,7 +589,7 @@ OFCondition DRTApplicationSetupSequence::getItem(const unsigned long num, Item *
 }
 
 
-DRTApplicationSetupSequence::Item &DRTApplicationSetupSequence::getItem(const unsigned long num)
+DRTApplicationSetupSequence::Item &DRTApplicationSetupSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -599,7 +599,7 @@ DRTApplicationSetupSequence::Item &DRTApplicationSetupSequence::getItem(const un
 }
 
 
-const DRTApplicationSetupSequence::Item &DRTApplicationSetupSequence::getItem(const unsigned long num) const
+const DRTApplicationSetupSequence::Item &DRTApplicationSetupSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -609,13 +609,13 @@ const DRTApplicationSetupSequence::Item &DRTApplicationSetupSequence::getItem(co
 }
 
 
-DRTApplicationSetupSequence::Item &DRTApplicationSetupSequence::operator[](const unsigned long num)
+DRTApplicationSetupSequence::Item &DRTApplicationSetupSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTApplicationSetupSequence::Item &DRTApplicationSetupSequence::operator[](const unsigned long num) const
+const DRTApplicationSetupSequence::Item &DRTApplicationSetupSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -638,7 +638,7 @@ OFCondition DRTApplicationSetupSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTApplicationSetupSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTApplicationSetupSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -661,7 +661,7 @@ OFCondition DRTApplicationSetupSequence::insertItem(const unsigned long pos, Ite
 }
 
 
-OFCondition DRTApplicationSetupSequence::removeItem(const unsigned long pos)
+OFCondition DRTApplicationSetupSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbads.cc b/dcmrt/libsrc/drtbads.cc
index 55e4dee..2e8f893 100644
--- a/dcmrt/libsrc/drtbads.cc
+++ b/dcmrt/libsrc/drtbads.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyAccessoryDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -461,7 +461,7 @@ OFBool DRTBrachyAccessoryDeviceSequence::isValid() const
 }
 
 
-unsigned long DRTBrachyAccessoryDeviceSequence::getNumberOfItems() const
+size_t DRTBrachyAccessoryDeviceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -491,12 +491,12 @@ OFCondition DRTBrachyAccessoryDeviceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTBrachyAccessoryDeviceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBrachyAccessoryDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -511,12 +511,12 @@ OFCondition DRTBrachyAccessoryDeviceSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTBrachyAccessoryDeviceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBrachyAccessoryDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -531,7 +531,7 @@ OFCondition DRTBrachyAccessoryDeviceSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTBrachyAccessoryDeviceSequence::gotoItem(const unsigned long num)
+OFCondition DRTBrachyAccessoryDeviceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -567,7 +567,7 @@ const DRTBrachyAccessoryDeviceSequence::Item &DRTBrachyAccessoryDeviceSequence::
 }
 
 
-OFCondition DRTBrachyAccessoryDeviceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBrachyAccessoryDeviceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -577,7 +577,7 @@ OFCondition DRTBrachyAccessoryDeviceSequence::getItem(const unsigned long num, I
 }
 
 
-DRTBrachyAccessoryDeviceSequence::Item &DRTBrachyAccessoryDeviceSequence::getItem(const unsigned long num)
+DRTBrachyAccessoryDeviceSequence::Item &DRTBrachyAccessoryDeviceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -587,7 +587,7 @@ DRTBrachyAccessoryDeviceSequence::Item &DRTBrachyAccessoryDeviceSequence::getIte
 }
 
 
-const DRTBrachyAccessoryDeviceSequence::Item &DRTBrachyAccessoryDeviceSequence::getItem(const unsigned long num) const
+const DRTBrachyAccessoryDeviceSequence::Item &DRTBrachyAccessoryDeviceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -597,13 +597,13 @@ const DRTBrachyAccessoryDeviceSequence::Item &DRTBrachyAccessoryDeviceSequence::
 }
 
 
-DRTBrachyAccessoryDeviceSequence::Item &DRTBrachyAccessoryDeviceSequence::operator[](const unsigned long num)
+DRTBrachyAccessoryDeviceSequence::Item &DRTBrachyAccessoryDeviceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBrachyAccessoryDeviceSequence::Item &DRTBrachyAccessoryDeviceSequence::operator[](const unsigned long num) const
+const DRTBrachyAccessoryDeviceSequence::Item &DRTBrachyAccessoryDeviceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -626,7 +626,7 @@ OFCondition DRTBrachyAccessoryDeviceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTBrachyAccessoryDeviceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBrachyAccessoryDeviceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -649,7 +649,7 @@ OFCondition DRTBrachyAccessoryDeviceSequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTBrachyAccessoryDeviceSequence::removeItem(const unsigned long pos)
+OFCondition DRTBrachyAccessoryDeviceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbas.cc b/dcmrt/libsrc/drtbas.cc
index 55a7497..9a4b7f9 100644
--- a/dcmrt/libsrc/drtbas.cc
+++ b/dcmrt/libsrc/drtbas.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContrastBolusAgentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTContrastBolusAgentSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTContrastBolusAgentSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::Item::operat
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTContrastBolusAgentSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTContrastBolusAgentSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTContrastBolusAgentSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ContrastBolusAgentSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ContrastBolusAgentSequence");
@@ -186,6 +192,7 @@ OFCondition DRTContrastBolusAgentSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ContrastBolusAgentSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ContrastBolusAgentSequence");
@@ -303,6 +310,15 @@ OFCondition DRTContrastBolusAgentSequence::Item::getMappingResource(OFString &va
 }
 
 
+OFCondition DRTContrastBolusAgentSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTContrastBolusAgentSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTContrastBolusAgentSequence::Item::setMappingResource(const OFStri
 }
 
 
+OFCondition DRTContrastBolusAgentSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTContrastBolusAgentSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTContrastBolusAgentSequence::isValid() const
 }
 
 
-unsigned long DRTContrastBolusAgentSequence::getNumberOfItems() const
+size_t DRTContrastBolusAgentSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTContrastBolusAgentSequence::gotoNextItem()
 }
 
 
-OFCondition DRTContrastBolusAgentSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTContrastBolusAgentSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTContrastBolusAgentSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTContrastBolusAgentSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTContrastBolusAgentSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTContrastBolusAgentSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTContrastBolusAgentSequence::gotoItem(const unsigned long num)
+OFCondition DRTContrastBolusAgentSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::getCur
 }
 
 
-OFCondition DRTContrastBolusAgentSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTContrastBolusAgentSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTContrastBolusAgentSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::getItem(const unsigned long num)
+DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::getItem(cons
 }
 
 
-const DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::getItem(const unsigned long num) const
+const DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::getIte
 }
 
 
-DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::operator[](const unsigned long num)
+DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::operator[](const unsigned long num) const
+const DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTContrastBolusAgentSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTContrastBolusAgentSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTContrastBolusAgentSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTContrastBolusAgentSequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTContrastBolusAgentSequence::removeItem(const unsigned long pos)
+OFCondition DRTContrastBolusAgentSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbcps.cc b/dcmrt/libsrc/drtbcps.cc
index 1eac2ef..cfb8587 100644
--- a/dcmrt/libsrc/drtbcps.cc
+++ b/dcmrt/libsrc/drtbcps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -386,7 +386,7 @@ OFBool DRTBrachyControlPointSequence::isValid() const
 }
 
 
-unsigned long DRTBrachyControlPointSequence::getNumberOfItems() const
+size_t DRTBrachyControlPointSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -416,12 +416,12 @@ OFCondition DRTBrachyControlPointSequence::gotoNextItem()
 }
 
 
-OFCondition DRTBrachyControlPointSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBrachyControlPointSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -436,12 +436,12 @@ OFCondition DRTBrachyControlPointSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTBrachyControlPointSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBrachyControlPointSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -456,7 +456,7 @@ OFCondition DRTBrachyControlPointSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTBrachyControlPointSequence::gotoItem(const unsigned long num)
+OFCondition DRTBrachyControlPointSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -492,7 +492,7 @@ const DRTBrachyControlPointSequence::Item &DRTBrachyControlPointSequence::getCur
 }
 
 
-OFCondition DRTBrachyControlPointSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBrachyControlPointSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -502,7 +502,7 @@ OFCondition DRTBrachyControlPointSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTBrachyControlPointSequence::Item &DRTBrachyControlPointSequence::getItem(const unsigned long num)
+DRTBrachyControlPointSequence::Item &DRTBrachyControlPointSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -512,7 +512,7 @@ DRTBrachyControlPointSequence::Item &DRTBrachyControlPointSequence::getItem(cons
 }
 
 
-const DRTBrachyControlPointSequence::Item &DRTBrachyControlPointSequence::getItem(const unsigned long num) const
+const DRTBrachyControlPointSequence::Item &DRTBrachyControlPointSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -522,13 +522,13 @@ const DRTBrachyControlPointSequence::Item &DRTBrachyControlPointSequence::getIte
 }
 
 
-DRTBrachyControlPointSequence::Item &DRTBrachyControlPointSequence::operator[](const unsigned long num)
+DRTBrachyControlPointSequence::Item &DRTBrachyControlPointSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBrachyControlPointSequence::Item &DRTBrachyControlPointSequence::operator[](const unsigned long num) const
+const DRTBrachyControlPointSequence::Item &DRTBrachyControlPointSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -551,7 +551,7 @@ OFCondition DRTBrachyControlPointSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTBrachyControlPointSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBrachyControlPointSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -574,7 +574,7 @@ OFCondition DRTBrachyControlPointSequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTBrachyControlPointSequence::removeItem(const unsigned long pos)
+OFCondition DRTBrachyControlPointSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbl2.cc b/dcmrt/libsrc/drtbl2.cc
index f86a670..2a0827a 100644
--- a/dcmrt/libsrc/drtbl2.cc
+++ b/dcmrt/libsrc/drtbl2.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBlockSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -33,7 +33,8 @@ DRTBlockSequenceInRTBeamsModule::Item::Item(const OFBool emptyDefaultItem)
     BlockTrayID(DCM_BlockTrayID),
     BlockType(DCM_BlockType),
     MaterialID(DCM_MaterialID),
-    SourceToBlockTrayDistance(DCM_SourceToBlockTrayDistance)
+    SourceToBlockTrayDistance(DCM_SourceToBlockTrayDistance),
+    TrayAccessoryCode(DCM_TrayAccessoryCode)
 {
 }
 
@@ -52,7 +53,8 @@ DRTBlockSequenceInRTBeamsModule::Item::Item(const Item &copy)
     BlockTrayID(copy.BlockTrayID),
     BlockType(copy.BlockType),
     MaterialID(copy.MaterialID),
-    SourceToBlockTrayDistance(copy.SourceToBlockTrayDistance)
+    SourceToBlockTrayDistance(copy.SourceToBlockTrayDistance),
+    TrayAccessoryCode(copy.TrayAccessoryCode)
 {
 }
 
@@ -80,6 +82,7 @@ DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::Item::op
         BlockType = copy.BlockType;
         MaterialID = copy.MaterialID;
         SourceToBlockTrayDistance = copy.SourceToBlockTrayDistance;
+        TrayAccessoryCode = copy.TrayAccessoryCode;
     }
     return *this;
 }
@@ -91,6 +94,7 @@ void DRTBlockSequenceInRTBeamsModule::Item::clear()
     {
         /* clear all DICOM attributes */
         BlockTrayID.clear();
+        TrayAccessoryCode.clear();
         AccessoryCode.clear();
         SourceToBlockTrayDistance.clear();
         BlockType.clear();
@@ -110,6 +114,7 @@ void DRTBlockSequenceInRTBeamsModule::Item::clear()
 OFBool DRTBlockSequenceInRTBeamsModule::Item::isEmpty()
 {
     return BlockTrayID.isEmpty() &&
+           TrayAccessoryCode.isEmpty() &&
            AccessoryCode.isEmpty() &&
            SourceToBlockTrayDistance.isEmpty() &&
            BlockType.isEmpty() &&
@@ -139,6 +144,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::read(DcmItem &item)
         /* re-initialize object */
         clear();
         getAndCheckElementFromDataset(item, BlockTrayID, "1", "3", "BlockSequence");
+        getAndCheckElementFromDataset(item, TrayAccessoryCode, "1", "3", "BlockSequence");
         getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "BlockSequence");
         getAndCheckElementFromDataset(item, SourceToBlockTrayDistance, "1", "2", "BlockSequence");
         getAndCheckElementFromDataset(item, BlockType, "1", "1", "BlockSequence");
@@ -164,6 +170,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::write(DcmItem &item)
     {
         result = EC_Normal;
         addElementToDataset(result, item, new DcmShortString(BlockTrayID), "1", "3", "BlockSequence");
+        addElementToDataset(result, item, new DcmLongString(TrayAccessoryCode), "1", "3", "BlockSequence");
         addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "BlockSequence");
         addElementToDataset(result, item, new DcmDecimalString(SourceToBlockTrayDistance), "1", "2", "BlockSequence");
         addElementToDataset(result, item, new DcmCodeString(BlockType), "1", "1", "BlockSequence");
@@ -361,6 +368,15 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getSourceToBlockTrayDistance(
 }
 
 
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getTrayAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TrayAccessoryCode, value, pos);
+}
+
+
 OFCondition DRTBlockSequenceInRTBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -530,6 +546,19 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setSourceToBlockTrayDistance(
 }
 
 
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setTrayAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = TrayAccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTBlockSequenceInRTBeamsModule::DRTBlockSequenceInRTBeamsModule(const OFBool emptyDefaultSequence)
@@ -633,7 +662,7 @@ OFBool DRTBlockSequenceInRTBeamsModule::isValid() const
 }
 
 
-unsigned long DRTBlockSequenceInRTBeamsModule::getNumberOfItems() const
+size_t DRTBlockSequenceInRTBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -663,12 +692,12 @@ OFCondition DRTBlockSequenceInRTBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -683,12 +712,12 @@ OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -703,7 +732,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -739,7 +768,7 @@ const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::ge
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBlockSequenceInRTBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -749,7 +778,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::getItem(const unsigned long num, It
 }
 
 
-DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(const unsigned long num)
+DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -759,7 +788,7 @@ DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(
 }
 
 
-const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(const unsigned long num) const
+const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -769,13 +798,13 @@ const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::ge
 }
 
 
-DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::operator[](const unsigned long num)
+DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::operator[](const unsigned long num) const
+const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -798,7 +827,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBlockSequenceInRTBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -821,7 +850,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTBlockSequenceInRTBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbl5.cc b/dcmrt/libsrc/drtbl5.cc
index 806f290..49ea79e 100644
--- a/dcmrt/libsrc/drtbl5.cc
+++ b/dcmrt/libsrc/drtbl5.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBlockSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -32,7 +32,8 @@ DRTBlockSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem)
     BlockTrayID(DCM_BlockTrayID),
     BlockType(DCM_BlockType),
     MaterialID(DCM_MaterialID),
-    SourceToBlockTrayDistance(DCM_SourceToBlockTrayDistance)
+    SourceToBlockTrayDistance(DCM_SourceToBlockTrayDistance),
+    TrayAccessoryCode(DCM_TrayAccessoryCode)
 {
 }
 
@@ -50,7 +51,8 @@ DRTBlockSequenceInRTImageModule::Item::Item(const Item &copy)
     BlockTrayID(copy.BlockTrayID),
     BlockType(copy.BlockType),
     MaterialID(copy.MaterialID),
-    SourceToBlockTrayDistance(copy.SourceToBlockTrayDistance)
+    SourceToBlockTrayDistance(copy.SourceToBlockTrayDistance),
+    TrayAccessoryCode(copy.TrayAccessoryCode)
 {
 }
 
@@ -77,6 +79,7 @@ DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::Item::op
         BlockType = copy.BlockType;
         MaterialID = copy.MaterialID;
         SourceToBlockTrayDistance = copy.SourceToBlockTrayDistance;
+        TrayAccessoryCode = copy.TrayAccessoryCode;
     }
     return *this;
 }
@@ -88,6 +91,7 @@ void DRTBlockSequenceInRTImageModule::Item::clear()
     {
         /* clear all DICOM attributes */
         BlockTrayID.clear();
+        TrayAccessoryCode.clear();
         AccessoryCode.clear();
         SourceToBlockTrayDistance.clear();
         BlockType.clear();
@@ -106,6 +110,7 @@ void DRTBlockSequenceInRTImageModule::Item::clear()
 OFBool DRTBlockSequenceInRTImageModule::Item::isEmpty()
 {
     return BlockTrayID.isEmpty() &&
+           TrayAccessoryCode.isEmpty() &&
            AccessoryCode.isEmpty() &&
            SourceToBlockTrayDistance.isEmpty() &&
            BlockType.isEmpty() &&
@@ -134,6 +139,7 @@ OFCondition DRTBlockSequenceInRTImageModule::Item::read(DcmItem &item)
         /* re-initialize object */
         clear();
         getAndCheckElementFromDataset(item, BlockTrayID, "1", "3", "BlockSequence");
+        getAndCheckElementFromDataset(item, TrayAccessoryCode, "1", "3", "BlockSequence");
         getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "BlockSequence");
         getAndCheckElementFromDataset(item, SourceToBlockTrayDistance, "1", "2", "BlockSequence");
         getAndCheckElementFromDataset(item, BlockType, "1", "1", "BlockSequence");
@@ -158,6 +164,7 @@ OFCondition DRTBlockSequenceInRTImageModule::Item::write(DcmItem &item)
     {
         result = EC_Normal;
         addElementToDataset(result, item, new DcmShortString(BlockTrayID), "1", "3", "BlockSequence");
+        addElementToDataset(result, item, new DcmLongString(TrayAccessoryCode), "1", "3", "BlockSequence");
         addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "BlockSequence");
         addElementToDataset(result, item, new DcmDecimalString(SourceToBlockTrayDistance), "1", "2", "BlockSequence");
         addElementToDataset(result, item, new DcmCodeString(BlockType), "1", "1", "BlockSequence");
@@ -336,6 +343,15 @@ OFCondition DRTBlockSequenceInRTImageModule::Item::getSourceToBlockTrayDistance(
 }
 
 
+OFCondition DRTBlockSequenceInRTImageModule::Item::getTrayAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TrayAccessoryCode, value, pos);
+}
+
+
 OFCondition DRTBlockSequenceInRTImageModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -492,6 +508,19 @@ OFCondition DRTBlockSequenceInRTImageModule::Item::setSourceToBlockTrayDistance(
 }
 
 
+OFCondition DRTBlockSequenceInRTImageModule::Item::setTrayAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = TrayAccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTBlockSequenceInRTImageModule::DRTBlockSequenceInRTImageModule(const OFBool emptyDefaultSequence)
@@ -595,7 +624,7 @@ OFBool DRTBlockSequenceInRTImageModule::isValid() const
 }
 
 
-unsigned long DRTBlockSequenceInRTImageModule::getNumberOfItems() const
+size_t DRTBlockSequenceInRTImageModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -625,12 +654,12 @@ OFCondition DRTBlockSequenceInRTImageModule::gotoNextItem()
 }
 
 
-OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -645,12 +674,12 @@ OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -665,7 +694,7 @@ OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const unsigned long num)
+OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -701,7 +730,7 @@ const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::ge
 }
 
 
-OFCondition DRTBlockSequenceInRTImageModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBlockSequenceInRTImageModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -711,7 +740,7 @@ OFCondition DRTBlockSequenceInRTImageModule::getItem(const unsigned long num, It
 }
 
 
-DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getItem(const unsigned long num)
+DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -721,7 +750,7 @@ DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getItem(
 }
 
 
-const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getItem(const unsigned long num) const
+const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -731,13 +760,13 @@ const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::ge
 }
 
 
-DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::operator[](const unsigned long num)
+DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::operator[](const unsigned long num) const
+const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -760,7 +789,7 @@ OFCondition DRTBlockSequenceInRTImageModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTBlockSequenceInRTImageModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBlockSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -783,7 +812,7 @@ OFCondition DRTBlockSequenceInRTImageModule::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTBlockSequenceInRTImageModule::removeItem(const unsigned long pos)
+OFCondition DRTBlockSequenceInRTImageModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbldls.cc b/dcmrt/libsrc/drtbldls.cc
index 560165c..de92e87 100644
--- a/dcmrt/libsrc/drtbldls.cc
+++ b/dcmrt/libsrc/drtbldls.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceLeafPairsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -260,7 +260,7 @@ OFBool DRTBeamLimitingDeviceLeafPairsSequence::isValid() const
 }
 
 
-unsigned long DRTBeamLimitingDeviceLeafPairsSequence::getNumberOfItems() const
+size_t DRTBeamLimitingDeviceLeafPairsSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -290,12 +290,12 @@ OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoNextItem()
 }
 
 
-OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -310,12 +310,12 @@ OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,7 +330,7 @@ OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoItem(const unsigned long num)
+OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -366,7 +366,7 @@ const DRTBeamLimitingDeviceLeafPairsSequence::Item &DRTBeamLimitingDeviceLeafPai
 }
 
 
-OFCondition DRTBeamLimitingDeviceLeafPairsSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBeamLimitingDeviceLeafPairsSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -376,7 +376,7 @@ OFCondition DRTBeamLimitingDeviceLeafPairsSequence::getItem(const unsigned long
 }
 
 
-DRTBeamLimitingDeviceLeafPairsSequence::Item &DRTBeamLimitingDeviceLeafPairsSequence::getItem(const unsigned long num)
+DRTBeamLimitingDeviceLeafPairsSequence::Item &DRTBeamLimitingDeviceLeafPairsSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -386,7 +386,7 @@ DRTBeamLimitingDeviceLeafPairsSequence::Item &DRTBeamLimitingDeviceLeafPairsSequ
 }
 
 
-const DRTBeamLimitingDeviceLeafPairsSequence::Item &DRTBeamLimitingDeviceLeafPairsSequence::getItem(const unsigned long num) const
+const DRTBeamLimitingDeviceLeafPairsSequence::Item &DRTBeamLimitingDeviceLeafPairsSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -396,13 +396,13 @@ const DRTBeamLimitingDeviceLeafPairsSequence::Item &DRTBeamLimitingDeviceLeafPai
 }
 
 
-DRTBeamLimitingDeviceLeafPairsSequence::Item &DRTBeamLimitingDeviceLeafPairsSequence::operator[](const unsigned long num)
+DRTBeamLimitingDeviceLeafPairsSequence::Item &DRTBeamLimitingDeviceLeafPairsSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBeamLimitingDeviceLeafPairsSequence::Item &DRTBeamLimitingDeviceLeafPairsSequence::operator[](const unsigned long num) const
+const DRTBeamLimitingDeviceLeafPairsSequence::Item &DRTBeamLimitingDeviceLeafPairsSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -425,7 +425,7 @@ OFCondition DRTBeamLimitingDeviceLeafPairsSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTBeamLimitingDeviceLeafPairsSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBeamLimitingDeviceLeafPairsSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -448,7 +448,7 @@ OFCondition DRTBeamLimitingDeviceLeafPairsSequence::insertItem(const unsigned lo
 }
 
 
-OFCondition DRTBeamLimitingDeviceLeafPairsSequence::removeItem(const unsigned long pos)
+OFCondition DRTBeamLimitingDeviceLeafPairsSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbldps.cc b/dcmrt/libsrc/drtbldps.cc
index 07a8ef8..033fb9e 100644
--- a/dcmrt/libsrc/drtbldps.cc
+++ b/dcmrt/libsrc/drtbldps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDevicePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -269,7 +269,7 @@ OFBool DRTBeamLimitingDevicePositionSequence::isValid() const
 }
 
 
-unsigned long DRTBeamLimitingDevicePositionSequence::getNumberOfItems() const
+size_t DRTBeamLimitingDevicePositionSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -299,12 +299,12 @@ OFCondition DRTBeamLimitingDevicePositionSequence::gotoNextItem()
 }
 
 
-OFCondition DRTBeamLimitingDevicePositionSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBeamLimitingDevicePositionSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -319,12 +319,12 @@ OFCondition DRTBeamLimitingDevicePositionSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTBeamLimitingDevicePositionSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBeamLimitingDevicePositionSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -339,7 +339,7 @@ OFCondition DRTBeamLimitingDevicePositionSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTBeamLimitingDevicePositionSequence::gotoItem(const unsigned long num)
+OFCondition DRTBeamLimitingDevicePositionSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -375,7 +375,7 @@ const DRTBeamLimitingDevicePositionSequence::Item &DRTBeamLimitingDevicePosition
 }
 
 
-OFCondition DRTBeamLimitingDevicePositionSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBeamLimitingDevicePositionSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -385,7 +385,7 @@ OFCondition DRTBeamLimitingDevicePositionSequence::getItem(const unsigned long n
 }
 
 
-DRTBeamLimitingDevicePositionSequence::Item &DRTBeamLimitingDevicePositionSequence::getItem(const unsigned long num)
+DRTBeamLimitingDevicePositionSequence::Item &DRTBeamLimitingDevicePositionSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -395,7 +395,7 @@ DRTBeamLimitingDevicePositionSequence::Item &DRTBeamLimitingDevicePositionSequen
 }
 
 
-const DRTBeamLimitingDevicePositionSequence::Item &DRTBeamLimitingDevicePositionSequence::getItem(const unsigned long num) const
+const DRTBeamLimitingDevicePositionSequence::Item &DRTBeamLimitingDevicePositionSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -405,13 +405,13 @@ const DRTBeamLimitingDevicePositionSequence::Item &DRTBeamLimitingDevicePosition
 }
 
 
-DRTBeamLimitingDevicePositionSequence::Item &DRTBeamLimitingDevicePositionSequence::operator[](const unsigned long num)
+DRTBeamLimitingDevicePositionSequence::Item &DRTBeamLimitingDevicePositionSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBeamLimitingDevicePositionSequence::Item &DRTBeamLimitingDevicePositionSequence::operator[](const unsigned long num) const
+const DRTBeamLimitingDevicePositionSequence::Item &DRTBeamLimitingDevicePositionSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -434,7 +434,7 @@ OFCondition DRTBeamLimitingDevicePositionSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTBeamLimitingDevicePositionSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBeamLimitingDevicePositionSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -457,7 +457,7 @@ OFCondition DRTBeamLimitingDevicePositionSequence::insertItem(const unsigned lon
 }
 
 
-OFCondition DRTBeamLimitingDevicePositionSequence::removeItem(const unsigned long pos)
+OFCondition DRTBeamLimitingDevicePositionSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtblds1.cc b/dcmrt/libsrc/drtblds1.cc
index 1cef0f2..2321be3 100644
--- a/dcmrt/libsrc/drtblds1.cc
+++ b/dcmrt/libsrc/drtblds1.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -345,7 +345,7 @@ OFBool DRTBeamLimitingDeviceSequenceInRTBeamsModule::isValid() const
 }
 
 
-unsigned long DRTBeamLimitingDeviceSequenceInRTBeamsModule::getNumberOfItems() const
+size_t DRTBeamLimitingDeviceSequenceInRTBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -375,12 +375,12 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -395,12 +395,12 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoItem(const unsigne
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -415,7 +415,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoItem(const unsigne
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -451,7 +451,7 @@ const DRTBeamLimitingDeviceSequenceInRTBeamsModule::Item &DRTBeamLimitingDeviceS
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -461,7 +461,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::getItem(const unsigned
 }
 
 
-DRTBeamLimitingDeviceSequenceInRTBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTBeamsModule::getItem(const unsigned long num)
+DRTBeamLimitingDeviceSequenceInRTBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -471,7 +471,7 @@ DRTBeamLimitingDeviceSequenceInRTBeamsModule::Item &DRTBeamLimitingDeviceSequenc
 }
 
 
-const DRTBeamLimitingDeviceSequenceInRTBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTBeamsModule::getItem(const unsigned long num) const
+const DRTBeamLimitingDeviceSequenceInRTBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -481,13 +481,13 @@ const DRTBeamLimitingDeviceSequenceInRTBeamsModule::Item &DRTBeamLimitingDeviceS
 }
 
 
-DRTBeamLimitingDeviceSequenceInRTBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTBeamsModule::operator[](const unsigned long num)
+DRTBeamLimitingDeviceSequenceInRTBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBeamLimitingDeviceSequenceInRTBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTBeamsModule::operator[](const unsigned long num) const
+const DRTBeamLimitingDeviceSequenceInRTBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -510,7 +510,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -533,7 +533,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::insertItem(const unsig
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtblds5.cc b/dcmrt/libsrc/drtblds5.cc
index 714aa7b..2c00892 100644
--- a/dcmrt/libsrc/drtblds5.cc
+++ b/dcmrt/libsrc/drtblds5.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -392,7 +392,7 @@ OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::isValid() const
 }
 
 
-unsigned long DRTBeamLimitingDeviceSequenceInRTImageModule::getNumberOfItems() const
+size_t DRTBeamLimitingDeviceSequenceInRTImageModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -422,12 +422,12 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoNextItem()
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -442,12 +442,12 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const unsigne
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -462,7 +462,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const unsigne
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const unsigned long num)
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -498,7 +498,7 @@ const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceS
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -508,7 +508,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const unsigned
 }
 
 
-DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const unsigned long num)
+DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -518,7 +518,7 @@ DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenc
 }
 
 
-const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const unsigned long num) const
+const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -528,13 +528,13 @@ const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceS
 }
 
 
-DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const unsigned long num)
+DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const unsigned long num) const
+const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -557,7 +557,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -580,7 +580,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::insertItem(const unsig
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::removeItem(const unsigned long pos)
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtblds6.cc b/dcmrt/libsrc/drtblds6.cc
index b5719c4..c85c630 100644
--- a/dcmrt/libsrc/drtblds6.cc
+++ b/dcmrt/libsrc/drtblds6.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -392,7 +392,7 @@ OFBool DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::isValid() const
 }
 
 
-unsigned long DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getNumberOfItems() const
+size_t DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -422,12 +422,12 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -442,12 +442,12 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const unsi
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -462,7 +462,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const unsi
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -498,7 +498,7 @@ const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDevi
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -508,7 +508,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const unsig
 }
 
 
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const unsigned long num)
+DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -518,7 +518,7 @@ DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequ
 }
 
 
-const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const unsigned long num) const
+const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -528,13 +528,13 @@ const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDevi
 }
 
 
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::operator[](const unsigned long num)
+DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::operator[](const unsigned long num) const
+const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -557,7 +557,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::addItem(Item *&item
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -580,7 +580,7 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::insertItem(const un
 }
 
 
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbldts.cc b/dcmrt/libsrc/drtbldts.cc
index 0a5a501..d51fafe 100644
--- a/dcmrt/libsrc/drtbldts.cc
+++ b/dcmrt/libsrc/drtbldts.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceToleranceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -260,7 +260,7 @@ OFBool DRTBeamLimitingDeviceToleranceSequence::isValid() const
 }
 
 
-unsigned long DRTBeamLimitingDeviceToleranceSequence::getNumberOfItems() const
+size_t DRTBeamLimitingDeviceToleranceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -290,12 +290,12 @@ OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -310,12 +310,12 @@ OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,7 +330,7 @@ OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoItem(const unsigned long num)
+OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -366,7 +366,7 @@ const DRTBeamLimitingDeviceToleranceSequence::Item &DRTBeamLimitingDeviceToleran
 }
 
 
-OFCondition DRTBeamLimitingDeviceToleranceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBeamLimitingDeviceToleranceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -376,7 +376,7 @@ OFCondition DRTBeamLimitingDeviceToleranceSequence::getItem(const unsigned long
 }
 
 
-DRTBeamLimitingDeviceToleranceSequence::Item &DRTBeamLimitingDeviceToleranceSequence::getItem(const unsigned long num)
+DRTBeamLimitingDeviceToleranceSequence::Item &DRTBeamLimitingDeviceToleranceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -386,7 +386,7 @@ DRTBeamLimitingDeviceToleranceSequence::Item &DRTBeamLimitingDeviceToleranceSequ
 }
 
 
-const DRTBeamLimitingDeviceToleranceSequence::Item &DRTBeamLimitingDeviceToleranceSequence::getItem(const unsigned long num) const
+const DRTBeamLimitingDeviceToleranceSequence::Item &DRTBeamLimitingDeviceToleranceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -396,13 +396,13 @@ const DRTBeamLimitingDeviceToleranceSequence::Item &DRTBeamLimitingDeviceToleran
 }
 
 
-DRTBeamLimitingDeviceToleranceSequence::Item &DRTBeamLimitingDeviceToleranceSequence::operator[](const unsigned long num)
+DRTBeamLimitingDeviceToleranceSequence::Item &DRTBeamLimitingDeviceToleranceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBeamLimitingDeviceToleranceSequence::Item &DRTBeamLimitingDeviceToleranceSequence::operator[](const unsigned long num) const
+const DRTBeamLimitingDeviceToleranceSequence::Item &DRTBeamLimitingDeviceToleranceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -425,7 +425,7 @@ OFCondition DRTBeamLimitingDeviceToleranceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTBeamLimitingDeviceToleranceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBeamLimitingDeviceToleranceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -448,7 +448,7 @@ OFCondition DRTBeamLimitingDeviceToleranceSequence::insertItem(const unsigned lo
 }
 
 
-OFCondition DRTBeamLimitingDeviceToleranceSequence::removeItem(const unsigned long pos)
+OFCondition DRTBeamLimitingDeviceToleranceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbrcss.cc b/dcmrt/libsrc/drtbrcss.cc
index 2f23b0d..62260ea 100644
--- a/dcmrt/libsrc/drtbrcss.cc
+++ b/dcmrt/libsrc/drtbrcss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBreedRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTBreedRegistryCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTBreedRegistryCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::Item::operator
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTBreedRegistryCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTBreedRegistryCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTBreedRegistryCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "BreedRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "BreedRegistryCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTBreedRegistryCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "BreedRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "BreedRegistryCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTBreedRegistryCodeSequence::Item::getMappingResource(OFString &val
 }
 
 
+OFCondition DRTBreedRegistryCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTBreedRegistryCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTBreedRegistryCodeSequence::Item::setMappingResource(const OFStrin
 }
 
 
+OFCondition DRTBreedRegistryCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTBreedRegistryCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTBreedRegistryCodeSequence::isValid() const
 }
 
 
-unsigned long DRTBreedRegistryCodeSequence::getNumberOfItems() const
+size_t DRTBreedRegistryCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTBreedRegistryCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTBreedRegistryCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBreedRegistryCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTBreedRegistryCodeSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTBreedRegistryCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBreedRegistryCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTBreedRegistryCodeSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTBreedRegistryCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTBreedRegistryCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::getCurre
 }
 
 
-OFCondition DRTBreedRegistryCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBreedRegistryCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTBreedRegistryCodeSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::getItem(const unsigned long num)
+DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::getItem(const
 }
 
 
-const DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::getItem(const unsigned long num) const
+const DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::getItem(
 }
 
 
-DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::operator[](const unsigned long num)
+DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::operator[](const unsigned long num) const
+const DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTBreedRegistryCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTBreedRegistryCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBreedRegistryCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTBreedRegistryCodeSequence::insertItem(const unsigned long pos, It
 }
 
 
-OFCondition DRTBreedRegistryCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTBreedRegistryCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbrdrs.cc b/dcmrt/libsrc/drtbrdrs.cc
index 98b584b..453dc1b 100644
--- a/dcmrt/libsrc/drtbrdrs.cc
+++ b/dcmrt/libsrc/drtbrdrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyReferencedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -269,7 +269,7 @@ OFBool DRTBrachyReferencedDoseReferenceSequence::isValid() const
 }
 
 
-unsigned long DRTBrachyReferencedDoseReferenceSequence::getNumberOfItems() const
+size_t DRTBrachyReferencedDoseReferenceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -299,12 +299,12 @@ OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -319,12 +319,12 @@ OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoItem(const unsigned lo
 }
 
 
-OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -339,7 +339,7 @@ OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoItem(const unsigned lo
 }
 
 
-OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoItem(const unsigned long num)
+OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -375,7 +375,7 @@ const DRTBrachyReferencedDoseReferenceSequence::Item &DRTBrachyReferencedDoseRef
 }
 
 
-OFCondition DRTBrachyReferencedDoseReferenceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBrachyReferencedDoseReferenceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -385,7 +385,7 @@ OFCondition DRTBrachyReferencedDoseReferenceSequence::getItem(const unsigned lon
 }
 
 
-DRTBrachyReferencedDoseReferenceSequence::Item &DRTBrachyReferencedDoseReferenceSequence::getItem(const unsigned long num)
+DRTBrachyReferencedDoseReferenceSequence::Item &DRTBrachyReferencedDoseReferenceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -395,7 +395,7 @@ DRTBrachyReferencedDoseReferenceSequence::Item &DRTBrachyReferencedDoseReference
 }
 
 
-const DRTBrachyReferencedDoseReferenceSequence::Item &DRTBrachyReferencedDoseReferenceSequence::getItem(const unsigned long num) const
+const DRTBrachyReferencedDoseReferenceSequence::Item &DRTBrachyReferencedDoseReferenceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -405,13 +405,13 @@ const DRTBrachyReferencedDoseReferenceSequence::Item &DRTBrachyReferencedDoseRef
 }
 
 
-DRTBrachyReferencedDoseReferenceSequence::Item &DRTBrachyReferencedDoseReferenceSequence::operator[](const unsigned long num)
+DRTBrachyReferencedDoseReferenceSequence::Item &DRTBrachyReferencedDoseReferenceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBrachyReferencedDoseReferenceSequence::Item &DRTBrachyReferencedDoseReferenceSequence::operator[](const unsigned long num) const
+const DRTBrachyReferencedDoseReferenceSequence::Item &DRTBrachyReferencedDoseReferenceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -434,7 +434,7 @@ OFCondition DRTBrachyReferencedDoseReferenceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTBrachyReferencedDoseReferenceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBrachyReferencedDoseReferenceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -457,7 +457,7 @@ OFCondition DRTBrachyReferencedDoseReferenceSequence::insertItem(const unsigned
 }
 
 
-OFCondition DRTBrachyReferencedDoseReferenceSequence::removeItem(const unsigned long pos)
+OFCondition DRTBrachyReferencedDoseReferenceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbrs.cc b/dcmrt/libsrc/drtbrs.cc
index 67f5416..6f9ddd5 100644
--- a/dcmrt/libsrc/drtbrs.cc
+++ b/dcmrt/libsrc/drtbrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBreedRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -229,7 +229,7 @@ OFBool DRTBreedRegistrationSequence::isValid() const
 }
 
 
-unsigned long DRTBreedRegistrationSequence::getNumberOfItems() const
+size_t DRTBreedRegistrationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -259,12 +259,12 @@ OFCondition DRTBreedRegistrationSequence::gotoNextItem()
 }
 
 
-OFCondition DRTBreedRegistrationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBreedRegistrationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -279,12 +279,12 @@ OFCondition DRTBreedRegistrationSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTBreedRegistrationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBreedRegistrationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -299,7 +299,7 @@ OFCondition DRTBreedRegistrationSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTBreedRegistrationSequence::gotoItem(const unsigned long num)
+OFCondition DRTBreedRegistrationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -335,7 +335,7 @@ const DRTBreedRegistrationSequence::Item &DRTBreedRegistrationSequence::getCurre
 }
 
 
-OFCondition DRTBreedRegistrationSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBreedRegistrationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -345,7 +345,7 @@ OFCondition DRTBreedRegistrationSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTBreedRegistrationSequence::Item &DRTBreedRegistrationSequence::getItem(const unsigned long num)
+DRTBreedRegistrationSequence::Item &DRTBreedRegistrationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -355,7 +355,7 @@ DRTBreedRegistrationSequence::Item &DRTBreedRegistrationSequence::getItem(const
 }
 
 
-const DRTBreedRegistrationSequence::Item &DRTBreedRegistrationSequence::getItem(const unsigned long num) const
+const DRTBreedRegistrationSequence::Item &DRTBreedRegistrationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -365,13 +365,13 @@ const DRTBreedRegistrationSequence::Item &DRTBreedRegistrationSequence::getItem(
 }
 
 
-DRTBreedRegistrationSequence::Item &DRTBreedRegistrationSequence::operator[](const unsigned long num)
+DRTBreedRegistrationSequence::Item &DRTBreedRegistrationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBreedRegistrationSequence::Item &DRTBreedRegistrationSequence::operator[](const unsigned long num) const
+const DRTBreedRegistrationSequence::Item &DRTBreedRegistrationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -394,7 +394,7 @@ OFCondition DRTBreedRegistrationSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTBreedRegistrationSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBreedRegistrationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -417,7 +417,7 @@ OFCondition DRTBreedRegistrationSequence::insertItem(const unsigned long pos, It
 }
 
 
-OFCondition DRTBreedRegistrationSequence::removeItem(const unsigned long pos)
+OFCondition DRTBreedRegistrationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbs.cc b/dcmrt/libsrc/drtbs.cc
index f9e42e8..92c81dc 100644
--- a/dcmrt/libsrc/drtbs.cc
+++ b/dcmrt/libsrc/drtbs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -1139,7 +1139,7 @@ OFBool DRTBeamSequence::isValid() const
 }
 
 
-unsigned long DRTBeamSequence::getNumberOfItems() const
+size_t DRTBeamSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -1169,12 +1169,12 @@ OFCondition DRTBeamSequence::gotoNextItem()
 }
 
 
-OFCondition DRTBeamSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBeamSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1189,12 +1189,12 @@ OFCondition DRTBeamSequence::gotoItem(const unsigned long num, OFListIterator(It
 }
 
 
-OFCondition DRTBeamSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBeamSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1209,7 +1209,7 @@ OFCondition DRTBeamSequence::gotoItem(const unsigned long num, OFListConstIterat
 }
 
 
-OFCondition DRTBeamSequence::gotoItem(const unsigned long num)
+OFCondition DRTBeamSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -1245,7 +1245,7 @@ const DRTBeamSequence::Item &DRTBeamSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTBeamSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBeamSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -1255,7 +1255,7 @@ OFCondition DRTBeamSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTBeamSequence::Item &DRTBeamSequence::getItem(const unsigned long num)
+DRTBeamSequence::Item &DRTBeamSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1265,7 +1265,7 @@ DRTBeamSequence::Item &DRTBeamSequence::getItem(const unsigned long num)
 }
 
 
-const DRTBeamSequence::Item &DRTBeamSequence::getItem(const unsigned long num) const
+const DRTBeamSequence::Item &DRTBeamSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1275,13 +1275,13 @@ const DRTBeamSequence::Item &DRTBeamSequence::getItem(const unsigned long num) c
 }
 
 
-DRTBeamSequence::Item &DRTBeamSequence::operator[](const unsigned long num)
+DRTBeamSequence::Item &DRTBeamSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBeamSequence::Item &DRTBeamSequence::operator[](const unsigned long num) const
+const DRTBeamSequence::Item &DRTBeamSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -1304,7 +1304,7 @@ OFCondition DRTBeamSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTBeamSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBeamSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -1327,7 +1327,7 @@ OFCondition DRTBeamSequence::insertItem(const unsigned long pos, Item *&item)
 }
 
 
-OFCondition DRTBeamSequence::removeItem(const unsigned long pos)
+OFCondition DRTBeamSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbss.cc b/dcmrt/libsrc/drtbss.cc
index d72e2d2..2851f37 100644
--- a/dcmrt/libsrc/drtbss.cc
+++ b/dcmrt/libsrc/drtbss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBlockSlabSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -285,7 +285,7 @@ OFBool DRTBlockSlabSequence::isValid() const
 }
 
 
-unsigned long DRTBlockSlabSequence::getNumberOfItems() const
+size_t DRTBlockSlabSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -315,12 +315,12 @@ OFCondition DRTBlockSlabSequence::gotoNextItem()
 }
 
 
-OFCondition DRTBlockSlabSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBlockSlabSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -335,12 +335,12 @@ OFCondition DRTBlockSlabSequence::gotoItem(const unsigned long num, OFListIterat
 }
 
 
-OFCondition DRTBlockSlabSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBlockSlabSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -355,7 +355,7 @@ OFCondition DRTBlockSlabSequence::gotoItem(const unsigned long num, OFListConstI
 }
 
 
-OFCondition DRTBlockSlabSequence::gotoItem(const unsigned long num)
+OFCondition DRTBlockSlabSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -391,7 +391,7 @@ const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTBlockSlabSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBlockSlabSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -401,7 +401,7 @@ OFCondition DRTBlockSlabSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getItem(const unsigned long num)
+DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -411,7 +411,7 @@ DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getItem(const unsigned long nu
 }
 
 
-const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getItem(const unsigned long num) const
+const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -421,13 +421,13 @@ const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getItem(const unsigned l
 }
 
 
-DRTBlockSlabSequence::Item &DRTBlockSlabSequence::operator[](const unsigned long num)
+DRTBlockSlabSequence::Item &DRTBlockSlabSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::operator[](const unsigned long num) const
+const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -450,7 +450,7 @@ OFCondition DRTBlockSlabSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTBlockSlabSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBlockSlabSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -473,7 +473,7 @@ OFCondition DRTBlockSlabSequence::insertItem(const unsigned long pos, Item *&ite
 }
 
 
-OFCondition DRTBlockSlabSequence::removeItem(const unsigned long pos)
+OFCondition DRTBlockSlabSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbvcps.cc b/dcmrt/libsrc/drtbvcps.cc
index 857a7c7..7fc18c1 100644
--- a/dcmrt/libsrc/drtbvcps.cc
+++ b/dcmrt/libsrc/drtbvcps.cc
@@ -1,14 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamDoseVerificationControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
- *  Last modified on 2016-02-20 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -25,7 +24,7 @@ DRTBeamDoseVerificationControlPointSequence::Item::Item(const OFBool emptyDefaul
     AverageBeamDosePointDepth(DCM_AverageBeamDosePointDepth),
     AverageBeamDosePointEquivalentDepth(DCM_AverageBeamDosePointEquivalentDepth),
     AverageBeamDosePointSSD(DCM_AverageBeamDosePointSSD),
-    AverageBeamDosePointSourceToExternalContourSurfaceDistance(DCM_AverageBeamDosePointSourceToExternalContourDistance),
+    AverageBeamDosePointSourceToExternalContourDistance(DCM_AverageBeamDosePointSourceToExternalContourDistance),
     CumulativeMetersetWeight(DCM_CumulativeMetersetWeight),
     ReferencedControlPointIndex(DCM_ReferencedControlPointIndex)
 {
@@ -37,7 +36,7 @@ DRTBeamDoseVerificationControlPointSequence::Item::Item(const Item &copy)
     AverageBeamDosePointDepth(copy.AverageBeamDosePointDepth),
     AverageBeamDosePointEquivalentDepth(copy.AverageBeamDosePointEquivalentDepth),
     AverageBeamDosePointSSD(copy.AverageBeamDosePointSSD),
-    AverageBeamDosePointSourceToExternalContourSurfaceDistance(copy.AverageBeamDosePointSourceToExternalContourSurfaceDistance),
+    AverageBeamDosePointSourceToExternalContourDistance(copy.AverageBeamDosePointSourceToExternalContourDistance),
     CumulativeMetersetWeight(copy.CumulativeMetersetWeight),
     ReferencedControlPointIndex(copy.ReferencedControlPointIndex)
 {
@@ -57,7 +56,7 @@ DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationContro
         AverageBeamDosePointDepth = copy.AverageBeamDosePointDepth;
         AverageBeamDosePointEquivalentDepth = copy.AverageBeamDosePointEquivalentDepth;
         AverageBeamDosePointSSD = copy.AverageBeamDosePointSSD;
-        AverageBeamDosePointSourceToExternalContourSurfaceDistance = copy.AverageBeamDosePointSourceToExternalContourSurfaceDistance;
+        AverageBeamDosePointSourceToExternalContourDistance = copy.AverageBeamDosePointSourceToExternalContourDistance;
         CumulativeMetersetWeight = copy.CumulativeMetersetWeight;
         ReferencedControlPointIndex = copy.ReferencedControlPointIndex;
     }
@@ -75,7 +74,7 @@ void DRTBeamDoseVerificationControlPointSequence::Item::clear()
         AverageBeamDosePointDepth.clear();
         AverageBeamDosePointEquivalentDepth.clear();
         AverageBeamDosePointSSD.clear();
-        AverageBeamDosePointSourceToExternalContourSurfaceDistance.clear();
+        AverageBeamDosePointSourceToExternalContourDistance.clear();
     }
 }
 
@@ -87,7 +86,7 @@ OFBool DRTBeamDoseVerificationControlPointSequence::Item::isEmpty()
            AverageBeamDosePointDepth.isEmpty() &&
            AverageBeamDosePointEquivalentDepth.isEmpty() &&
            AverageBeamDosePointSSD.isEmpty() &&
-           AverageBeamDosePointSourceToExternalContourSurfaceDistance.isEmpty();
+           AverageBeamDosePointSourceToExternalContourDistance.isEmpty();
 }
 
 
@@ -109,7 +108,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::read(DcmItem &ite
         getAndCheckElementFromDataset(item, AverageBeamDosePointDepth, "1", "2C", "BeamDoseVerificationControlPointSequence");
         getAndCheckElementFromDataset(item, AverageBeamDosePointEquivalentDepth, "1", "2C", "BeamDoseVerificationControlPointSequence");
         getAndCheckElementFromDataset(item, AverageBeamDosePointSSD, "1", "2C", "BeamDoseVerificationControlPointSequence");
-        getAndCheckElementFromDataset(item, AverageBeamDosePointSourceToExternalContourSurfaceDistance, "1", "3", "BeamDoseVerificationControlPointSequence");
+        getAndCheckElementFromDataset(item, AverageBeamDosePointSourceToExternalContourDistance, "1", "3", "BeamDoseVerificationControlPointSequence");
         result = EC_Normal;
     }
     return result;
@@ -127,7 +126,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::write(DcmItem &it
         addElementToDataset(result, item, new DcmFloatingPointSingle(AverageBeamDosePointDepth), "1", "2C", "BeamDoseVerificationControlPointSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(AverageBeamDosePointEquivalentDepth), "1", "2C", "BeamDoseVerificationControlPointSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(AverageBeamDosePointSSD), "1", "2C", "BeamDoseVerificationControlPointSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(AverageBeamDosePointSourceToExternalContourSurfaceDistance), "1", "3", "BeamDoseVerificationControlPointSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(AverageBeamDosePointSourceToExternalContourDistance), "1", "3", "BeamDoseVerificationControlPointSequence");
     }
     return result;
 }
@@ -160,12 +159,12 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getAverageBeamDos
 }
 
 
-OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getAverageBeamDosePointSourceToExternalContourSurfaceDistance(Float32 &value, const unsigned long pos) const
+OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getAverageBeamDosePointSourceToExternalContourDistance(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return OFconst_cast(DcmFloatingPointSingle &, AverageBeamDosePointSourceToExternalContourSurfaceDistance).getFloat32(value, pos);
+        return OFconst_cast(DcmFloatingPointSingle &, AverageBeamDosePointSourceToExternalContourDistance).getFloat32(value, pos);
 }
 
 
@@ -232,12 +231,12 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setAverageBeamDos
 }
 
 
-OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setAverageBeamDosePointSourceToExternalContourSurfaceDistance(const Float32 value, const unsigned long pos)
+OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setAverageBeamDosePointSourceToExternalContourDistance(const Float32 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return AverageBeamDosePointSourceToExternalContourSurfaceDistance.putFloat32(value, pos);
+        return AverageBeamDosePointSourceToExternalContourDistance.putFloat32(value, pos);
 }
 
 
@@ -370,7 +369,7 @@ OFBool DRTBeamDoseVerificationControlPointSequence::isValid() const
 }
 
 
-unsigned long DRTBeamDoseVerificationControlPointSequence::getNumberOfItems() const
+size_t DRTBeamDoseVerificationControlPointSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -400,12 +399,12 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::gotoNextItem()
 }
 
 
-OFCondition DRTBeamDoseVerificationControlPointSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBeamDoseVerificationControlPointSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -420,12 +419,12 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTBeamDoseVerificationControlPointSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBeamDoseVerificationControlPointSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -440,7 +439,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTBeamDoseVerificationControlPointSequence::gotoItem(const unsigned long num)
+OFCondition DRTBeamDoseVerificationControlPointSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -476,7 +475,7 @@ const DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerification
 }
 
 
-OFCondition DRTBeamDoseVerificationControlPointSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBeamDoseVerificationControlPointSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -486,7 +485,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::getItem(const unsigned
 }
 
 
-DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationControlPointSequence::getItem(const unsigned long num)
+DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationControlPointSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -496,7 +495,7 @@ DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationContro
 }
 
 
-const DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationControlPointSequence::getItem(const unsigned long num) const
+const DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationControlPointSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -506,13 +505,13 @@ const DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerification
 }
 
 
-DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationControlPointSequence::operator[](const unsigned long num)
+DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationControlPointSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationControlPointSequence::operator[](const unsigned long num) const
+const DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationControlPointSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -535,7 +534,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTBeamDoseVerificationControlPointSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBeamDoseVerificationControlPointSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -558,7 +557,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::insertItem(const unsign
 }
 
 
-OFCondition DRTBeamDoseVerificationControlPointSequence::removeItem(const unsigned long pos)
+OFCondition DRTBeamDoseVerificationControlPointSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcbars.cc b/dcmrt/libsrc/drtcbars.cc
index bc815f0..911e630 100644
--- a/dcmrt/libsrc/drtcbars.cc
+++ b/dcmrt/libsrc/drtcbars.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContrastBolusAdministrationRouteSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -35,6 +35,7 @@ DRTContrastBolusAdministrationRouteSequence::Item::Item(const OFBool emptyDefaul
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -57,6 +58,7 @@ DRTContrastBolusAdministrationRouteSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -87,6 +89,7 @@ DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministratio
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -110,6 +113,7 @@ void DRTContrastBolusAdministrationRouteSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -132,6 +136,7 @@ OFBool DRTContrastBolusAdministrationRouteSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -164,6 +169,7 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::read(DcmItem &ite
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ContrastBolusAdministrationRouteSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ContrastBolusAdministrationRouteSequence");
@@ -192,6 +198,7 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::write(DcmItem &it
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ContrastBolusAdministrationRouteSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ContrastBolusAdministrationRouteSequence");
@@ -310,6 +317,15 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getMappingResourc
 }
 
 
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -484,6 +500,19 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setMappingResourc
 }
 
 
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -613,7 +642,7 @@ OFBool DRTContrastBolusAdministrationRouteSequence::isValid() const
 }
 
 
-unsigned long DRTContrastBolusAdministrationRouteSequence::getNumberOfItems() const
+size_t DRTContrastBolusAdministrationRouteSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -643,12 +672,12 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::gotoNextItem()
 }
 
 
-OFCondition DRTContrastBolusAdministrationRouteSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTContrastBolusAdministrationRouteSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -663,12 +692,12 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTContrastBolusAdministrationRouteSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTContrastBolusAdministrationRouteSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -683,7 +712,7 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTContrastBolusAdministrationRouteSequence::gotoItem(const unsigned long num)
+OFCondition DRTContrastBolusAdministrationRouteSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -719,7 +748,7 @@ const DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdminis
 }
 
 
-OFCondition DRTContrastBolusAdministrationRouteSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTContrastBolusAdministrationRouteSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -729,7 +758,7 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::getItem(const unsigned
 }
 
 
-DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministrationRouteSequence::getItem(const unsigned long num)
+DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministrationRouteSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -739,7 +768,7 @@ DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministratio
 }
 
 
-const DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministrationRouteSequence::getItem(const unsigned long num) const
+const DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministrationRouteSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -749,13 +778,13 @@ const DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdminis
 }
 
 
-DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministrationRouteSequence::operator[](const unsigned long num)
+DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministrationRouteSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministrationRouteSequence::operator[](const unsigned long num) const
+const DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministrationRouteSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -778,7 +807,7 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTContrastBolusAdministrationRouteSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTContrastBolusAdministrationRouteSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -801,7 +830,7 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::insertItem(const unsign
 }
 
 
-OFCondition DRTContrastBolusAdministrationRouteSequence::removeItem(const unsigned long pos)
+OFCondition DRTContrastBolusAdministrationRouteSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtccs.cc b/dcmrt/libsrc/drtccs.cc
index 979f490..545c6f8 100644
--- a/dcmrt/libsrc/drtccs.cc
+++ b/dcmrt/libsrc/drtccs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConceptCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTConceptCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTConceptCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTConceptCodeSequence::Item &DRTConceptCodeSequence::Item::operator=(const Item
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTConceptCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTConceptCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTConceptCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ConceptCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ConceptCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTConceptCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ConceptCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ConceptCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTConceptCodeSequence::Item::getMappingResource(OFString &value, co
 }
 
 
+OFCondition DRTConceptCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTConceptCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTConceptCodeSequence::Item::setMappingResource(const OFString &val
 }
 
 
+OFCondition DRTConceptCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTConceptCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTConceptCodeSequence::isValid() const
 }
 
 
-unsigned long DRTConceptCodeSequence::getNumberOfItems() const
+size_t DRTConceptCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTConceptCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTConceptCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTConceptCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTConceptCodeSequence::gotoItem(const unsigned long num, OFListIter
 }
 
 
-OFCondition DRTConceptCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTConceptCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTConceptCodeSequence::gotoItem(const unsigned long num, OFListCons
 }
 
 
-OFCondition DRTConceptCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTConceptCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getCurrentItem() con
 }
 
 
-OFCondition DRTConceptCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTConceptCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTConceptCodeSequence::getItem(const unsigned long num, Item *&item
 }
 
 
-DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getItem(const unsigned long num)
+DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getItem(const unsigned lon
 }
 
 
-const DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getItem(const unsigned long num) const
+const DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getItem(const unsign
 }
 
 
-DRTConceptCodeSequence::Item &DRTConceptCodeSequence::operator[](const unsigned long num)
+DRTConceptCodeSequence::Item &DRTConceptCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTConceptCodeSequence::Item &DRTConceptCodeSequence::operator[](const unsigned long num) const
+const DRTConceptCodeSequence::Item &DRTConceptCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTConceptCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTConceptCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTConceptCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTConceptCodeSequence::insertItem(const unsigned long pos, Item *&i
 }
 
 
-OFCondition DRTConceptCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTConceptCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcctus.cc b/dcmrt/libsrc/drtcctus.cc
index 731881a..bc56cdc 100644
--- a/dcmrt/libsrc/drtcctus.cc
+++ b/dcmrt/libsrc/drtcctus.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConsentForClinicalTrialUseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -280,7 +280,7 @@ OFBool DRTConsentForClinicalTrialUseSequence::isValid() const
 }
 
 
-unsigned long DRTConsentForClinicalTrialUseSequence::getNumberOfItems() const
+size_t DRTConsentForClinicalTrialUseSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -310,12 +310,12 @@ OFCondition DRTConsentForClinicalTrialUseSequence::gotoNextItem()
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,12 +330,12 @@ OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -350,7 +350,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const unsigned long num)
+OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -386,7 +386,7 @@ const DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUse
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTConsentForClinicalTrialUseSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -396,7 +396,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::getItem(const unsigned long n
 }
 
 
-DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::getItem(const unsigned long num)
+DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -406,7 +406,7 @@ DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequen
 }
 
 
-const DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::getItem(const unsigned long num) const
+const DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -416,13 +416,13 @@ const DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUse
 }
 
 
-DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::operator[](const unsigned long num)
+DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::operator[](const unsigned long num) const
+const DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -445,7 +445,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTConsentForClinicalTrialUseSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -468,7 +468,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::insertItem(const unsigned lon
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::removeItem(const unsigned long pos)
+OFCondition DRTConsentForClinicalTrialUseSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcdrs.cc b/dcmrt/libsrc/drtcdrs.cc
index 5ffe6cf..d12447d 100644
--- a/dcmrt/libsrc/drtcdrs.cc
+++ b/dcmrt/libsrc/drtcdrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -336,7 +336,7 @@ OFBool DRTCalculatedDoseReferenceSequence::isValid() const
 }
 
 
-unsigned long DRTCalculatedDoseReferenceSequence::getNumberOfItems() const
+size_t DRTCalculatedDoseReferenceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -366,12 +366,12 @@ OFCondition DRTCalculatedDoseReferenceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTCalculatedDoseReferenceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTCalculatedDoseReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -386,12 +386,12 @@ OFCondition DRTCalculatedDoseReferenceSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTCalculatedDoseReferenceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTCalculatedDoseReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -406,7 +406,7 @@ OFCondition DRTCalculatedDoseReferenceSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTCalculatedDoseReferenceSequence::gotoItem(const unsigned long num)
+OFCondition DRTCalculatedDoseReferenceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -442,7 +442,7 @@ const DRTCalculatedDoseReferenceSequence::Item &DRTCalculatedDoseReferenceSequen
 }
 
 
-OFCondition DRTCalculatedDoseReferenceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTCalculatedDoseReferenceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -452,7 +452,7 @@ OFCondition DRTCalculatedDoseReferenceSequence::getItem(const unsigned long num,
 }
 
 
-DRTCalculatedDoseReferenceSequence::Item &DRTCalculatedDoseReferenceSequence::getItem(const unsigned long num)
+DRTCalculatedDoseReferenceSequence::Item &DRTCalculatedDoseReferenceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -462,7 +462,7 @@ DRTCalculatedDoseReferenceSequence::Item &DRTCalculatedDoseReferenceSequence::ge
 }
 
 
-const DRTCalculatedDoseReferenceSequence::Item &DRTCalculatedDoseReferenceSequence::getItem(const unsigned long num) const
+const DRTCalculatedDoseReferenceSequence::Item &DRTCalculatedDoseReferenceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -472,13 +472,13 @@ const DRTCalculatedDoseReferenceSequence::Item &DRTCalculatedDoseReferenceSequen
 }
 
 
-DRTCalculatedDoseReferenceSequence::Item &DRTCalculatedDoseReferenceSequence::operator[](const unsigned long num)
+DRTCalculatedDoseReferenceSequence::Item &DRTCalculatedDoseReferenceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTCalculatedDoseReferenceSequence::Item &DRTCalculatedDoseReferenceSequence::operator[](const unsigned long num) const
+const DRTCalculatedDoseReferenceSequence::Item &DRTCalculatedDoseReferenceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -501,7 +501,7 @@ OFCondition DRTCalculatedDoseReferenceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTCalculatedDoseReferenceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTCalculatedDoseReferenceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -524,7 +524,7 @@ OFCondition DRTCalculatedDoseReferenceSequence::insertItem(const unsigned long p
 }
 
 
-OFCondition DRTCalculatedDoseReferenceSequence::removeItem(const unsigned long pos)
+OFCondition DRTCalculatedDoseReferenceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtces.cc b/dcmrt/libsrc/drtces.cc
index a0cee02..55a0f78 100644
--- a/dcmrt/libsrc/drtces.cc
+++ b/dcmrt/libsrc/drtces.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContributingEquipmentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -622,7 +622,7 @@ OFBool DRTContributingEquipmentSequence::isValid() const
 }
 
 
-unsigned long DRTContributingEquipmentSequence::getNumberOfItems() const
+size_t DRTContributingEquipmentSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -652,12 +652,12 @@ OFCondition DRTContributingEquipmentSequence::gotoNextItem()
 }
 
 
-OFCondition DRTContributingEquipmentSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTContributingEquipmentSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -672,12 +672,12 @@ OFCondition DRTContributingEquipmentSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTContributingEquipmentSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTContributingEquipmentSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -692,7 +692,7 @@ OFCondition DRTContributingEquipmentSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTContributingEquipmentSequence::gotoItem(const unsigned long num)
+OFCondition DRTContributingEquipmentSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -728,7 +728,7 @@ const DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::
 }
 
 
-OFCondition DRTContributingEquipmentSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTContributingEquipmentSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -738,7 +738,7 @@ OFCondition DRTContributingEquipmentSequence::getItem(const unsigned long num, I
 }
 
 
-DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::getItem(const unsigned long num)
+DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -748,7 +748,7 @@ DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::getIte
 }
 
 
-const DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::getItem(const unsigned long num) const
+const DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -758,13 +758,13 @@ const DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::
 }
 
 
-DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::operator[](const unsigned long num)
+DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::operator[](const unsigned long num) const
+const DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -787,7 +787,7 @@ OFCondition DRTContributingEquipmentSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTContributingEquipmentSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTContributingEquipmentSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -810,7 +810,7 @@ OFCondition DRTContributingEquipmentSequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTContributingEquipmentSequence::removeItem(const unsigned long pos)
+OFCondition DRTContributingEquipmentSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcctus.cc b/dcmrt/libsrc/drtcgis.cc
similarity index 62%
copy from dcmrt/libsrc/drtcctus.cc
copy to dcmrt/libsrc/drtcgis.cc
index 731881a..48259b1 100644
--- a/dcmrt/libsrc/drtcctus.cc
+++ b/dcmrt/libsrc/drtcgis.cc
@@ -1,177 +1,206 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTConsentForClinicalTrialUseSequence
+ *  Source file for class DRTContextGroupIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtcctus.h"
+#include "dcmtk/dcmrt/seq/drtcgis.h"
 
 
 // --- item class ---
 
-DRTConsentForClinicalTrialUseSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTContextGroupIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    ClinicalTrialProtocolID(DCM_ClinicalTrialProtocolID),
-    ConsentForDistributionFlag(DCM_ConsentForDistributionFlag),
-    DistributionType(DCM_DistributionType)
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    MappingResource(DCM_MappingResource)
 {
 }
 
 
-DRTConsentForClinicalTrialUseSequence::Item::Item(const Item &copy)
+DRTContextGroupIdentificationSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ClinicalTrialProtocolID(copy.ClinicalTrialProtocolID),
-    ConsentForDistributionFlag(copy.ConsentForDistributionFlag),
-    DistributionType(copy.DistributionType)
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    MappingResource(copy.MappingResource)
 {
 }
 
 
-DRTConsentForClinicalTrialUseSequence::Item::~Item()
+DRTContextGroupIdentificationSequence::Item::~Item()
 {
 }
 
 
-DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::Item::operator=(const Item &copy)
+DRTContextGroupIdentificationSequence::Item &DRTContextGroupIdentificationSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        ClinicalTrialProtocolID = copy.ClinicalTrialProtocolID;
-        ConsentForDistributionFlag = copy.ConsentForDistributionFlag;
-        DistributionType = copy.DistributionType;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        MappingResource = copy.MappingResource;
     }
     return *this;
 }
 
 
-void DRTConsentForClinicalTrialUseSequence::Item::clear()
+void DRTContextGroupIdentificationSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
-        DistributionType.clear();
-        ClinicalTrialProtocolID.clear();
-        ConsentForDistributionFlag.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        ContextGroupVersion.clear();
     }
 }
 
 
-OFBool DRTConsentForClinicalTrialUseSequence::Item::isEmpty()
+OFBool DRTContextGroupIdentificationSequence::Item::isEmpty()
 {
-    return DistributionType.isEmpty() &&
-           ClinicalTrialProtocolID.isEmpty() &&
-           ConsentForDistributionFlag.isEmpty();
+    return ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           ContextGroupVersion.isEmpty();
 }
 
 
-OFBool DRTConsentForClinicalTrialUseSequence::Item::isValid() const
+OFBool DRTContextGroupIdentificationSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::Item::read(DcmItem &item)
+OFCondition DRTContextGroupIdentificationSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, DistributionType, "1", "1C", "ConsentForClinicalTrialUseSequence");
-        getAndCheckElementFromDataset(item, ClinicalTrialProtocolID, "1", "1C", "ConsentForClinicalTrialUseSequence");
-        getAndCheckElementFromDataset(item, ConsentForDistributionFlag, "1", "1", "ConsentForClinicalTrialUseSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "1", "ContextGroupIdentificationSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ContextGroupIdentificationSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1", "ContextGroupIdentificationSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1", "ContextGroupIdentificationSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::Item::write(DcmItem &item)
+OFCondition DRTContextGroupIdentificationSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmCodeString(DistributionType), "1", "1C", "ConsentForClinicalTrialUseSequence");
-        addElementToDataset(result, item, new DcmLongString(ClinicalTrialProtocolID), "1", "1C", "ConsentForClinicalTrialUseSequence");
-        addElementToDataset(result, item, new DcmCodeString(ConsentForDistributionFlag), "1", "1", "ConsentForClinicalTrialUseSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "1", "ContextGroupIdentificationSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ContextGroupIdentificationSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1", "ContextGroupIdentificationSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1", "ContextGroupIdentificationSequence");
     }
     return result;
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::Item::getClinicalTrialProtocolID(OFString &value, const signed long pos) const
+OFCondition DRTContextGroupIdentificationSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ClinicalTrialProtocolID, value, pos);
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::Item::getConsentForDistributionFlag(OFString &value, const signed long pos) const
+OFCondition DRTContextGroupIdentificationSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ConsentForDistributionFlag, value, pos);
+        return getStringValueFromElement(ContextIdentifier, value, pos);
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::Item::getDistributionType(OFString &value, const signed long pos) const
+OFCondition DRTContextGroupIdentificationSequence::Item::getContextUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(DistributionType, value, pos);
+        return getStringValueFromElement(ContextUID, value, pos);
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::Item::setClinicalTrialProtocolID(const OFString &value, const OFBool check)
+OFCondition DRTContextGroupIdentificationSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTContextGroupIdentificationSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = ClinicalTrialProtocolID.putOFStringArray(value);
+            result = ContextGroupVersion.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::Item::setConsentForDistributionFlag(const OFString &value, const OFBool check)
+OFCondition DRTContextGroupIdentificationSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = ConsentForDistributionFlag.putOFStringArray(value);
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTContextGroupIdentificationSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::Item::setDistributionType(const OFString &value, const OFBool check)
+OFCondition DRTContextGroupIdentificationSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = DistributionType.putOFStringArray(value);
+            result = MappingResource.putOFStringArray(value);
     }
     return result;
 }
@@ -179,7 +208,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::Item::setDistributionType(con
 
 // --- sequence class ---
 
-DRTConsentForClinicalTrialUseSequence::DRTConsentForClinicalTrialUseSequence(const OFBool emptyDefaultSequence)
+DRTContextGroupIdentificationSequence::DRTContextGroupIdentificationSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -189,7 +218,7 @@ DRTConsentForClinicalTrialUseSequence::DRTConsentForClinicalTrialUseSequence(con
 }
 
 
-DRTConsentForClinicalTrialUseSequence::DRTConsentForClinicalTrialUseSequence(const DRTConsentForClinicalTrialUseSequence &copy)
+DRTContextGroupIdentificationSequence::DRTContextGroupIdentificationSequence(const DRTContextGroupIdentificationSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -215,7 +244,7 @@ DRTConsentForClinicalTrialUseSequence::DRTConsentForClinicalTrialUseSequence(con
 }
 
 
-DRTConsentForClinicalTrialUseSequence &DRTConsentForClinicalTrialUseSequence::operator=(const DRTConsentForClinicalTrialUseSequence &copy)
+DRTContextGroupIdentificationSequence &DRTContextGroupIdentificationSequence::operator=(const DRTContextGroupIdentificationSequence &copy)
 {
     if (this != &copy)
     {
@@ -243,13 +272,13 @@ DRTConsentForClinicalTrialUseSequence &DRTConsentForClinicalTrialUseSequence::op
 }
 
 
-DRTConsentForClinicalTrialUseSequence::~DRTConsentForClinicalTrialUseSequence()
+DRTContextGroupIdentificationSequence::~DRTContextGroupIdentificationSequence()
 {
     clear();
 }
 
 
-void DRTConsentForClinicalTrialUseSequence::clear()
+void DRTContextGroupIdentificationSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -268,25 +297,25 @@ void DRTConsentForClinicalTrialUseSequence::clear()
 }
 
 
-OFBool DRTConsentForClinicalTrialUseSequence::isEmpty()
+OFBool DRTContextGroupIdentificationSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTConsentForClinicalTrialUseSequence::isValid() const
+OFBool DRTContextGroupIdentificationSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTConsentForClinicalTrialUseSequence::getNumberOfItems() const
+size_t DRTContextGroupIdentificationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::gotoFirstItem()
+OFCondition DRTContextGroupIdentificationSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -298,7 +327,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::gotoNextItem()
+OFCondition DRTContextGroupIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -310,12 +339,12 @@ OFCondition DRTConsentForClinicalTrialUseSequence::gotoNextItem()
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTContextGroupIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,12 +359,12 @@ OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTContextGroupIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -350,13 +379,13 @@ OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::gotoItem(const unsigned long num)
+OFCondition DRTContextGroupIdentificationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::getCurrentItem(Item *&item) const
+OFCondition DRTContextGroupIdentificationSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -368,7 +397,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::getCurrentItem(Item *&item) c
 }
 
 
-DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::getCurrentItem()
+DRTContextGroupIdentificationSequence::Item &DRTContextGroupIdentificationSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -377,7 +406,7 @@ DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequen
 }
 
 
-const DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::getCurrentItem() const
+const DRTContextGroupIdentificationSequence::Item &DRTContextGroupIdentificationSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -386,7 +415,7 @@ const DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUse
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTContextGroupIdentificationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -396,7 +425,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::getItem(const unsigned long n
 }
 
 
-DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::getItem(const unsigned long num)
+DRTContextGroupIdentificationSequence::Item &DRTContextGroupIdentificationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -406,7 +435,7 @@ DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequen
 }
 
 
-const DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::getItem(const unsigned long num) const
+const DRTContextGroupIdentificationSequence::Item &DRTContextGroupIdentificationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -416,19 +445,19 @@ const DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUse
 }
 
 
-DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::operator[](const unsigned long num)
+DRTContextGroupIdentificationSequence::Item &DRTContextGroupIdentificationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTConsentForClinicalTrialUseSequence::Item &DRTConsentForClinicalTrialUseSequence::operator[](const unsigned long num) const
+const DRTContextGroupIdentificationSequence::Item &DRTContextGroupIdentificationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::addItem(Item *&item)
+OFCondition DRTContextGroupIdentificationSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -445,7 +474,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTContextGroupIdentificationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -468,7 +497,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::insertItem(const unsigned lon
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::removeItem(const unsigned long pos)
+OFCondition DRTContextGroupIdentificationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -486,7 +515,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::removeItem(const unsigned lon
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::read(DcmItem &dataset,
+OFCondition DRTContextGroupIdentificationSequence::read(DcmItem &dataset,
                                                         const OFString &card,
                                                         const OFString &type,
                                                         const char *moduleName)
@@ -498,7 +527,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ConsentForClinicalTrialUseSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_ContextGroupIdentificationSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -528,7 +557,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_ConsentForClinicalTrialUseSequence);
+            DcmSequenceOfItems element(DCM_ContextGroupIdentificationSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -536,7 +565,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTConsentForClinicalTrialUseSequence::write(DcmItem &dataset,
+OFCondition DRTContextGroupIdentificationSequence::write(DcmItem &dataset,
                                                          const OFString &card,
                                                          const OFString &type,
                                                          const char *moduleName)
@@ -545,7 +574,7 @@ OFCondition DRTConsentForClinicalTrialUseSequence::write(DcmItem &dataset,
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ConsentForClinicalTrialUseSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ContextGroupIdentificationSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtchs.cc b/dcmrt/libsrc/drtchs.cc
index a216b01..cc4524c 100644
--- a/dcmrt/libsrc/drtchs.cc
+++ b/dcmrt/libsrc/drtchs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -989,7 +989,7 @@ OFBool DRTChannelSequence::isValid() const
 }
 
 
-unsigned long DRTChannelSequence::getNumberOfItems() const
+size_t DRTChannelSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -1019,12 +1019,12 @@ OFCondition DRTChannelSequence::gotoNextItem()
 }
 
 
-OFCondition DRTChannelSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTChannelSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1039,12 +1039,12 @@ OFCondition DRTChannelSequence::gotoItem(const unsigned long num, OFListIterator
 }
 
 
-OFCondition DRTChannelSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTChannelSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1059,7 +1059,7 @@ OFCondition DRTChannelSequence::gotoItem(const unsigned long num, OFListConstIte
 }
 
 
-OFCondition DRTChannelSequence::gotoItem(const unsigned long num)
+OFCondition DRTChannelSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -1095,7 +1095,7 @@ const DRTChannelSequence::Item &DRTChannelSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTChannelSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTChannelSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -1105,7 +1105,7 @@ OFCondition DRTChannelSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTChannelSequence::Item &DRTChannelSequence::getItem(const unsigned long num)
+DRTChannelSequence::Item &DRTChannelSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1115,7 +1115,7 @@ DRTChannelSequence::Item &DRTChannelSequence::getItem(const unsigned long num)
 }
 
 
-const DRTChannelSequence::Item &DRTChannelSequence::getItem(const unsigned long num) const
+const DRTChannelSequence::Item &DRTChannelSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1125,13 +1125,13 @@ const DRTChannelSequence::Item &DRTChannelSequence::getItem(const unsigned long
 }
 
 
-DRTChannelSequence::Item &DRTChannelSequence::operator[](const unsigned long num)
+DRTChannelSequence::Item &DRTChannelSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTChannelSequence::Item &DRTChannelSequence::operator[](const unsigned long num) const
+const DRTChannelSequence::Item &DRTChannelSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -1154,7 +1154,7 @@ OFCondition DRTChannelSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTChannelSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTChannelSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -1177,7 +1177,7 @@ OFCondition DRTChannelSequence::insertItem(const unsigned long pos, Item *&item)
 }
 
 
-OFCondition DRTChannelSequence::removeItem(const unsigned long pos)
+OFCondition DRTChannelSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcims.cc b/dcmrt/libsrc/drtcims.cc
index d02068d..c3306a6 100644
--- a/dcmrt/libsrc/drtcims.cc
+++ b/dcmrt/libsrc/drtcims.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContentItemModifierSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -546,7 +546,7 @@ OFBool DRTContentItemModifierSequence::isValid() const
 }
 
 
-unsigned long DRTContentItemModifierSequence::getNumberOfItems() const
+size_t DRTContentItemModifierSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -576,12 +576,12 @@ OFCondition DRTContentItemModifierSequence::gotoNextItem()
 }
 
 
-OFCondition DRTContentItemModifierSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTContentItemModifierSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -596,12 +596,12 @@ OFCondition DRTContentItemModifierSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTContentItemModifierSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTContentItemModifierSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -616,7 +616,7 @@ OFCondition DRTContentItemModifierSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTContentItemModifierSequence::gotoItem(const unsigned long num)
+OFCondition DRTContentItemModifierSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -652,7 +652,7 @@ const DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getC
 }
 
 
-OFCondition DRTContentItemModifierSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTContentItemModifierSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -662,7 +662,7 @@ OFCondition DRTContentItemModifierSequence::getItem(const unsigned long num, Ite
 }
 
 
-DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getItem(const unsigned long num)
+DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -672,7 +672,7 @@ DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getItem(co
 }
 
 
-const DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getItem(const unsigned long num) const
+const DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -682,13 +682,13 @@ const DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getI
 }
 
 
-DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::operator[](const unsigned long num)
+DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::operator[](const unsigned long num) const
+const DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -711,7 +711,7 @@ OFCondition DRTContentItemModifierSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTContentItemModifierSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTContentItemModifierSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -734,7 +734,7 @@ OFCondition DRTContentItemModifierSequence::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTContentItemModifierSequence::removeItem(const unsigned long pos)
+OFCondition DRTContentItemModifierSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcis.cc b/dcmrt/libsrc/drtcis.cc
index db289e6..07f482e 100644
--- a/dcmrt/libsrc/drtcis.cc
+++ b/dcmrt/libsrc/drtcis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContourImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -314,7 +314,7 @@ OFBool DRTContourImageSequence::isValid() const
 }
 
 
-unsigned long DRTContourImageSequence::getNumberOfItems() const
+size_t DRTContourImageSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -344,12 +344,12 @@ OFCondition DRTContourImageSequence::gotoNextItem()
 }
 
 
-OFCondition DRTContourImageSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTContourImageSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -364,12 +364,12 @@ OFCondition DRTContourImageSequence::gotoItem(const unsigned long num, OFListIte
 }
 
 
-OFCondition DRTContourImageSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTContourImageSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -384,7 +384,7 @@ OFCondition DRTContourImageSequence::gotoItem(const unsigned long num, OFListCon
 }
 
 
-OFCondition DRTContourImageSequence::gotoItem(const unsigned long num)
+OFCondition DRTContourImageSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -420,7 +420,7 @@ const DRTContourImageSequence::Item &DRTContourImageSequence::getCurrentItem() c
 }
 
 
-OFCondition DRTContourImageSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTContourImageSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -430,7 +430,7 @@ OFCondition DRTContourImageSequence::getItem(const unsigned long num, Item *&ite
 }
 
 
-DRTContourImageSequence::Item &DRTContourImageSequence::getItem(const unsigned long num)
+DRTContourImageSequence::Item &DRTContourImageSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -440,7 +440,7 @@ DRTContourImageSequence::Item &DRTContourImageSequence::getItem(const unsigned l
 }
 
 
-const DRTContourImageSequence::Item &DRTContourImageSequence::getItem(const unsigned long num) const
+const DRTContourImageSequence::Item &DRTContourImageSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -450,13 +450,13 @@ const DRTContourImageSequence::Item &DRTContourImageSequence::getItem(const unsi
 }
 
 
-DRTContourImageSequence::Item &DRTContourImageSequence::operator[](const unsigned long num)
+DRTContourImageSequence::Item &DRTContourImageSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTContourImageSequence::Item &DRTContourImageSequence::operator[](const unsigned long num) const
+const DRTContourImageSequence::Item &DRTContourImageSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -479,7 +479,7 @@ OFCondition DRTContourImageSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTContourImageSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTContourImageSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -502,7 +502,7 @@ OFCondition DRTContourImageSequence::insertItem(const unsigned long pos, Item *&
 }
 
 
-OFCondition DRTContourImageSequence::removeItem(const unsigned long pos)
+OFCondition DRTContourImageSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcncs.cc b/dcmrt/libsrc/drtcncs.cc
index 3986664..7bc5014 100644
--- a/dcmrt/libsrc/drtcncs.cc
+++ b/dcmrt/libsrc/drtcncs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConceptNameCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTConceptNameCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTConceptNameCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::Item::operator=(co
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTConceptNameCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTConceptNameCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTConceptNameCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ConceptNameCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ConceptNameCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTConceptNameCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ConceptNameCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ConceptNameCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTConceptNameCodeSequence::Item::getMappingResource(OFString &value
 }
 
 
+OFCondition DRTConceptNameCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTConceptNameCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTConceptNameCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTConceptNameCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTConceptNameCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTConceptNameCodeSequence::isValid() const
 }
 
 
-unsigned long DRTConceptNameCodeSequence::getNumberOfItems() const
+size_t DRTConceptNameCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTConceptNameCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTConceptNameCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTConceptNameCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTConceptNameCodeSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTConceptNameCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTConceptNameCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTConceptNameCodeSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTConceptNameCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTConceptNameCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::getCurrentIt
 }
 
 
-OFCondition DRTConceptNameCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTConceptNameCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTConceptNameCodeSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::getItem(const unsigned long num)
+DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::getItem(const unsi
 }
 
 
-const DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::getItem(const unsigned long num) const
+const DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::getItem(cons
 }
 
 
-DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::operator[](const unsigned long num)
+DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::operator[](const unsigned long num) const
+const DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTConceptNameCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTConceptNameCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTConceptNameCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTConceptNameCodeSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTConceptNameCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTConceptNameCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcos.cc b/dcmrt/libsrc/drtcos.cc
index d2b31cf..faa96fc 100644
--- a/dcmrt/libsrc/drtcos.cc
+++ b/dcmrt/libsrc/drtcos.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -37,7 +37,8 @@ DRTCompensatorSequence::Item::Item(const OFBool emptyDefaultItem)
     CompensatorType(DCM_CompensatorType),
     MaterialID(DCM_MaterialID),
     SourceToCompensatorDistance(DCM_SourceToCompensatorDistance),
-    SourceToCompensatorTrayDistance(DCM_SourceToCompensatorTrayDistance)
+    SourceToCompensatorTrayDistance(DCM_SourceToCompensatorTrayDistance),
+    TrayAccessoryCode(DCM_TrayAccessoryCode)
 {
 }
 
@@ -60,7 +61,8 @@ DRTCompensatorSequence::Item::Item(const Item &copy)
     CompensatorType(copy.CompensatorType),
     MaterialID(copy.MaterialID),
     SourceToCompensatorDistance(copy.SourceToCompensatorDistance),
-    SourceToCompensatorTrayDistance(copy.SourceToCompensatorTrayDistance)
+    SourceToCompensatorTrayDistance(copy.SourceToCompensatorTrayDistance),
+    TrayAccessoryCode(copy.TrayAccessoryCode)
 {
 }
 
@@ -92,6 +94,7 @@ DRTCompensatorSequence::Item &DRTCompensatorSequence::Item::operator=(const Item
         MaterialID = copy.MaterialID;
         SourceToCompensatorDistance = copy.SourceToCompensatorDistance;
         SourceToCompensatorTrayDistance = copy.SourceToCompensatorTrayDistance;
+        TrayAccessoryCode = copy.TrayAccessoryCode;
     }
     return *this;
 }
@@ -109,6 +112,7 @@ void DRTCompensatorSequence::Item::clear()
         CompensatorID.clear();
         AccessoryCode.clear();
         CompensatorTrayID.clear();
+        TrayAccessoryCode.clear();
         SourceToCompensatorTrayDistance.clear();
         CompensatorDivergence.clear();
         CompensatorMountingPosition.clear();
@@ -132,6 +136,7 @@ OFBool DRTCompensatorSequence::Item::isEmpty()
            CompensatorID.isEmpty() &&
            AccessoryCode.isEmpty() &&
            CompensatorTrayID.isEmpty() &&
+           TrayAccessoryCode.isEmpty() &&
            SourceToCompensatorTrayDistance.isEmpty() &&
            CompensatorDivergence.isEmpty() &&
            CompensatorMountingPosition.isEmpty() &&
@@ -165,6 +170,7 @@ OFCondition DRTCompensatorSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, CompensatorID, "1", "3", "CompensatorSequence");
         getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "CompensatorSequence");
         getAndCheckElementFromDataset(item, CompensatorTrayID, "1", "3", "CompensatorSequence");
+        getAndCheckElementFromDataset(item, TrayAccessoryCode, "1", "3", "CompensatorSequence");
         getAndCheckElementFromDataset(item, SourceToCompensatorTrayDistance, "1", "2", "CompensatorSequence");
         getAndCheckElementFromDataset(item, CompensatorDivergence, "1", "3", "CompensatorSequence");
         getAndCheckElementFromDataset(item, CompensatorMountingPosition, "1", "3", "CompensatorSequence");
@@ -194,6 +200,7 @@ OFCondition DRTCompensatorSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmShortString(CompensatorID), "1", "3", "CompensatorSequence");
         addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "CompensatorSequence");
         addElementToDataset(result, item, new DcmShortString(CompensatorTrayID), "1", "3", "CompensatorSequence");
+        addElementToDataset(result, item, new DcmLongString(TrayAccessoryCode), "1", "3", "CompensatorSequence");
         addElementToDataset(result, item, new DcmDecimalString(SourceToCompensatorTrayDistance), "1", "2", "CompensatorSequence");
         addElementToDataset(result, item, new DcmCodeString(CompensatorDivergence), "1", "3", "CompensatorSequence");
         addElementToDataset(result, item, new DcmCodeString(CompensatorMountingPosition), "1", "3", "CompensatorSequence");
@@ -488,6 +495,15 @@ OFCondition DRTCompensatorSequence::Item::getSourceToCompensatorTrayDistance(Flo
 }
 
 
+OFCondition DRTCompensatorSequence::Item::getTrayAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TrayAccessoryCode, value, pos);
+}
+
+
 OFCondition DRTCompensatorSequence::Item::setAccessoryCode(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -709,6 +725,19 @@ OFCondition DRTCompensatorSequence::Item::setSourceToCompensatorTrayDistance(con
 }
 
 
+OFCondition DRTCompensatorSequence::Item::setTrayAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = TrayAccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTCompensatorSequence::DRTCompensatorSequence(const OFBool emptyDefaultSequence)
@@ -812,7 +841,7 @@ OFBool DRTCompensatorSequence::isValid() const
 }
 
 
-unsigned long DRTCompensatorSequence::getNumberOfItems() const
+size_t DRTCompensatorSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -842,12 +871,12 @@ OFCondition DRTCompensatorSequence::gotoNextItem()
 }
 
 
-OFCondition DRTCompensatorSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTCompensatorSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -862,12 +891,12 @@ OFCondition DRTCompensatorSequence::gotoItem(const unsigned long num, OFListIter
 }
 
 
-OFCondition DRTCompensatorSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTCompensatorSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -882,7 +911,7 @@ OFCondition DRTCompensatorSequence::gotoItem(const unsigned long num, OFListCons
 }
 
 
-OFCondition DRTCompensatorSequence::gotoItem(const unsigned long num)
+OFCondition DRTCompensatorSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -918,7 +947,7 @@ const DRTCompensatorSequence::Item &DRTCompensatorSequence::getCurrentItem() con
 }
 
 
-OFCondition DRTCompensatorSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTCompensatorSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -928,7 +957,7 @@ OFCondition DRTCompensatorSequence::getItem(const unsigned long num, Item *&item
 }
 
 
-DRTCompensatorSequence::Item &DRTCompensatorSequence::getItem(const unsigned long num)
+DRTCompensatorSequence::Item &DRTCompensatorSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -938,7 +967,7 @@ DRTCompensatorSequence::Item &DRTCompensatorSequence::getItem(const unsigned lon
 }
 
 
-const DRTCompensatorSequence::Item &DRTCompensatorSequence::getItem(const unsigned long num) const
+const DRTCompensatorSequence::Item &DRTCompensatorSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -948,13 +977,13 @@ const DRTCompensatorSequence::Item &DRTCompensatorSequence::getItem(const unsign
 }
 
 
-DRTCompensatorSequence::Item &DRTCompensatorSequence::operator[](const unsigned long num)
+DRTCompensatorSequence::Item &DRTCompensatorSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTCompensatorSequence::Item &DRTCompensatorSequence::operator[](const unsigned long num) const
+const DRTCompensatorSequence::Item &DRTCompensatorSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -977,7 +1006,7 @@ OFCondition DRTCompensatorSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTCompensatorSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTCompensatorSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -1000,7 +1029,7 @@ OFCondition DRTCompensatorSequence::insertItem(const unsigned long pos, Item *&i
 }
 
 
-OFCondition DRTCompensatorSequence::removeItem(const unsigned long pos)
+OFCondition DRTCompensatorSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcpas.cc b/dcmrt/libsrc/drtcpas.cc
index 09b601c..99f7292 100644
--- a/dcmrt/libsrc/drtcpas.cc
+++ b/dcmrt/libsrc/drtcpas.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCorrectedParameterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -314,7 +314,7 @@ OFBool DRTCorrectedParameterSequence::isValid() const
 }
 
 
-unsigned long DRTCorrectedParameterSequence::getNumberOfItems() const
+size_t DRTCorrectedParameterSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -344,12 +344,12 @@ OFCondition DRTCorrectedParameterSequence::gotoNextItem()
 }
 
 
-OFCondition DRTCorrectedParameterSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTCorrectedParameterSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -364,12 +364,12 @@ OFCondition DRTCorrectedParameterSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTCorrectedParameterSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTCorrectedParameterSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -384,7 +384,7 @@ OFCondition DRTCorrectedParameterSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTCorrectedParameterSequence::gotoItem(const unsigned long num)
+OFCondition DRTCorrectedParameterSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -420,7 +420,7 @@ const DRTCorrectedParameterSequence::Item &DRTCorrectedParameterSequence::getCur
 }
 
 
-OFCondition DRTCorrectedParameterSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTCorrectedParameterSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -430,7 +430,7 @@ OFCondition DRTCorrectedParameterSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTCorrectedParameterSequence::Item &DRTCorrectedParameterSequence::getItem(const unsigned long num)
+DRTCorrectedParameterSequence::Item &DRTCorrectedParameterSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -440,7 +440,7 @@ DRTCorrectedParameterSequence::Item &DRTCorrectedParameterSequence::getItem(cons
 }
 
 
-const DRTCorrectedParameterSequence::Item &DRTCorrectedParameterSequence::getItem(const unsigned long num) const
+const DRTCorrectedParameterSequence::Item &DRTCorrectedParameterSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -450,13 +450,13 @@ const DRTCorrectedParameterSequence::Item &DRTCorrectedParameterSequence::getIte
 }
 
 
-DRTCorrectedParameterSequence::Item &DRTCorrectedParameterSequence::operator[](const unsigned long num)
+DRTCorrectedParameterSequence::Item &DRTCorrectedParameterSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTCorrectedParameterSequence::Item &DRTCorrectedParameterSequence::operator[](const unsigned long num) const
+const DRTCorrectedParameterSequence::Item &DRTCorrectedParameterSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -479,7 +479,7 @@ OFCondition DRTCorrectedParameterSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTCorrectedParameterSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTCorrectedParameterSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -502,7 +502,7 @@ OFCondition DRTCorrectedParameterSequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTCorrectedParameterSequence::removeItem(const unsigned long pos)
+OFCondition DRTCorrectedParameterSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcpis.cc b/dcmrt/libsrc/drtcpis.cc
index 8ca6f86..c6914ff 100644
--- a/dcmrt/libsrc/drtcpis.cc
+++ b/dcmrt/libsrc/drtcpis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConsultingPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -352,7 +352,7 @@ OFBool DRTConsultingPhysicianIdentificationSequence::isValid() const
 }
 
 
-unsigned long DRTConsultingPhysicianIdentificationSequence::getNumberOfItems() const
+size_t DRTConsultingPhysicianIdentificationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -382,12 +382,12 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::gotoNextItem()
 }
 
 
-OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -402,12 +402,12 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const unsigne
 }
 
 
-OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -422,7 +422,7 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const unsigne
 }
 
 
-OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const unsigned long num)
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -458,7 +458,7 @@ const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysician
 }
 
 
-OFCondition DRTConsultingPhysicianIdentificationSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTConsultingPhysicianIdentificationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -468,7 +468,7 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::getItem(const unsigned
 }
 
 
-DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getItem(const unsigned long num)
+DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -478,7 +478,7 @@ DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdenti
 }
 
 
-const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getItem(const unsigned long num) const
+const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -488,13 +488,13 @@ const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysician
 }
 
 
-DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::operator[](const unsigned long num)
+DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::operator[](const unsigned long num) const
+const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -517,7 +517,7 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTConsultingPhysicianIdentificationSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTConsultingPhysicianIdentificationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -540,7 +540,7 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::insertItem(const unsig
 }
 
 
-OFCondition DRTConsultingPhysicianIdentificationSequence::removeItem(const unsigned long pos)
+OFCondition DRTConsultingPhysicianIdentificationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcps.cc b/dcmrt/libsrc/drtcps.cc
index c3d295a..241aac6 100644
--- a/dcmrt/libsrc/drtcps.cc
+++ b/dcmrt/libsrc/drtcps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -1137,7 +1137,7 @@ OFBool DRTControlPointSequence::isValid() const
 }
 
 
-unsigned long DRTControlPointSequence::getNumberOfItems() const
+size_t DRTControlPointSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -1167,12 +1167,12 @@ OFCondition DRTControlPointSequence::gotoNextItem()
 }
 
 
-OFCondition DRTControlPointSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTControlPointSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1187,12 +1187,12 @@ OFCondition DRTControlPointSequence::gotoItem(const unsigned long num, OFListIte
 }
 
 
-OFCondition DRTControlPointSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTControlPointSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1207,7 +1207,7 @@ OFCondition DRTControlPointSequence::gotoItem(const unsigned long num, OFListCon
 }
 
 
-OFCondition DRTControlPointSequence::gotoItem(const unsigned long num)
+OFCondition DRTControlPointSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -1243,7 +1243,7 @@ const DRTControlPointSequence::Item &DRTControlPointSequence::getCurrentItem() c
 }
 
 
-OFCondition DRTControlPointSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTControlPointSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -1253,7 +1253,7 @@ OFCondition DRTControlPointSequence::getItem(const unsigned long num, Item *&ite
 }
 
 
-DRTControlPointSequence::Item &DRTControlPointSequence::getItem(const unsigned long num)
+DRTControlPointSequence::Item &DRTControlPointSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1263,7 +1263,7 @@ DRTControlPointSequence::Item &DRTControlPointSequence::getItem(const unsigned l
 }
 
 
-const DRTControlPointSequence::Item &DRTControlPointSequence::getItem(const unsigned long num) const
+const DRTControlPointSequence::Item &DRTControlPointSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1273,13 +1273,13 @@ const DRTControlPointSequence::Item &DRTControlPointSequence::getItem(const unsi
 }
 
 
-DRTControlPointSequence::Item &DRTControlPointSequence::operator[](const unsigned long num)
+DRTControlPointSequence::Item &DRTControlPointSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTControlPointSequence::Item &DRTControlPointSequence::operator[](const unsigned long num) const
+const DRTControlPointSequence::Item &DRTControlPointSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -1302,7 +1302,7 @@ OFCondition DRTControlPointSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTControlPointSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTControlPointSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -1325,7 +1325,7 @@ OFCondition DRTControlPointSequence::insertItem(const unsigned long pos, Item *&
 }
 
 
-OFCondition DRTControlPointSequence::removeItem(const unsigned long pos)
+OFCondition DRTControlPointSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcs.cc b/dcmrt/libsrc/drtcs.cc
index c39b275..e373b25 100644
--- a/dcmrt/libsrc/drtcs.cc
+++ b/dcmrt/libsrc/drtcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -475,7 +475,7 @@ OFBool DRTContourSequence::isValid() const
 }
 
 
-unsigned long DRTContourSequence::getNumberOfItems() const
+size_t DRTContourSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -505,12 +505,12 @@ OFCondition DRTContourSequence::gotoNextItem()
 }
 
 
-OFCondition DRTContourSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTContourSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -525,12 +525,12 @@ OFCondition DRTContourSequence::gotoItem(const unsigned long num, OFListIterator
 }
 
 
-OFCondition DRTContourSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTContourSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -545,7 +545,7 @@ OFCondition DRTContourSequence::gotoItem(const unsigned long num, OFListConstIte
 }
 
 
-OFCondition DRTContourSequence::gotoItem(const unsigned long num)
+OFCondition DRTContourSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -581,7 +581,7 @@ const DRTContourSequence::Item &DRTContourSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTContourSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTContourSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -591,7 +591,7 @@ OFCondition DRTContourSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTContourSequence::Item &DRTContourSequence::getItem(const unsigned long num)
+DRTContourSequence::Item &DRTContourSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -601,7 +601,7 @@ DRTContourSequence::Item &DRTContourSequence::getItem(const unsigned long num)
 }
 
 
-const DRTContourSequence::Item &DRTContourSequence::getItem(const unsigned long num) const
+const DRTContourSequence::Item &DRTContourSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -611,13 +611,13 @@ const DRTContourSequence::Item &DRTContourSequence::getItem(const unsigned long
 }
 
 
-DRTContourSequence::Item &DRTContourSequence::operator[](const unsigned long num)
+DRTContourSequence::Item &DRTContourSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTContourSequence::Item &DRTContourSequence::operator[](const unsigned long num) const
+const DRTContourSequence::Item &DRTContourSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -640,7 +640,7 @@ OFCondition DRTContourSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTContourSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTContourSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -663,7 +663,7 @@ OFCondition DRTContourSequence::insertItem(const unsigned long pos, Item *&item)
 }
 
 
-OFCondition DRTContourSequence::removeItem(const unsigned long pos)
+OFCondition DRTContourSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcsas.cc b/dcmrt/libsrc/drtcsas.cc
index c9bb6d2..0a6278e 100644
--- a/dcmrt/libsrc/drtcsas.cc
+++ b/dcmrt/libsrc/drtcsas.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConversionSourceAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -314,7 +314,7 @@ OFBool DRTConversionSourceAttributesSequence::isValid() const
 }
 
 
-unsigned long DRTConversionSourceAttributesSequence::getNumberOfItems() const
+size_t DRTConversionSourceAttributesSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -344,12 +344,12 @@ OFCondition DRTConversionSourceAttributesSequence::gotoNextItem()
 }
 
 
-OFCondition DRTConversionSourceAttributesSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTConversionSourceAttributesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -364,12 +364,12 @@ OFCondition DRTConversionSourceAttributesSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTConversionSourceAttributesSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTConversionSourceAttributesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -384,7 +384,7 @@ OFCondition DRTConversionSourceAttributesSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTConversionSourceAttributesSequence::gotoItem(const unsigned long num)
+OFCondition DRTConversionSourceAttributesSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -420,7 +420,7 @@ const DRTConversionSourceAttributesSequence::Item &DRTConversionSourceAttributes
 }
 
 
-OFCondition DRTConversionSourceAttributesSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTConversionSourceAttributesSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -430,7 +430,7 @@ OFCondition DRTConversionSourceAttributesSequence::getItem(const unsigned long n
 }
 
 
-DRTConversionSourceAttributesSequence::Item &DRTConversionSourceAttributesSequence::getItem(const unsigned long num)
+DRTConversionSourceAttributesSequence::Item &DRTConversionSourceAttributesSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -440,7 +440,7 @@ DRTConversionSourceAttributesSequence::Item &DRTConversionSourceAttributesSequen
 }
 
 
-const DRTConversionSourceAttributesSequence::Item &DRTConversionSourceAttributesSequence::getItem(const unsigned long num) const
+const DRTConversionSourceAttributesSequence::Item &DRTConversionSourceAttributesSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -450,13 +450,13 @@ const DRTConversionSourceAttributesSequence::Item &DRTConversionSourceAttributes
 }
 
 
-DRTConversionSourceAttributesSequence::Item &DRTConversionSourceAttributesSequence::operator[](const unsigned long num)
+DRTConversionSourceAttributesSequence::Item &DRTConversionSourceAttributesSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTConversionSourceAttributesSequence::Item &DRTConversionSourceAttributesSequence::operator[](const unsigned long num) const
+const DRTConversionSourceAttributesSequence::Item &DRTConversionSourceAttributesSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -479,7 +479,7 @@ OFCondition DRTConversionSourceAttributesSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTConversionSourceAttributesSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTConversionSourceAttributesSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -502,7 +502,7 @@ OFCondition DRTConversionSourceAttributesSequence::insertItem(const unsigned lon
 }
 
 
-OFCondition DRTConversionSourceAttributesSequence::removeItem(const unsigned long pos)
+OFCondition DRTConversionSourceAttributesSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcshs.cc b/dcmrt/libsrc/drtcshs.cc
index 4fc8d7b..1a740da 100644
--- a/dcmrt/libsrc/drtcshs.cc
+++ b/dcmrt/libsrc/drtcshs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelShieldSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -432,7 +432,7 @@ OFBool DRTChannelShieldSequence::isValid() const
 }
 
 
-unsigned long DRTChannelShieldSequence::getNumberOfItems() const
+size_t DRTChannelShieldSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -462,12 +462,12 @@ OFCondition DRTChannelShieldSequence::gotoNextItem()
 }
 
 
-OFCondition DRTChannelShieldSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTChannelShieldSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -482,12 +482,12 @@ OFCondition DRTChannelShieldSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTChannelShieldSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTChannelShieldSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -502,7 +502,7 @@ OFCondition DRTChannelShieldSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTChannelShieldSequence::gotoItem(const unsigned long num)
+OFCondition DRTChannelShieldSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -538,7 +538,7 @@ const DRTChannelShieldSequence::Item &DRTChannelShieldSequence::getCurrentItem()
 }
 
 
-OFCondition DRTChannelShieldSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTChannelShieldSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -548,7 +548,7 @@ OFCondition DRTChannelShieldSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTChannelShieldSequence::Item &DRTChannelShieldSequence::getItem(const unsigned long num)
+DRTChannelShieldSequence::Item &DRTChannelShieldSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -558,7 +558,7 @@ DRTChannelShieldSequence::Item &DRTChannelShieldSequence::getItem(const unsigned
 }
 
 
-const DRTChannelShieldSequence::Item &DRTChannelShieldSequence::getItem(const unsigned long num) const
+const DRTChannelShieldSequence::Item &DRTChannelShieldSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -568,13 +568,13 @@ const DRTChannelShieldSequence::Item &DRTChannelShieldSequence::getItem(const un
 }
 
 
-DRTChannelShieldSequence::Item &DRTChannelShieldSequence::operator[](const unsigned long num)
+DRTChannelShieldSequence::Item &DRTChannelShieldSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTChannelShieldSequence::Item &DRTChannelShieldSequence::operator[](const unsigned long num) const
+const DRTChannelShieldSequence::Item &DRTChannelShieldSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -597,7 +597,7 @@ OFCondition DRTChannelShieldSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTChannelShieldSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTChannelShieldSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -620,7 +620,7 @@ OFCondition DRTChannelShieldSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTChannelShieldSequence::removeItem(const unsigned long pos)
+OFCondition DRTChannelShieldSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcsis.cc b/dcmrt/libsrc/drtcsis.cc
index 7504daf..8a0c89b 100644
--- a/dcmrt/libsrc/drtcsis.cc
+++ b/dcmrt/libsrc/drtcsis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCodingSchemeIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -396,7 +396,7 @@ OFBool DRTCodingSchemeIdentificationSequence::isValid() const
 }
 
 
-unsigned long DRTCodingSchemeIdentificationSequence::getNumberOfItems() const
+size_t DRTCodingSchemeIdentificationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -426,12 +426,12 @@ OFCondition DRTCodingSchemeIdentificationSequence::gotoNextItem()
 }
 
 
-OFCondition DRTCodingSchemeIdentificationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTCodingSchemeIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -446,12 +446,12 @@ OFCondition DRTCodingSchemeIdentificationSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTCodingSchemeIdentificationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTCodingSchemeIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -466,7 +466,7 @@ OFCondition DRTCodingSchemeIdentificationSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTCodingSchemeIdentificationSequence::gotoItem(const unsigned long num)
+OFCondition DRTCodingSchemeIdentificationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -502,7 +502,7 @@ const DRTCodingSchemeIdentificationSequence::Item &DRTCodingSchemeIdentification
 }
 
 
-OFCondition DRTCodingSchemeIdentificationSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTCodingSchemeIdentificationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -512,7 +512,7 @@ OFCondition DRTCodingSchemeIdentificationSequence::getItem(const unsigned long n
 }
 
 
-DRTCodingSchemeIdentificationSequence::Item &DRTCodingSchemeIdentificationSequence::getItem(const unsigned long num)
+DRTCodingSchemeIdentificationSequence::Item &DRTCodingSchemeIdentificationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -522,7 +522,7 @@ DRTCodingSchemeIdentificationSequence::Item &DRTCodingSchemeIdentificationSequen
 }
 
 
-const DRTCodingSchemeIdentificationSequence::Item &DRTCodingSchemeIdentificationSequence::getItem(const unsigned long num) const
+const DRTCodingSchemeIdentificationSequence::Item &DRTCodingSchemeIdentificationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -532,13 +532,13 @@ const DRTCodingSchemeIdentificationSequence::Item &DRTCodingSchemeIdentification
 }
 
 
-DRTCodingSchemeIdentificationSequence::Item &DRTCodingSchemeIdentificationSequence::operator[](const unsigned long num)
+DRTCodingSchemeIdentificationSequence::Item &DRTCodingSchemeIdentificationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTCodingSchemeIdentificationSequence::Item &DRTCodingSchemeIdentificationSequence::operator[](const unsigned long num) const
+const DRTCodingSchemeIdentificationSequence::Item &DRTCodingSchemeIdentificationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -561,7 +561,7 @@ OFCondition DRTCodingSchemeIdentificationSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTCodingSchemeIdentificationSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTCodingSchemeIdentificationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -584,7 +584,7 @@ OFCondition DRTCodingSchemeIdentificationSequence::insertItem(const unsigned lon
 }
 
 
-OFCondition DRTCodingSchemeIdentificationSequence::removeItem(const unsigned long pos)
+OFCondition DRTCodingSchemeIdentificationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcss.cc b/dcmrt/libsrc/drtcss.cc
index 6e2b1e4..bf751dc 100644
--- a/dcmrt/libsrc/drtcss.cc
+++ b/dcmrt/libsrc/drtcss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTChannelSourceSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTChannelSourceSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTChannelSourceSequence::Item &DRTChannelSourceSequence::Item::operator=(const
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTChannelSourceSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTChannelSourceSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTChannelSourceSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ChannelSourceSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ChannelSourceSequence");
@@ -186,6 +192,7 @@ OFCondition DRTChannelSourceSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ChannelSourceSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ChannelSourceSequence");
@@ -303,6 +310,15 @@ OFCondition DRTChannelSourceSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTChannelSourceSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTChannelSourceSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTChannelSourceSequence::Item::setMappingResource(const OFString &v
 }
 
 
+OFCondition DRTChannelSourceSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTChannelSourceSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTChannelSourceSequence::isValid() const
 }
 
 
-unsigned long DRTChannelSourceSequence::getNumberOfItems() const
+size_t DRTChannelSourceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTChannelSourceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTChannelSourceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTChannelSourceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTChannelSourceSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTChannelSourceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTChannelSourceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTChannelSourceSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTChannelSourceSequence::gotoItem(const unsigned long num)
+OFCondition DRTChannelSourceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTChannelSourceSequence::Item &DRTChannelSourceSequence::getCurrentItem()
 }
 
 
-OFCondition DRTChannelSourceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTChannelSourceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTChannelSourceSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTChannelSourceSequence::Item &DRTChannelSourceSequence::getItem(const unsigned long num)
+DRTChannelSourceSequence::Item &DRTChannelSourceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTChannelSourceSequence::Item &DRTChannelSourceSequence::getItem(const unsigned
 }
 
 
-const DRTChannelSourceSequence::Item &DRTChannelSourceSequence::getItem(const unsigned long num) const
+const DRTChannelSourceSequence::Item &DRTChannelSourceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTChannelSourceSequence::Item &DRTChannelSourceSequence::getItem(const un
 }
 
 
-DRTChannelSourceSequence::Item &DRTChannelSourceSequence::operator[](const unsigned long num)
+DRTChannelSourceSequence::Item &DRTChannelSourceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTChannelSourceSequence::Item &DRTChannelSourceSequence::operator[](const unsigned long num) const
+const DRTChannelSourceSequence::Item &DRTChannelSourceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTChannelSourceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTChannelSourceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTChannelSourceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTChannelSourceSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTChannelSourceSequence::removeItem(const unsigned long pos)
+OFCondition DRTChannelSourceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdcs.cc b/dcmrt/libsrc/drtdcs.cc
index 736bd6d..19ec8f8 100644
--- a/dcmrt/libsrc/drtdcs.cc
+++ b/dcmrt/libsrc/drtdcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDerivationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTDerivationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTDerivationCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::Item::operator=(cons
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTDerivationCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTDerivationCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTDerivationCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DerivationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DerivationCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTDerivationCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "DerivationCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DerivationCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTDerivationCodeSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTDerivationCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTDerivationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTDerivationCodeSequence::Item::setMappingResource(const OFString &
 }
 
 
+OFCondition DRTDerivationCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDerivationCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTDerivationCodeSequence::isValid() const
 }
 
 
-unsigned long DRTDerivationCodeSequence::getNumberOfItems() const
+size_t DRTDerivationCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTDerivationCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTDerivationCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDerivationCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTDerivationCodeSequence::gotoItem(const unsigned long num, OFListI
 }
 
 
-OFCondition DRTDerivationCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDerivationCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTDerivationCodeSequence::gotoItem(const unsigned long num, OFListC
 }
 
 
-OFCondition DRTDerivationCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTDerivationCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::getCurrentItem
 }
 
 
-OFCondition DRTDerivationCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDerivationCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTDerivationCodeSequence::getItem(const unsigned long num, Item *&i
 }
 
 
-DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::getItem(const unsigned long num)
+DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::getItem(const unsign
 }
 
 
-const DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::getItem(const unsigned long num) const
+const DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::getItem(const
 }
 
 
-DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::operator[](const unsigned long num)
+DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::operator[](const unsigned long num) const
+const DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTDerivationCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDerivationCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDerivationCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTDerivationCodeSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTDerivationCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTDerivationCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtas6.cc b/dcmrt/libsrc/drtdddps.cc
similarity index 55%
copy from dcmrt/libsrc/drtas6.cc
copy to dcmrt/libsrc/drtdddps.cc
index 304bd0a..e83e45b 100644
--- a/dcmrt/libsrc/drtas6.cc
+++ b/dcmrt/libsrc/drtdddps.cc
@@ -1,206 +1,219 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTApplicatorSequenceInRTIonBeamsModule
+ *  Source file for class DRTDeliveredDepthDoseParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtas6.h"
+#include "dcmtk/dcmrt/seq/drtdddps.h"
 
 
 // --- item class ---
 
-DRTApplicatorSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+DRTDeliveredDepthDoseParametersSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    AccessoryCode(DCM_AccessoryCode),
-    ApplicatorDescription(DCM_ApplicatorDescription),
-    ApplicatorID(DCM_ApplicatorID),
-    ApplicatorType(DCM_ApplicatorType)
+    DeliveredDistalDepth(DCM_DeliveredDistalDepth),
+    DeliveredDistalDepthFraction(DCM_DeliveredDistalDepthFraction),
+    DeliveredNominalRangeModulatedRegionDepths(DCM_DeliveredNominalRangeModulatedRegionDepths),
+    DeliveredNominalRangeModulationFractions(DCM_DeliveredNominalRangeModulationFractions),
+    DeliveredReferenceDoseDefinition(DCM_DeliveredReferenceDoseDefinition)
 {
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
+DRTDeliveredDepthDoseParametersSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AccessoryCode(copy.AccessoryCode),
-    ApplicatorDescription(copy.ApplicatorDescription),
-    ApplicatorID(copy.ApplicatorID),
-    ApplicatorType(copy.ApplicatorType)
+    DeliveredDistalDepth(copy.DeliveredDistalDepth),
+    DeliveredDistalDepthFraction(copy.DeliveredDistalDepthFraction),
+    DeliveredNominalRangeModulatedRegionDepths(copy.DeliveredNominalRangeModulatedRegionDepths),
+    DeliveredNominalRangeModulationFractions(copy.DeliveredNominalRangeModulationFractions),
+    DeliveredReferenceDoseDefinition(copy.DeliveredReferenceDoseDefinition)
 {
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsModule::Item::~Item()
+DRTDeliveredDepthDoseParametersSequence::Item::~Item()
 {
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
+DRTDeliveredDepthDoseParametersSequence::Item &DRTDeliveredDepthDoseParametersSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        AccessoryCode = copy.AccessoryCode;
-        ApplicatorDescription = copy.ApplicatorDescription;
-        ApplicatorID = copy.ApplicatorID;
-        ApplicatorType = copy.ApplicatorType;
+        DeliveredDistalDepth = copy.DeliveredDistalDepth;
+        DeliveredDistalDepthFraction = copy.DeliveredDistalDepthFraction;
+        DeliveredNominalRangeModulatedRegionDepths = copy.DeliveredNominalRangeModulatedRegionDepths;
+        DeliveredNominalRangeModulationFractions = copy.DeliveredNominalRangeModulationFractions;
+        DeliveredReferenceDoseDefinition = copy.DeliveredReferenceDoseDefinition;
     }
     return *this;
 }
 
 
-void DRTApplicatorSequenceInRTIonBeamsModule::Item::clear()
+void DRTDeliveredDepthDoseParametersSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
-        ApplicatorID.clear();
-        AccessoryCode.clear();
-        ApplicatorType.clear();
-        ApplicatorDescription.clear();
+        DeliveredReferenceDoseDefinition.clear();
+        DeliveredDistalDepth.clear();
+        DeliveredDistalDepthFraction.clear();
+        DeliveredNominalRangeModulatedRegionDepths.clear();
+        DeliveredNominalRangeModulationFractions.clear();
     }
 }
 
 
-OFBool DRTApplicatorSequenceInRTIonBeamsModule::Item::isEmpty()
+OFBool DRTDeliveredDepthDoseParametersSequence::Item::isEmpty()
 {
-    return ApplicatorID.isEmpty() &&
-           AccessoryCode.isEmpty() &&
-           ApplicatorType.isEmpty() &&
-           ApplicatorDescription.isEmpty();
+    return DeliveredReferenceDoseDefinition.isEmpty() &&
+           DeliveredDistalDepth.isEmpty() &&
+           DeliveredDistalDepthFraction.isEmpty() &&
+           DeliveredNominalRangeModulatedRegionDepths.isEmpty() &&
+           DeliveredNominalRangeModulationFractions.isEmpty();
 }
 
 
-OFBool DRTApplicatorSequenceInRTIonBeamsModule::Item::isValid() const
+OFBool DRTDeliveredDepthDoseParametersSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence");
+        getAndCheckElementFromDataset(item, DeliveredReferenceDoseDefinition, "1", "1", "DeliveredDepthDoseParametersSequence");
+        getAndCheckElementFromDataset(item, DeliveredDistalDepth, "1", "1", "DeliveredDepthDoseParametersSequence");
+        getAndCheckElementFromDataset(item, DeliveredDistalDepthFraction, "1", "1", "DeliveredDepthDoseParametersSequence");
+        getAndCheckElementFromDataset(item, DeliveredNominalRangeModulatedRegionDepths, "2", "1C", "DeliveredDepthDoseParametersSequence");
+        getAndCheckElementFromDataset(item, DeliveredNominalRangeModulationFractions, "2", "1C", "DeliveredDepthDoseParametersSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence");
+        addElementToDataset(result, item, new DcmCodeString(DeliveredReferenceDoseDefinition), "1", "1", "DeliveredDepthDoseParametersSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(DeliveredDistalDepth), "1", "1", "DeliveredDepthDoseParametersSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(DeliveredDistalDepthFraction), "1", "1", "DeliveredDepthDoseParametersSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(DeliveredNominalRangeModulatedRegionDepths), "2", "1C", "DeliveredDepthDoseParametersSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(DeliveredNominalRangeModulationFractions), "2", "1C", "DeliveredDepthDoseParametersSequence");
     }
     return result;
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::getDeliveredDistalDepth(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(AccessoryCode, value, pos);
+        return OFconst_cast(DcmFloatingPointSingle &, DeliveredDistalDepth).getFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::getDeliveredDistalDepthFraction(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ApplicatorDescription, value, pos);
+        return OFconst_cast(DcmFloatingPointSingle &, DeliveredDistalDepthFraction).getFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorID(OFString &value, const signed long pos) const
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::getDeliveredNominalRangeModulatedRegionDepths(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ApplicatorID, value, pos);
+        return OFconst_cast(DcmFloatingPointSingle &, DeliveredNominalRangeModulatedRegionDepths).getFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorType(OFString &value, const signed long pos) const
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::getDeliveredNominalRangeModulationFractions(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ApplicatorType, value, pos);
+        return OFconst_cast(DcmFloatingPointSingle &, DeliveredNominalRangeModulationFractions).getFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::getDeliveredReferenceDoseDefinition(OFString &value, const signed long pos) const
 {
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AccessoryCode.putOFStringArray(value);
-    }
-    return result;
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeliveredReferenceDoseDefinition, value, pos);
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorDescription(const OFString &value, const OFBool check)
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::setDeliveredDistalDepth(const Float32 value, const unsigned long pos)
 {
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorDescription.putOFStringArray(value);
-    }
-    return result;
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return DeliveredDistalDepth.putFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorID(const OFString &value, const OFBool check)
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::setDeliveredDistalDepthFraction(const Float32 value, const unsigned long pos)
 {
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorID.putOFStringArray(value);
-    }
-    return result;
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return DeliveredDistalDepthFraction.putFloat32(value, pos);
+}
+
+
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::setDeliveredNominalRangeModulatedRegionDepths(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return DeliveredNominalRangeModulatedRegionDepths.putFloat32(value, pos);
+}
+
+
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::setDeliveredNominalRangeModulationFractions(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return DeliveredNominalRangeModulationFractions.putFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorType(const OFString &value, const OFBool check)
+OFCondition DRTDeliveredDepthDoseParametersSequence::Item::setDeliveredReferenceDoseDefinition(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = ApplicatorType.putOFStringArray(value);
+            result = DeliveredReferenceDoseDefinition.putOFStringArray(value);
     }
     return result;
 }
@@ -208,7 +221,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorType(con
 
 // --- sequence class ---
 
-DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
+DRTDeliveredDepthDoseParametersSequence::DRTDeliveredDepthDoseParametersSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -218,7 +231,7 @@ DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule(const DRTApplicatorSequenceInRTIonBeamsModule &copy)
+DRTDeliveredDepthDoseParametersSequence::DRTDeliveredDepthDoseParametersSequence(const DRTDeliveredDepthDoseParametersSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -244,7 +257,7 @@ DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsModule &DRTApplicatorSequenceInRTIonBeamsModule::operator=(const DRTApplicatorSequenceInRTIonBeamsModule &copy)
+DRTDeliveredDepthDoseParametersSequence &DRTDeliveredDepthDoseParametersSequence::operator=(const DRTDeliveredDepthDoseParametersSequence &copy)
 {
     if (this != &copy)
     {
@@ -272,13 +285,13 @@ DRTApplicatorSequenceInRTIonBeamsModule &DRTApplicatorSequenceInRTIonBeamsModule
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsModule::~DRTApplicatorSequenceInRTIonBeamsModule()
+DRTDeliveredDepthDoseParametersSequence::~DRTDeliveredDepthDoseParametersSequence()
 {
     clear();
 }
 
 
-void DRTApplicatorSequenceInRTIonBeamsModule::clear()
+void DRTDeliveredDepthDoseParametersSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -297,25 +310,25 @@ void DRTApplicatorSequenceInRTIonBeamsModule::clear()
 }
 
 
-OFBool DRTApplicatorSequenceInRTIonBeamsModule::isEmpty()
+OFBool DRTDeliveredDepthDoseParametersSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTApplicatorSequenceInRTIonBeamsModule::isValid() const
+OFBool DRTDeliveredDepthDoseParametersSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTApplicatorSequenceInRTIonBeamsModule::getNumberOfItems() const
+size_t DRTDeliveredDepthDoseParametersSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoFirstItem()
+OFCondition DRTDeliveredDepthDoseParametersSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -327,7 +340,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoFirstItem()
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoNextItem()
+OFCondition DRTDeliveredDepthDoseParametersSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -339,12 +352,12 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDeliveredDepthDoseParametersSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -359,12 +372,12 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const unsigned lon
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDeliveredDepthDoseParametersSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -379,13 +392,13 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const unsigned lon
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTDeliveredDepthDoseParametersSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
+OFCondition DRTDeliveredDepthDoseParametersSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -397,7 +410,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem(Item *&item)
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem()
+DRTDeliveredDepthDoseParametersSequence::Item &DRTDeliveredDepthDoseParametersSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -406,7 +419,7 @@ DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeams
 }
 
 
-const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem() const
+const DRTDeliveredDepthDoseParametersSequence::Item &DRTDeliveredDepthDoseParametersSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -415,7 +428,7 @@ const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIo
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDeliveredDepthDoseParametersSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -425,7 +438,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getItem(const unsigned long
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const unsigned long num)
+DRTDeliveredDepthDoseParametersSequence::Item &DRTDeliveredDepthDoseParametersSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -435,7 +448,7 @@ DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeams
 }
 
 
-const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const unsigned long num) const
+const DRTDeliveredDepthDoseParametersSequence::Item &DRTDeliveredDepthDoseParametersSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -445,19 +458,19 @@ const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIo
 }
 
 
-DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const unsigned long num)
+DRTDeliveredDepthDoseParametersSequence::Item &DRTDeliveredDepthDoseParametersSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const unsigned long num) const
+const DRTDeliveredDepthDoseParametersSequence::Item &DRTDeliveredDepthDoseParametersSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::addItem(Item *&item)
+OFCondition DRTDeliveredDepthDoseParametersSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -474,7 +487,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDeliveredDepthDoseParametersSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -497,7 +510,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::insertItem(const unsigned l
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTDeliveredDepthDoseParametersSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -515,7 +528,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::removeItem(const unsigned l
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::read(DcmItem &dataset,
+OFCondition DRTDeliveredDepthDoseParametersSequence::read(DcmItem &dataset,
                                                           const OFString &card,
                                                           const OFString &type,
                                                           const char *moduleName)
@@ -527,7 +540,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_DeliveredDepthDoseParametersSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -557,7 +570,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_ApplicatorSequence);
+            DcmSequenceOfItems element(DCM_DeliveredDepthDoseParametersSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -565,7 +578,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::write(DcmItem &dataset,
+OFCondition DRTDeliveredDepthDoseParametersSequence::write(DcmItem &dataset,
                                                            const OFString &card,
                                                            const OFString &type,
                                                            const char *moduleName)
@@ -574,7 +587,7 @@ OFCondition DRTApplicatorSequenceInRTIonBeamsModule::write(DcmItem &dataset,
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DeliveredDepthDoseParametersSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtags.cc b/dcmrt/libsrc/drtddps.cc
similarity index 59%
copy from dcmrt/libsrc/drtags.cc
copy to dcmrt/libsrc/drtddps.cc
index d84ca15..c6c14cd 100644
--- a/dcmrt/libsrc/drtags.cc
+++ b/dcmrt/libsrc/drtddps.cc
@@ -1,202 +1,227 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTApplicatorGeometrySequence
+ *  Source file for class DRTDepthDoseParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtags.h"
+#include "dcmtk/dcmrt/seq/drtddps.h"
 
 
 // --- item class ---
 
-DRTApplicatorGeometrySequence::Item::Item(const OFBool emptyDefaultItem)
+DRTDepthDoseParametersSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    ApplicatorApertureShape(DCM_ApplicatorApertureShape),
-    ApplicatorOpening(DCM_ApplicatorOpening),
-    ApplicatorOpeningX(DCM_ApplicatorOpeningX),
-    ApplicatorOpeningY(DCM_ApplicatorOpeningY)
+    DistalDepth(DCM_DistalDepth),
+    DistalDepthFraction(DCM_DistalDepthFraction),
+    NominalRangeModulatedRegionDepths(DCM_NominalRangeModulatedRegionDepths),
+    NominalRangeModulationFractions(DCM_NominalRangeModulationFractions),
+    ReferenceDoseDefinition(DCM_ReferenceDoseDefinition)
 {
 }
 
 
-DRTApplicatorGeometrySequence::Item::Item(const Item &copy)
+DRTDepthDoseParametersSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ApplicatorApertureShape(copy.ApplicatorApertureShape),
-    ApplicatorOpening(copy.ApplicatorOpening),
-    ApplicatorOpeningX(copy.ApplicatorOpeningX),
-    ApplicatorOpeningY(copy.ApplicatorOpeningY)
+    DistalDepth(copy.DistalDepth),
+    DistalDepthFraction(copy.DistalDepthFraction),
+    NominalRangeModulatedRegionDepths(copy.NominalRangeModulatedRegionDepths),
+    NominalRangeModulationFractions(copy.NominalRangeModulationFractions),
+    ReferenceDoseDefinition(copy.ReferenceDoseDefinition)
 {
 }
 
 
-DRTApplicatorGeometrySequence::Item::~Item()
+DRTDepthDoseParametersSequence::Item::~Item()
 {
 }
 
 
-DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::Item::operator=(const Item &copy)
+DRTDepthDoseParametersSequence::Item &DRTDepthDoseParametersSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        ApplicatorApertureShape = copy.ApplicatorApertureShape;
-        ApplicatorOpening = copy.ApplicatorOpening;
-        ApplicatorOpeningX = copy.ApplicatorOpeningX;
-        ApplicatorOpeningY = copy.ApplicatorOpeningY;
+        DistalDepth = copy.DistalDepth;
+        DistalDepthFraction = copy.DistalDepthFraction;
+        NominalRangeModulatedRegionDepths = copy.NominalRangeModulatedRegionDepths;
+        NominalRangeModulationFractions = copy.NominalRangeModulationFractions;
+        ReferenceDoseDefinition = copy.ReferenceDoseDefinition;
     }
     return *this;
 }
 
 
-void DRTApplicatorGeometrySequence::Item::clear()
+void DRTDepthDoseParametersSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
-        ApplicatorApertureShape.clear();
-        ApplicatorOpening.clear();
-        ApplicatorOpeningX.clear();
-        ApplicatorOpeningY.clear();
+        ReferenceDoseDefinition.clear();
+        DistalDepth.clear();
+        DistalDepthFraction.clear();
+        NominalRangeModulatedRegionDepths.clear();
+        NominalRangeModulationFractions.clear();
     }
 }
 
 
-OFBool DRTApplicatorGeometrySequence::Item::isEmpty()
+OFBool DRTDepthDoseParametersSequence::Item::isEmpty()
 {
-    return ApplicatorApertureShape.isEmpty() &&
-           ApplicatorOpening.isEmpty() &&
-           ApplicatorOpeningX.isEmpty() &&
-           ApplicatorOpeningY.isEmpty();
+    return ReferenceDoseDefinition.isEmpty() &&
+           DistalDepth.isEmpty() &&
+           DistalDepthFraction.isEmpty() &&
+           NominalRangeModulatedRegionDepths.isEmpty() &&
+           NominalRangeModulationFractions.isEmpty();
 }
 
 
-OFBool DRTApplicatorGeometrySequence::Item::isValid() const
+OFBool DRTDepthDoseParametersSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::Item::read(DcmItem &item)
+OFCondition DRTDepthDoseParametersSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, ApplicatorApertureShape, "1", "1", "ApplicatorGeometrySequence");
-        getAndCheckElementFromDataset(item, ApplicatorOpening, "1", "1C", "ApplicatorGeometrySequence");
-        getAndCheckElementFromDataset(item, ApplicatorOpeningX, "1", "1C", "ApplicatorGeometrySequence");
-        getAndCheckElementFromDataset(item, ApplicatorOpeningY, "1", "1C", "ApplicatorGeometrySequence");
+        getAndCheckElementFromDataset(item, ReferenceDoseDefinition, "1", "1", "DepthDoseParametersSequence");
+        getAndCheckElementFromDataset(item, DistalDepth, "1", "1", "DepthDoseParametersSequence");
+        getAndCheckElementFromDataset(item, DistalDepthFraction, "1", "1", "DepthDoseParametersSequence");
+        getAndCheckElementFromDataset(item, NominalRangeModulatedRegionDepths, "2", "1C", "DepthDoseParametersSequence");
+        getAndCheckElementFromDataset(item, NominalRangeModulationFractions, "2", "1C", "DepthDoseParametersSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::Item::write(DcmItem &item)
+OFCondition DRTDepthDoseParametersSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmCodeString(ApplicatorApertureShape), "1", "1", "ApplicatorGeometrySequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(ApplicatorOpening), "1", "1C", "ApplicatorGeometrySequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(ApplicatorOpeningX), "1", "1C", "ApplicatorGeometrySequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(ApplicatorOpeningY), "1", "1C", "ApplicatorGeometrySequence");
+        addElementToDataset(result, item, new DcmCodeString(ReferenceDoseDefinition), "1", "1", "DepthDoseParametersSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(DistalDepth), "1", "1", "DepthDoseParametersSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(DistalDepthFraction), "1", "1", "DepthDoseParametersSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(NominalRangeModulatedRegionDepths), "2", "1C", "DepthDoseParametersSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(NominalRangeModulationFractions), "2", "1C", "DepthDoseParametersSequence");
     }
     return result;
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::Item::getApplicatorApertureShape(OFString &value, const signed long pos) const
+OFCondition DRTDepthDoseParametersSequence::Item::getDistalDepth(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ApplicatorApertureShape, value, pos);
+        return OFconst_cast(DcmFloatingPointSingle &, DistalDepth).getFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::Item::getApplicatorOpening(Float32 &value, const unsigned long pos) const
+OFCondition DRTDepthDoseParametersSequence::Item::getDistalDepthFraction(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return OFconst_cast(DcmFloatingPointSingle &, ApplicatorOpening).getFloat32(value, pos);
+        return OFconst_cast(DcmFloatingPointSingle &, DistalDepthFraction).getFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::Item::getApplicatorOpeningX(Float32 &value, const unsigned long pos) const
+OFCondition DRTDepthDoseParametersSequence::Item::getNominalRangeModulatedRegionDepths(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return OFconst_cast(DcmFloatingPointSingle &, ApplicatorOpeningX).getFloat32(value, pos);
+        return OFconst_cast(DcmFloatingPointSingle &, NominalRangeModulatedRegionDepths).getFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::Item::getApplicatorOpeningY(Float32 &value, const unsigned long pos) const
+OFCondition DRTDepthDoseParametersSequence::Item::getNominalRangeModulationFractions(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return OFconst_cast(DcmFloatingPointSingle &, ApplicatorOpeningY).getFloat32(value, pos);
+        return OFconst_cast(DcmFloatingPointSingle &, NominalRangeModulationFractions).getFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::Item::setApplicatorApertureShape(const OFString &value, const OFBool check)
+OFCondition DRTDepthDoseParametersSequence::Item::getReferenceDoseDefinition(OFString &value, const signed long pos) const
 {
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorApertureShape.putOFStringArray(value);
-    }
-    return result;
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferenceDoseDefinition, value, pos);
+}
+
+
+OFCondition DRTDepthDoseParametersSequence::Item::setDistalDepth(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return DistalDepth.putFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::Item::setApplicatorOpening(const Float32 value, const unsigned long pos)
+OFCondition DRTDepthDoseParametersSequence::Item::setDistalDepthFraction(const Float32 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return ApplicatorOpening.putFloat32(value, pos);
+        return DistalDepthFraction.putFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::Item::setApplicatorOpeningX(const Float32 value, const unsigned long pos)
+OFCondition DRTDepthDoseParametersSequence::Item::setNominalRangeModulatedRegionDepths(const Float32 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return ApplicatorOpeningX.putFloat32(value, pos);
+        return NominalRangeModulatedRegionDepths.putFloat32(value, pos);
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::Item::setApplicatorOpeningY(const Float32 value, const unsigned long pos)
+OFCondition DRTDepthDoseParametersSequence::Item::setNominalRangeModulationFractions(const Float32 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return ApplicatorOpeningY.putFloat32(value, pos);
+        return NominalRangeModulationFractions.putFloat32(value, pos);
+}
+
+
+OFCondition DRTDepthDoseParametersSequence::Item::setReferenceDoseDefinition(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferenceDoseDefinition.putOFStringArray(value);
+    }
+    return result;
 }
 
 
 // --- sequence class ---
 
-DRTApplicatorGeometrySequence::DRTApplicatorGeometrySequence(const OFBool emptyDefaultSequence)
+DRTDepthDoseParametersSequence::DRTDepthDoseParametersSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -206,7 +231,7 @@ DRTApplicatorGeometrySequence::DRTApplicatorGeometrySequence(const OFBool emptyD
 }
 
 
-DRTApplicatorGeometrySequence::DRTApplicatorGeometrySequence(const DRTApplicatorGeometrySequence &copy)
+DRTDepthDoseParametersSequence::DRTDepthDoseParametersSequence(const DRTDepthDoseParametersSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -232,7 +257,7 @@ DRTApplicatorGeometrySequence::DRTApplicatorGeometrySequence(const DRTApplicator
 }
 
 
-DRTApplicatorGeometrySequence &DRTApplicatorGeometrySequence::operator=(const DRTApplicatorGeometrySequence &copy)
+DRTDepthDoseParametersSequence &DRTDepthDoseParametersSequence::operator=(const DRTDepthDoseParametersSequence &copy)
 {
     if (this != &copy)
     {
@@ -260,13 +285,13 @@ DRTApplicatorGeometrySequence &DRTApplicatorGeometrySequence::operator=(const DR
 }
 
 
-DRTApplicatorGeometrySequence::~DRTApplicatorGeometrySequence()
+DRTDepthDoseParametersSequence::~DRTDepthDoseParametersSequence()
 {
     clear();
 }
 
 
-void DRTApplicatorGeometrySequence::clear()
+void DRTDepthDoseParametersSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -285,25 +310,25 @@ void DRTApplicatorGeometrySequence::clear()
 }
 
 
-OFBool DRTApplicatorGeometrySequence::isEmpty()
+OFBool DRTDepthDoseParametersSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTApplicatorGeometrySequence::isValid() const
+OFBool DRTDepthDoseParametersSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTApplicatorGeometrySequence::getNumberOfItems() const
+size_t DRTDepthDoseParametersSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::gotoFirstItem()
+OFCondition DRTDepthDoseParametersSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -315,7 +340,7 @@ OFCondition DRTApplicatorGeometrySequence::gotoFirstItem()
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::gotoNextItem()
+OFCondition DRTDepthDoseParametersSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -327,12 +352,12 @@ OFCondition DRTApplicatorGeometrySequence::gotoNextItem()
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDepthDoseParametersSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -347,12 +372,12 @@ OFCondition DRTApplicatorGeometrySequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDepthDoseParametersSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -367,13 +392,13 @@ OFCondition DRTApplicatorGeometrySequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::gotoItem(const unsigned long num)
+OFCondition DRTDepthDoseParametersSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::getCurrentItem(Item *&item) const
+OFCondition DRTDepthDoseParametersSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -385,7 +410,7 @@ OFCondition DRTApplicatorGeometrySequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getCurrentItem()
+DRTDepthDoseParametersSequence::Item &DRTDepthDoseParametersSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -394,7 +419,7 @@ DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getCurrentIt
 }
 
 
-const DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getCurrentItem() const
+const DRTDepthDoseParametersSequence::Item &DRTDepthDoseParametersSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -403,7 +428,7 @@ const DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getCur
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDepthDoseParametersSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -413,7 +438,7 @@ OFCondition DRTApplicatorGeometrySequence::getItem(const unsigned long num, Item
 }
 
 
-DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getItem(const unsigned long num)
+DRTDepthDoseParametersSequence::Item &DRTDepthDoseParametersSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -423,7 +448,7 @@ DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getItem(cons
 }
 
 
-const DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getItem(const unsigned long num) const
+const DRTDepthDoseParametersSequence::Item &DRTDepthDoseParametersSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -433,19 +458,19 @@ const DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::getIte
 }
 
 
-DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::operator[](const unsigned long num)
+DRTDepthDoseParametersSequence::Item &DRTDepthDoseParametersSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTApplicatorGeometrySequence::Item &DRTApplicatorGeometrySequence::operator[](const unsigned long num) const
+const DRTDepthDoseParametersSequence::Item &DRTDepthDoseParametersSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::addItem(Item *&item)
+OFCondition DRTDepthDoseParametersSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -462,7 +487,7 @@ OFCondition DRTApplicatorGeometrySequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDepthDoseParametersSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -485,7 +510,7 @@ OFCondition DRTApplicatorGeometrySequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::removeItem(const unsigned long pos)
+OFCondition DRTDepthDoseParametersSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -503,10 +528,10 @@ OFCondition DRTApplicatorGeometrySequence::removeItem(const unsigned long pos)
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::read(DcmItem &dataset,
-                                                const OFString &card,
-                                                const OFString &type,
-                                                const char *moduleName)
+OFCondition DRTDepthDoseParametersSequence::read(DcmItem &dataset,
+                                                 const OFString &card,
+                                                 const OFString &type,
+                                                 const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -515,7 +540,7 @@ OFCondition DRTApplicatorGeometrySequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ApplicatorGeometrySequence, sequence);
+        result = dataset.findAndGetSequence(DCM_DepthDoseParametersSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -545,7 +570,7 @@ OFCondition DRTApplicatorGeometrySequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_ApplicatorGeometrySequence);
+            DcmSequenceOfItems element(DCM_DepthDoseParametersSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -553,16 +578,16 @@ OFCondition DRTApplicatorGeometrySequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTApplicatorGeometrySequence::write(DcmItem &dataset,
-                                                 const OFString &card,
-                                                 const OFString &type,
-                                                 const char *moduleName)
+OFCondition DRTDepthDoseParametersSequence::write(DcmItem &dataset,
+                                                  const OFString &card,
+                                                  const OFString &type,
+                                                  const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorGeometrySequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DepthDoseParametersSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtdias.cc b/dcmrt/libsrc/drtdias.cc
index 70d3afb..2bf0975 100644
--- a/dcmrt/libsrc/drtdias.cc
+++ b/dcmrt/libsrc/drtdias.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDeidentificationActionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -247,7 +247,7 @@ OFBool DRTDeidentificationActionSequence::isValid() const
 }
 
 
-unsigned long DRTDeidentificationActionSequence::getNumberOfItems() const
+size_t DRTDeidentificationActionSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -277,12 +277,12 @@ OFCondition DRTDeidentificationActionSequence::gotoNextItem()
 }
 
 
-OFCondition DRTDeidentificationActionSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDeidentificationActionSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -297,12 +297,12 @@ OFCondition DRTDeidentificationActionSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTDeidentificationActionSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDeidentificationActionSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -317,7 +317,7 @@ OFCondition DRTDeidentificationActionSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTDeidentificationActionSequence::gotoItem(const unsigned long num)
+OFCondition DRTDeidentificationActionSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -353,7 +353,7 @@ const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence
 }
 
 
-OFCondition DRTDeidentificationActionSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDeidentificationActionSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -363,7 +363,7 @@ OFCondition DRTDeidentificationActionSequence::getItem(const unsigned long num,
 }
 
 
-DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getItem(const unsigned long num)
+DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -373,7 +373,7 @@ DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getI
 }
 
 
-const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getItem(const unsigned long num) const
+const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -383,13 +383,13 @@ const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence
 }
 
 
-DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::operator[](const unsigned long num)
+DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::operator[](const unsigned long num) const
+const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -412,7 +412,7 @@ OFCondition DRTDeidentificationActionSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDeidentificationActionSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDeidentificationActionSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -435,7 +435,7 @@ OFCondition DRTDeidentificationActionSequence::insertItem(const unsigned long po
 }
 
 
-OFCondition DRTDeidentificationActionSequence::removeItem(const unsigned long pos)
+OFCondition DRTDeidentificationActionSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdimcs.cc b/dcmrt/libsrc/drtdimcs.cc
index 05fcc5b..34e3c04 100644
--- a/dcmrt/libsrc/drtdimcs.cc
+++ b/dcmrt/libsrc/drtdimcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDeidentificationMethodCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTDeidentificationMethodCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTDeidentificationMethodCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequen
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTDeidentificationMethodCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTDeidentificationMethodCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DeidentificationMethodCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DeidentificationMethodCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "DeidentificationMethodCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DeidentificationMethodCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::getMappingResource(OFSt
 }
 
 
+OFCondition DRTDeidentificationMethodCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTDeidentificationMethodCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::setMappingResource(cons
 }
 
 
+OFCondition DRTDeidentificationMethodCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDeidentificationMethodCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTDeidentificationMethodCodeSequence::isValid() const
 }
 
 
-unsigned long DRTDeidentificationMethodCodeSequence::getNumberOfItems() const
+size_t DRTDeidentificationMethodCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTDeidentificationMethodCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTDeidentificationMethodCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDeidentificationMethodCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTDeidentificationMethodCodeSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTDeidentificationMethodCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDeidentificationMethodCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTDeidentificationMethodCodeSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTDeidentificationMethodCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTDeidentificationMethodCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCode
 }
 
 
-OFCondition DRTDeidentificationMethodCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDeidentificationMethodCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTDeidentificationMethodCodeSequence::getItem(const unsigned long n
 }
 
 
-DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequence::getItem(const unsigned long num)
+DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequen
 }
 
 
-const DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequence::getItem(const unsigned long num) const
+const DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCode
 }
 
 
-DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequence::operator[](const unsigned long num)
+DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequence::operator[](const unsigned long num) const
+const DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTDeidentificationMethodCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDeidentificationMethodCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDeidentificationMethodCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTDeidentificationMethodCodeSequence::insertItem(const unsigned lon
 }
 
 
-OFCondition DRTDeidentificationMethodCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTDeidentificationMethodCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdimrs.cc b/dcmrt/libsrc/drtdimrs.cc
index 89620c1..fde7162 100644
--- a/dcmrt/libsrc/drtdimrs.cc
+++ b/dcmrt/libsrc/drtdimrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDICOMMediaRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTDICOMMediaRetrievalSequence::isValid() const
 }
 
 
-unsigned long DRTDICOMMediaRetrievalSequence::getNumberOfItems() const
+size_t DRTDICOMMediaRetrievalSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTDICOMMediaRetrievalSequence::gotoNextItem()
 }
 
 
-OFCondition DRTDICOMMediaRetrievalSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDICOMMediaRetrievalSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTDICOMMediaRetrievalSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTDICOMMediaRetrievalSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDICOMMediaRetrievalSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTDICOMMediaRetrievalSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTDICOMMediaRetrievalSequence::gotoItem(const unsigned long num)
+OFCondition DRTDICOMMediaRetrievalSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTDICOMMediaRetrievalSequence::Item &DRTDICOMMediaRetrievalSequence::getC
 }
 
 
-OFCondition DRTDICOMMediaRetrievalSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDICOMMediaRetrievalSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTDICOMMediaRetrievalSequence::getItem(const unsigned long num, Ite
 }
 
 
-DRTDICOMMediaRetrievalSequence::Item &DRTDICOMMediaRetrievalSequence::getItem(const unsigned long num)
+DRTDICOMMediaRetrievalSequence::Item &DRTDICOMMediaRetrievalSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTDICOMMediaRetrievalSequence::Item &DRTDICOMMediaRetrievalSequence::getItem(co
 }
 
 
-const DRTDICOMMediaRetrievalSequence::Item &DRTDICOMMediaRetrievalSequence::getItem(const unsigned long num) const
+const DRTDICOMMediaRetrievalSequence::Item &DRTDICOMMediaRetrievalSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTDICOMMediaRetrievalSequence::Item &DRTDICOMMediaRetrievalSequence::getI
 }
 
 
-DRTDICOMMediaRetrievalSequence::Item &DRTDICOMMediaRetrievalSequence::operator[](const unsigned long num)
+DRTDICOMMediaRetrievalSequence::Item &DRTDICOMMediaRetrievalSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTDICOMMediaRetrievalSequence::Item &DRTDICOMMediaRetrievalSequence::operator[](const unsigned long num) const
+const DRTDICOMMediaRetrievalSequence::Item &DRTDICOMMediaRetrievalSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTDICOMMediaRetrievalSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDICOMMediaRetrievalSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDICOMMediaRetrievalSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTDICOMMediaRetrievalSequence::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTDICOMMediaRetrievalSequence::removeItem(const unsigned long pos)
+OFCondition DRTDICOMMediaRetrievalSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdirs.cc b/dcmrt/libsrc/drtdirs.cc
index 1d28f30..9e75110 100644
--- a/dcmrt/libsrc/drtdirs.cc
+++ b/dcmrt/libsrc/drtdirs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDICOMRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -222,7 +222,7 @@ OFBool DRTDICOMRetrievalSequence::isValid() const
 }
 
 
-unsigned long DRTDICOMRetrievalSequence::getNumberOfItems() const
+size_t DRTDICOMRetrievalSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -252,12 +252,12 @@ OFCondition DRTDICOMRetrievalSequence::gotoNextItem()
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDICOMRetrievalSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -272,12 +272,12 @@ OFCondition DRTDICOMRetrievalSequence::gotoItem(const unsigned long num, OFListI
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDICOMRetrievalSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -292,7 +292,7 @@ OFCondition DRTDICOMRetrievalSequence::gotoItem(const unsigned long num, OFListC
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::gotoItem(const unsigned long num)
+OFCondition DRTDICOMRetrievalSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -328,7 +328,7 @@ const DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getCurrentItem
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDICOMRetrievalSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -338,7 +338,7 @@ OFCondition DRTDICOMRetrievalSequence::getItem(const unsigned long num, Item *&i
 }
 
 
-DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getItem(const unsigned long num)
+DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -348,7 +348,7 @@ DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getItem(const unsign
 }
 
 
-const DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getItem(const unsigned long num) const
+const DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -358,13 +358,13 @@ const DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getItem(const
 }
 
 
-DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::operator[](const unsigned long num)
+DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::operator[](const unsigned long num) const
+const DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -387,7 +387,7 @@ OFCondition DRTDICOMRetrievalSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDICOMRetrievalSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -410,7 +410,7 @@ OFCondition DRTDICOMRetrievalSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::removeItem(const unsigned long pos)
+OFCondition DRTDICOMRetrievalSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdose.cc b/dcmrt/libsrc/drtdose.cc
index aee5980..64e76b3 100644
--- a/dcmrt/libsrc/drtdose.cc
+++ b/dcmrt/libsrc/drtdose.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDoseIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -23,6 +23,9 @@ DRTDoseIOD::DRTDoseIOD()
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
     PatientBirthDate(DCM_PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(DCM_PatientAlternativeCalendar),
     PatientSex(DCM_PatientSex),
     ReferencedPatientPhotoSequence(),
     QualityControlSubject(DCM_QualityControlSubject),
@@ -38,12 +41,19 @@ DRTDoseIOD::DRTDoseIOD()
     PatientBreedDescription(DCM_PatientBreedDescription),
     PatientBreedCodeSequence(),
     BreedRegistrationSequence(),
+    StrainDescription(DCM_StrainDescription),
+    StrainNomenclature(DCM_StrainNomenclature),
+    StrainCodeSequence(),
+    StrainAdditionalInformation(DCM_StrainAdditionalInformation),
+    StrainStockSequence(),
     ResponsiblePerson(DCM_ResponsiblePerson),
     ResponsiblePersonRole(DCM_ResponsiblePersonRole),
     ResponsibleOrganization(DCM_ResponsibleOrganization),
     PatientIdentityRemoved(DCM_PatientIdentityRemoved),
     DeidentificationMethod(DCM_DeidentificationMethod),
     DeidentificationMethodCodeSequence(),
+    SourcePatientGroupIdentificationSequence(),
+    GroupOfPatientsIdentificationSequence(),
     ClinicalTrialSponsorName(DCM_ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(DCM_ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(DCM_ClinicalTrialProtocolName),
@@ -77,7 +87,16 @@ DRTDoseIOD::DRTDoseIOD()
     PatientAge(DCM_PatientAge),
     PatientSize(DCM_PatientSize),
     PatientWeight(DCM_PatientWeight),
+    PatientBodyMassIndex(DCM_PatientBodyMassIndex),
+    MeasuredAPDimension(DCM_MeasuredAPDimension),
+    MeasuredLateralDimension(DCM_MeasuredLateralDimension),
     PatientSizeCodeSequence(),
+    MedicalAlerts(DCM_MedicalAlerts),
+    Allergies(DCM_Allergies),
+    SmokingStatus(DCM_SmokingStatus),
+    PregnancyStatus(DCM_PregnancyStatus),
+    LastMenstrualDate(DCM_LastMenstrualDate),
+    PatientState(DCM_PatientState),
     Occupation(DCM_Occupation),
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
@@ -97,6 +116,7 @@ DRTDoseIOD::DRTDoseIOD()
     SeriesDescription(DCM_SeriesDescription),
     SeriesDescriptionCodeSequence(),
     OperatorsName(DCM_OperatorsName),
+    OperatorIdentificationSequence(),
     ReferencedPerformedProcedureStepSequence(),
     RequestAttributesSequence(),
     PerformedProcedureStepID(DCM_PerformedProcedureStepID),
@@ -121,6 +141,7 @@ DRTDoseIOD::DRTDoseIOD()
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
+    UDISequence(),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -133,9 +154,6 @@ DRTDoseIOD::DRTDoseIOD()
     AcquisitionDate(DCM_AcquisitionDate),
     AcquisitionTime(DCM_AcquisitionTime),
     AcquisitionDateTime(DCM_AcquisitionDateTime),
-    ReferencedImageSequence(),
-    DerivationDescription(DCM_DerivationDescription),
-    SourceImageSequence(),
     ImagesInAcquisition(DCM_ImagesInAcquisition),
     ImageComments(DCM_ImageComments),
     QualityControlImage(DCM_QualityControlImage),
@@ -155,7 +173,6 @@ DRTDoseIOD::DRTDoseIOD()
     SliceLocation(DCM_SliceLocation),
     Rows(DCM_Rows),
     Columns(DCM_Columns),
-    PixelData(DCM_PixelData),
     PlanarConfiguration(DCM_PlanarConfiguration),
     PixelAspectRatio(DCM_PixelAspectRatio),
     SmallestImagePixelValue(DCM_SmallestImagePixelValue),
@@ -167,6 +184,8 @@ DRTDoseIOD::DRTDoseIOD()
     GreenPaletteColorLookupTableData(DCM_GreenPaletteColorLookupTableData),
     BluePaletteColorLookupTableData(DCM_BluePaletteColorLookupTableData),
     ICCProfile(DCM_ICCProfile),
+    ColorSpace(DCM_ColorSpace),
+    PixelData(DCM_PixelData),
     PixelDataProviderURL(DCM_PixelDataProviderURL),
     PixelPaddingRangeLimit(DCM_PixelPaddingRangeLimit),
     NumberOfFrames(DCM_NumberOfFrames),
@@ -236,6 +255,8 @@ DRTDoseIOD::DRTDoseIOD()
     RelatedGeneralSOPClassUID(DCM_RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(DCM_OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(),
+    ContextGroupIdentificationSequence(),
+    MappingResourceIdentificationSequence(),
     TimezoneOffsetFromUTC(DCM_TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(),
     SOPInstanceStatus(DCM_SOPInstanceStatus),
@@ -267,6 +288,9 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
     PatientBirthDate(copy.PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(copy.PatientAlternativeCalendar),
     PatientSex(copy.PatientSex),
     ReferencedPatientPhotoSequence(copy.ReferencedPatientPhotoSequence),
     QualityControlSubject(copy.QualityControlSubject),
@@ -282,12 +306,19 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     PatientBreedDescription(copy.PatientBreedDescription),
     PatientBreedCodeSequence(copy.PatientBreedCodeSequence),
     BreedRegistrationSequence(copy.BreedRegistrationSequence),
+    StrainDescription(copy.StrainDescription),
+    StrainNomenclature(copy.StrainNomenclature),
+    StrainCodeSequence(copy.StrainCodeSequence),
+    StrainAdditionalInformation(copy.StrainAdditionalInformation),
+    StrainStockSequence(copy.StrainStockSequence),
     ResponsiblePerson(copy.ResponsiblePerson),
     ResponsiblePersonRole(copy.ResponsiblePersonRole),
     ResponsibleOrganization(copy.ResponsibleOrganization),
     PatientIdentityRemoved(copy.PatientIdentityRemoved),
     DeidentificationMethod(copy.DeidentificationMethod),
     DeidentificationMethodCodeSequence(copy.DeidentificationMethodCodeSequence),
+    SourcePatientGroupIdentificationSequence(copy.SourcePatientGroupIdentificationSequence),
+    GroupOfPatientsIdentificationSequence(copy.GroupOfPatientsIdentificationSequence),
     ClinicalTrialSponsorName(copy.ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(copy.ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(copy.ClinicalTrialProtocolName),
@@ -321,7 +352,16 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     PatientAge(copy.PatientAge),
     PatientSize(copy.PatientSize),
     PatientWeight(copy.PatientWeight),
+    PatientBodyMassIndex(copy.PatientBodyMassIndex),
+    MeasuredAPDimension(copy.MeasuredAPDimension),
+    MeasuredLateralDimension(copy.MeasuredLateralDimension),
     PatientSizeCodeSequence(copy.PatientSizeCodeSequence),
+    MedicalAlerts(copy.MedicalAlerts),
+    Allergies(copy.Allergies),
+    SmokingStatus(copy.SmokingStatus),
+    PregnancyStatus(copy.PregnancyStatus),
+    LastMenstrualDate(copy.LastMenstrualDate),
+    PatientState(copy.PatientState),
     Occupation(copy.Occupation),
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
@@ -341,6 +381,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     SeriesDescription(copy.SeriesDescription),
     SeriesDescriptionCodeSequence(copy.SeriesDescriptionCodeSequence),
     OperatorsName(copy.OperatorsName),
+    OperatorIdentificationSequence(copy.OperatorIdentificationSequence),
     ReferencedPerformedProcedureStepSequence(copy.ReferencedPerformedProcedureStepSequence),
     RequestAttributesSequence(copy.RequestAttributesSequence),
     PerformedProcedureStepID(copy.PerformedProcedureStepID),
@@ -365,6 +406,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
+    UDISequence(copy.UDISequence),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -377,9 +419,6 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     AcquisitionDate(copy.AcquisitionDate),
     AcquisitionTime(copy.AcquisitionTime),
     AcquisitionDateTime(copy.AcquisitionDateTime),
-    ReferencedImageSequence(copy.ReferencedImageSequence),
-    DerivationDescription(copy.DerivationDescription),
-    SourceImageSequence(copy.SourceImageSequence),
     ImagesInAcquisition(copy.ImagesInAcquisition),
     ImageComments(copy.ImageComments),
     QualityControlImage(copy.QualityControlImage),
@@ -399,7 +438,6 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     SliceLocation(copy.SliceLocation),
     Rows(copy.Rows),
     Columns(copy.Columns),
-    PixelData(copy.PixelData),
     PlanarConfiguration(copy.PlanarConfiguration),
     PixelAspectRatio(copy.PixelAspectRatio),
     SmallestImagePixelValue(copy.SmallestImagePixelValue),
@@ -411,6 +449,8 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     GreenPaletteColorLookupTableData(copy.GreenPaletteColorLookupTableData),
     BluePaletteColorLookupTableData(copy.BluePaletteColorLookupTableData),
     ICCProfile(copy.ICCProfile),
+    ColorSpace(copy.ColorSpace),
+    PixelData(copy.PixelData),
     PixelDataProviderURL(copy.PixelDataProviderURL),
     PixelPaddingRangeLimit(copy.PixelPaddingRangeLimit),
     NumberOfFrames(copy.NumberOfFrames),
@@ -480,6 +520,8 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     RelatedGeneralSOPClassUID(copy.RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(copy.OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(copy.CodingSchemeIdentificationSequence),
+    ContextGroupIdentificationSequence(copy.ContextGroupIdentificationSequence),
+    MappingResourceIdentificationSequence(copy.MappingResourceIdentificationSequence),
     TimezoneOffsetFromUTC(copy.TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(copy.ContributingEquipmentSequence),
     SOPInstanceStatus(copy.SOPInstanceStatus),
@@ -517,6 +559,9 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
         PatientBirthDate = copy.PatientBirthDate;
+        PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
+        PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
+        PatientAlternativeCalendar = copy.PatientAlternativeCalendar;
         PatientSex = copy.PatientSex;
         ReferencedPatientPhotoSequence = copy.ReferencedPatientPhotoSequence;
         QualityControlSubject = copy.QualityControlSubject;
@@ -532,12 +577,19 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         PatientBreedDescription = copy.PatientBreedDescription;
         PatientBreedCodeSequence = copy.PatientBreedCodeSequence;
         BreedRegistrationSequence = copy.BreedRegistrationSequence;
+        StrainDescription = copy.StrainDescription;
+        StrainNomenclature = copy.StrainNomenclature;
+        StrainCodeSequence = copy.StrainCodeSequence;
+        StrainAdditionalInformation = copy.StrainAdditionalInformation;
+        StrainStockSequence = copy.StrainStockSequence;
         ResponsiblePerson = copy.ResponsiblePerson;
         ResponsiblePersonRole = copy.ResponsiblePersonRole;
         ResponsibleOrganization = copy.ResponsibleOrganization;
         PatientIdentityRemoved = copy.PatientIdentityRemoved;
         DeidentificationMethod = copy.DeidentificationMethod;
         DeidentificationMethodCodeSequence = copy.DeidentificationMethodCodeSequence;
+        SourcePatientGroupIdentificationSequence = copy.SourcePatientGroupIdentificationSequence;
+        GroupOfPatientsIdentificationSequence = copy.GroupOfPatientsIdentificationSequence;
         ClinicalTrialSponsorName = copy.ClinicalTrialSponsorName;
         ClinicalTrialProtocolID = copy.ClinicalTrialProtocolID;
         ClinicalTrialProtocolName = copy.ClinicalTrialProtocolName;
@@ -571,7 +623,16 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         PatientAge = copy.PatientAge;
         PatientSize = copy.PatientSize;
         PatientWeight = copy.PatientWeight;
+        PatientBodyMassIndex = copy.PatientBodyMassIndex;
+        MeasuredAPDimension = copy.MeasuredAPDimension;
+        MeasuredLateralDimension = copy.MeasuredLateralDimension;
         PatientSizeCodeSequence = copy.PatientSizeCodeSequence;
+        MedicalAlerts = copy.MedicalAlerts;
+        Allergies = copy.Allergies;
+        SmokingStatus = copy.SmokingStatus;
+        PregnancyStatus = copy.PregnancyStatus;
+        LastMenstrualDate = copy.LastMenstrualDate;
+        PatientState = copy.PatientState;
         Occupation = copy.Occupation;
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
@@ -591,6 +652,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         SeriesDescription = copy.SeriesDescription;
         SeriesDescriptionCodeSequence = copy.SeriesDescriptionCodeSequence;
         OperatorsName = copy.OperatorsName;
+        OperatorIdentificationSequence = copy.OperatorIdentificationSequence;
         ReferencedPerformedProcedureStepSequence = copy.ReferencedPerformedProcedureStepSequence;
         RequestAttributesSequence = copy.RequestAttributesSequence;
         PerformedProcedureStepID = copy.PerformedProcedureStepID;
@@ -615,6 +677,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
+        UDISequence = copy.UDISequence;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -627,9 +690,6 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         AcquisitionDate = copy.AcquisitionDate;
         AcquisitionTime = copy.AcquisitionTime;
         AcquisitionDateTime = copy.AcquisitionDateTime;
-        ReferencedImageSequence = copy.ReferencedImageSequence;
-        DerivationDescription = copy.DerivationDescription;
-        SourceImageSequence = copy.SourceImageSequence;
         ImagesInAcquisition = copy.ImagesInAcquisition;
         ImageComments = copy.ImageComments;
         QualityControlImage = copy.QualityControlImage;
@@ -649,7 +709,6 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         SliceLocation = copy.SliceLocation;
         Rows = copy.Rows;
         Columns = copy.Columns;
-        PixelData = copy.PixelData;
         PlanarConfiguration = copy.PlanarConfiguration;
         PixelAspectRatio = copy.PixelAspectRatio;
         SmallestImagePixelValue = copy.SmallestImagePixelValue;
@@ -661,6 +720,8 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         GreenPaletteColorLookupTableData = copy.GreenPaletteColorLookupTableData;
         BluePaletteColorLookupTableData = copy.BluePaletteColorLookupTableData;
         ICCProfile = copy.ICCProfile;
+        ColorSpace = copy.ColorSpace;
+        PixelData = copy.PixelData;
         PixelDataProviderURL = copy.PixelDataProviderURL;
         PixelPaddingRangeLimit = copy.PixelPaddingRangeLimit;
         NumberOfFrames = copy.NumberOfFrames;
@@ -730,6 +791,8 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         RelatedGeneralSOPClassUID = copy.RelatedGeneralSOPClassUID;
         OriginalSpecializedSOPClassUID = copy.OriginalSpecializedSOPClassUID;
         CodingSchemeIdentificationSequence = copy.CodingSchemeIdentificationSequence;
+        ContextGroupIdentificationSequence = copy.ContextGroupIdentificationSequence;
+        MappingResourceIdentificationSequence = copy.MappingResourceIdentificationSequence;
         TimezoneOffsetFromUTC = copy.TimezoneOffsetFromUTC;
         ContributingEquipmentSequence = copy.ContributingEquipmentSequence;
         SOPInstanceStatus = copy.SOPInstanceStatus;
@@ -762,6 +825,9 @@ void DRTDoseIOD::clear()
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
     PatientBirthDate.clear();
+    PatientBirthDateInAlternativeCalendar.clear();
+    PatientDeathDateInAlternativeCalendar.clear();
+    PatientAlternativeCalendar.clear();
     PatientSex.clear();
     ReferencedPatientPhotoSequence.clear();
     QualityControlSubject.clear();
@@ -777,12 +843,19 @@ void DRTDoseIOD::clear()
     PatientBreedDescription.clear();
     PatientBreedCodeSequence.clear();
     BreedRegistrationSequence.clear();
+    StrainDescription.clear();
+    StrainNomenclature.clear();
+    StrainCodeSequence.clear();
+    StrainAdditionalInformation.clear();
+    StrainStockSequence.clear();
     ResponsiblePerson.clear();
     ResponsiblePersonRole.clear();
     ResponsibleOrganization.clear();
     PatientIdentityRemoved.clear();
     DeidentificationMethod.clear();
     DeidentificationMethodCodeSequence.clear();
+    SourcePatientGroupIdentificationSequence.clear();
+    GroupOfPatientsIdentificationSequence.clear();
     ClinicalTrialSponsorName.clear();
     ClinicalTrialProtocolID.clear();
     ClinicalTrialProtocolName.clear();
@@ -816,7 +889,16 @@ void DRTDoseIOD::clear()
     PatientAge.clear();
     PatientSize.clear();
     PatientWeight.clear();
+    PatientBodyMassIndex.clear();
+    MeasuredAPDimension.clear();
+    MeasuredLateralDimension.clear();
     PatientSizeCodeSequence.clear();
+    MedicalAlerts.clear();
+    Allergies.clear();
+    SmokingStatus.clear();
+    PregnancyStatus.clear();
+    LastMenstrualDate.clear();
+    PatientState.clear();
     Occupation.clear();
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
@@ -836,6 +918,7 @@ void DRTDoseIOD::clear()
     SeriesDescription.clear();
     SeriesDescriptionCodeSequence.clear();
     OperatorsName.clear();
+    OperatorIdentificationSequence.clear();
     ReferencedPerformedProcedureStepSequence.clear();
     RequestAttributesSequence.clear();
     PerformedProcedureStepID.clear();
@@ -860,6 +943,7 @@ void DRTDoseIOD::clear()
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
+    UDISequence.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -873,11 +957,6 @@ void DRTDoseIOD::clear()
     AcquisitionDate.clear();
     AcquisitionTime.clear();
     AcquisitionDateTime.clear();
-    ReferencedImageSequence.clear();
-    DerivationDescription.clear();
-    DerivationCodeSequence.clear();
-    SourceImageSequence.clear();
-    ReferencedInstanceSequence.clear();
     ImagesInAcquisition.clear();
     ImageComments.clear();
     QualityControlImage.clear();
@@ -903,7 +982,6 @@ void DRTDoseIOD::clear()
     BitsStored.clear();
     HighBit.clear();
     PixelRepresentation.clear();
-    PixelData.clear();
     PlanarConfiguration.clear();
     PixelAspectRatio.clear();
     SmallestImagePixelValue.clear();
@@ -915,6 +993,8 @@ void DRTDoseIOD::clear()
     GreenPaletteColorLookupTableData.clear();
     BluePaletteColorLookupTableData.clear();
     ICCProfile.clear();
+    ColorSpace.clear();
+    PixelData.clear();
     PixelDataProviderURL.clear();
     PixelPaddingRangeLimit.clear();
     NumberOfFrames.clear();
@@ -951,6 +1031,8 @@ void DRTDoseIOD::clear()
     GridFrameOffsetVector.clear();
     DoseGridScaling.clear();
     TissueHeterogeneityCorrection.clear();
+    DerivationCodeSequence.clear();
+    ReferencedInstanceSequence.clear();
     ReferencedStructureSetSequence.clear();
     DVHNormalizationPoint.clear();
     DVHNormalizationDoseValue.clear();
@@ -975,6 +1057,8 @@ void DRTDoseIOD::clear()
     RelatedGeneralSOPClassUID.clear();
     OriginalSpecializedSOPClassUID.clear();
     CodingSchemeIdentificationSequence.clear();
+    ContextGroupIdentificationSequence.clear();
+    MappingResourceIdentificationSequence.clear();
     TimezoneOffsetFromUTC.clear();
     ContributingEquipmentSequence.clear();
     SOPInstanceStatus.clear();
@@ -1055,6 +1139,7 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
+        UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -1070,11 +1155,6 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, AcquisitionDate, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, AcquisitionTime, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, AcquisitionDateTime, "1", "3", "GeneralImageModule");
-        ReferencedImageSequence.read(dataset, "1-n", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, DerivationDescription, "1", "3", "GeneralImageModule");
-        // DerivationCodeSequence.read(dataset, "1-n", "3", "GeneralImageModule");
-        SourceImageSequence.read(dataset, "1-n", "3", "GeneralImageModule");
-        // ReferencedInstanceSequence.read(dataset, "1-n", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, ImagesInAcquisition, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, ImageComments, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, QualityControlImage, "1", "3", "GeneralImageModule");
@@ -1113,7 +1193,6 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
             // getAndCheckElementFromDataset(dataset, BitsStored, "1", "1", "ImagePixelModule");
             // getAndCheckElementFromDataset(dataset, HighBit, "1", "1", "ImagePixelModule");
             // getAndCheckElementFromDataset(dataset, PixelRepresentation, "1", "1", "ImagePixelModule");
-            getAndCheckElementFromDataset(dataset, PixelData, "1", "1C", "ImagePixelModule");
             getAndCheckElementFromDataset(dataset, PlanarConfiguration, "1", "1C", "ImagePixelModule");
             getAndCheckElementFromDataset(dataset, PixelAspectRatio, "2", "1C", "ImagePixelModule");
             getAndCheckElementFromDataset(dataset, SmallestImagePixelValue, "1", "3", "ImagePixelModule");
@@ -1125,6 +1204,8 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
             getAndCheckElementFromDataset(dataset, GreenPaletteColorLookupTableData, "1", "1C", "ImagePixelModule");
             getAndCheckElementFromDataset(dataset, BluePaletteColorLookupTableData, "1", "1C", "ImagePixelModule");
             getAndCheckElementFromDataset(dataset, ICCProfile, "1", "3", "ImagePixelModule");
+            getAndCheckElementFromDataset(dataset, ColorSpace, "1", "3", "ImagePixelModule");
+            getAndCheckElementFromDataset(dataset, PixelData, "1", "1C", "ImagePixelModule");
             getAndCheckElementFromDataset(dataset, PixelDataProviderURL, "1", "1C", "ImagePixelModule");
             getAndCheckElementFromDataset(dataset, PixelPaddingRangeLimit, "1", "1C", "ImagePixelModule");
         }
@@ -1248,6 +1329,8 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, RelatedGeneralSOPClassUID, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, OriginalSpecializedSOPClassUID, "1", "3", "SOPCommonModule");
         CodingSchemeIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        ContextGroupIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        MappingResourceIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, TimezoneOffsetFromUTC, "1", "3", "SOPCommonModule");
         ContributingEquipmentSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         // getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "3", "SOPCommonModule");
@@ -1290,6 +1373,9 @@ OFCondition DRTDoseIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientAlternativeCalendar, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientSex, "1", "2", "PatientModule");
     ReferencedPatientPhotoSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, QualityControlSubject, "1", "3", "PatientModule");
@@ -1305,12 +1391,19 @@ OFCondition DRTDoseIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientBreedDescription, "1", "2C", "PatientModule");
     PatientBreedCodeSequence.read(dataset, "1-n", "2C", "PatientModule");
     BreedRegistrationSequence.read(dataset, "1-n", "2C", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainDescription, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainNomenclature, "1", "3", "PatientModule");
+    StrainCodeSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainAdditionalInformation, "1", "3", "PatientModule");
+    StrainStockSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePerson, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePersonRole, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsibleOrganization, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientIdentityRemoved, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, DeidentificationMethod, "1-n", "1C", "PatientModule");
     DeidentificationMethodCodeSequence.read(dataset, "1-n", "1C", "PatientModule");
+    SourcePatientGroupIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
+    GroupOfPatientsIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
 
     // --- ClinicalTrialSubjectModule (U) ---
     if (dataset.tagExists(DCM_ClinicalTrialSponsorName) ||
@@ -1366,7 +1459,16 @@ OFCondition DRTDoseIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PatientAge, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientSize, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientWeight, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientBodyMassIndex, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredAPDimension, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredLateralDimension, "1", "3", "PatientStudyModule");
         PatientSizeCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MedicalAlerts, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, Allergies, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, SmokingStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PregnancyStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, LastMenstrualDate, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientState, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, Occupation, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
@@ -1403,6 +1505,7 @@ OFCondition DRTDoseIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, SeriesDescription, "1", "3", "RTSeriesModule");
         SeriesDescriptionCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, OperatorsName, "1-n", "2", "RTSeriesModule");
+        OperatorIdentificationSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         ReferencedPerformedProcedureStepSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         RequestAttributesSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepID, "1", "3", "RTSeriesModule");
@@ -1441,6 +1544,9 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(PatientAlternativeCalendar), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientSex), "1", "2", "PatientModule");
         if (result.good()) result = ReferencedPatientPhotoSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(QualityControlSubject), "1", "3", "PatientModule");
@@ -1456,12 +1562,19 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientBreedDescription), "1", "2C", "PatientModule");
         if (result.good()) result = PatientBreedCodeSequence.write(dataset, "1-n" ,"2C", "PatientModule");
         if (result.good()) result = BreedRegistrationSequence.write(dataset, "1-n" ,"2C", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedCharacters(StrainDescription), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(StrainNomenclature), "1", "3", "PatientModule");
+        if (result.good()) result = StrainCodeSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedText(StrainAdditionalInformation), "1", "3", "PatientModule");
+        if (result.good()) result = StrainStockSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmPersonName(ResponsiblePerson), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(ResponsiblePersonRole), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(ResponsibleOrganization), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientIdentityRemoved), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(DeidentificationMethod), "1-n", "1C", "PatientModule");
         if (result.good()) result = DeidentificationMethodCodeSequence.write(dataset, "1-n" ,"1C", "PatientModule");
+        if (result.good()) result = SourcePatientGroupIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        if (result.good()) result = GroupOfPatientsIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
 
         // --- ClinicalTrialSubjectModule (U) ---
         if (isClinicalTrialSubjectModulePresent(OFFalse /*complete*/))
@@ -1506,7 +1619,16 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmAgeString(PatientAge), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientSize), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientWeight), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(PatientBodyMassIndex), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredAPDimension), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredLateralDimension), "1", "3", "PatientStudyModule");
             if (result.good()) result = PatientSizeCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(MedicalAlerts), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(Allergies), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmCodeString(SmokingStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnsignedShort(PregnancyStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDate(LastMenstrualDate), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(PatientState), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmShortString(Occupation), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
@@ -1534,6 +1656,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(SeriesDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = SeriesDescriptionCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmPersonName(OperatorsName), "1-n", "2", "RTSeriesModule");
+        if (result.good()) result = OperatorIdentificationSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = ReferencedPerformedProcedureStepSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = RequestAttributesSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortString(PerformedProcedureStepID), "1", "3", "RTSeriesModule");
@@ -1567,6 +1690,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1584,11 +1708,6 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmDate(AcquisitionDate), "1", "3", "GeneralImageModule");
             addElementToDataset(result, dataset, new DcmTime(AcquisitionTime), "1", "3", "GeneralImageModule");
             addElementToDataset(result, dataset, new DcmDateTime(AcquisitionDateTime), "1", "3", "GeneralImageModule");
-            if (result.good()) result = ReferencedImageSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
-            addElementToDataset(result, dataset, new DcmShortText(DerivationDescription), "1", "3", "GeneralImageModule");
-            // if (result.good()) result = DerivationCodeSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
-            if (result.good()) result = SourceImageSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
-            // if (result.good()) result = ReferencedInstanceSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
             addElementToDataset(result, dataset, new DcmIntegerString(ImagesInAcquisition), "1", "3", "GeneralImageModule");
             addElementToDataset(result, dataset, new DcmLongText(ImageComments), "1", "3", "GeneralImageModule");
             addElementToDataset(result, dataset, new DcmCodeString(QualityControlImage), "1", "3", "GeneralImageModule");
@@ -1624,7 +1743,6 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
             // addElementToDataset(result, dataset, new DcmUnsignedShort(BitsStored), "1", "1", "ImagePixelModule");
             // addElementToDataset(result, dataset, new DcmUnsignedShort(HighBit), "1", "1", "ImagePixelModule");
             // addElementToDataset(result, dataset, new DcmUnsignedShort(PixelRepresentation), "1", "1", "ImagePixelModule");
-            addElementToDataset(result, dataset, new DcmPixelData(PixelData), "1", "1C", "ImagePixelModule");
             addElementToDataset(result, dataset, new DcmUnsignedShort(PlanarConfiguration), "1", "1C", "ImagePixelModule");
             addElementToDataset(result, dataset, new DcmIntegerString(PixelAspectRatio), "2", "1C", "ImagePixelModule");
             addElementToDataset(result, dataset, new DcmUnsignedShort(SmallestImagePixelValue), "1", "3", "ImagePixelModule");
@@ -1636,6 +1754,8 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmOtherByteOtherWord(GreenPaletteColorLookupTableData), "1", "1C", "ImagePixelModule");
             addElementToDataset(result, dataset, new DcmOtherByteOtherWord(BluePaletteColorLookupTableData), "1", "1C", "ImagePixelModule");
             addElementToDataset(result, dataset, new DcmOtherByteOtherWord(ICCProfile), "1", "3", "ImagePixelModule");
+            addElementToDataset(result, dataset, new DcmCodeString(ColorSpace), "1", "3", "ImagePixelModule");
+            addElementToDataset(result, dataset, new DcmPixelData(PixelData), "1", "1C", "ImagePixelModule");
             addElementToDataset(result, dataset, new DcmUniversalResourceIdentifierOrLocator(PixelDataProviderURL), "1", "1C", "ImagePixelModule");
             addElementToDataset(result, dataset, new DcmUnsignedShort(PixelPaddingRangeLimit), "1", "1C", "ImagePixelModule");
         }
@@ -1751,6 +1871,8 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(RelatedGeneralSOPClassUID), "1-n", "3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(OriginalSpecializedSOPClassUID), "1", "3", "SOPCommonModule");
         if (result.good()) result = CodingSchemeIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = ContextGroupIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = MappingResourceIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmShortString(TimezoneOffsetFromUTC), "1", "3", "SOPCommonModule");
         if (result.good()) result = ContributingEquipmentSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         // addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "3", "SOPCommonModule");
@@ -1817,7 +1939,16 @@ OFBool DRTDoseIOD::isPatientStudyModulePresent(const OFBool /*complete*/)
            !PatientAge.isEmpty() ||
            !PatientSize.isEmpty() ||
            !PatientWeight.isEmpty() ||
+           !PatientBodyMassIndex.isEmpty() ||
+           !MeasuredAPDimension.isEmpty() ||
+           !MeasuredLateralDimension.isEmpty() ||
            !PatientSizeCodeSequence.isEmpty() ||
+           !MedicalAlerts.isEmpty() ||
+           !Allergies.isEmpty() ||
+           !SmokingStatus.isEmpty() ||
+           !PregnancyStatus.isEmpty() ||
+           !LastMenstrualDate.isEmpty() ||
+           !PatientState.isEmpty() ||
            !Occupation.isEmpty() ||
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
@@ -1858,9 +1989,6 @@ OFBool DRTDoseIOD::isGeneralImageModulePresent(const OFBool /*complete*/)
            !AcquisitionDate.isEmpty() ||
            !AcquisitionTime.isEmpty() ||
            !AcquisitionDateTime.isEmpty() ||
-           !ReferencedImageSequence.isEmpty() ||
-           !DerivationDescription.isEmpty() ||
-           !SourceImageSequence.isEmpty() ||
            !ImagesInAcquisition.isEmpty() ||
            !ImageComments.isEmpty() ||
            !QualityControlImage.isEmpty() ||
@@ -1906,7 +2034,6 @@ OFBool DRTDoseIOD::isImagePixelModulePresent(const OFBool complete)
         /* check whether at least one attribute is present */
         return !Rows.isEmpty() ||
                !Columns.isEmpty() ||
-               !PixelData.isEmpty() ||
                !PlanarConfiguration.isEmpty() ||
                !PixelAspectRatio.isEmpty() ||
                !SmallestImagePixelValue.isEmpty() ||
@@ -1918,6 +2045,8 @@ OFBool DRTDoseIOD::isImagePixelModulePresent(const OFBool complete)
                !GreenPaletteColorLookupTableData.isEmpty() ||
                !BluePaletteColorLookupTableData.isEmpty() ||
                !ICCProfile.isEmpty() ||
+               !ColorSpace.isEmpty() ||
+               !PixelData.isEmpty() ||
                !PixelDataProviderURL.isEmpty() ||
                !PixelPaddingRangeLimit.isEmpty();
     }
@@ -2116,6 +2245,12 @@ OFCondition DRTDoseIOD::getAdmittingDiagnosesDescription(OFString &value, const
 }
 
 
+OFCondition DRTDoseIOD::getAllergies(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(Allergies, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(AuthorizationEquipmentCertificationNumber, value, pos);
@@ -2245,6 +2380,12 @@ OFCondition DRTDoseIOD::getClinicalTrialTimePointID(OFString &value, const signe
 }
 
 
+OFCondition DRTDoseIOD::getColorSpace(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ColorSpace, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getColumns(Uint16 &value, const unsigned long pos) const
 {
     return OFconst_cast(DcmUnsignedShort &, Columns).getUint16(value, pos);
@@ -2323,12 +2464,6 @@ OFCondition DRTDoseIOD::getDeidentificationMethod(OFString &value, const signed
 }
 
 
-OFCondition DRTDoseIOD::getDerivationDescription(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(DerivationDescription, value, pos);
-}
-
-
 OFCondition DRTDoseIOD::getDeviceSerialNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(DeviceSerialNumber, value, pos);
@@ -2593,6 +2728,12 @@ OFCondition DRTDoseIOD::getLargestImagePixelValue(Uint16 &value, const unsigned
 }
 
 
+OFCondition DRTDoseIOD::getLastMenstrualDate(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(LastMenstrualDate, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getLongitudinalTemporalInformationModified(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(LongitudinalTemporalInformationModified, value, pos);
@@ -2641,6 +2782,36 @@ OFCondition DRTDoseIOD::getManufacturerModelName(OFString &value, const signed l
 }
 
 
+OFCondition DRTDoseIOD::getMeasuredAPDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredAPDimension, value, pos);
+}
+
+
+OFCondition DRTDoseIOD::getMeasuredAPDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredAPDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTDoseIOD::getMeasuredLateralDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredLateralDimension, value, pos);
+}
+
+
+OFCondition DRTDoseIOD::getMeasuredLateralDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredLateralDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTDoseIOD::getMedicalAlerts(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MedicalAlerts, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getModality(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(Modality, value, pos);
@@ -2785,18 +2956,42 @@ OFCondition DRTDoseIOD::getPatientAge(OFString &value, const signed long pos) co
 }
 
 
+OFCondition DRTDoseIOD::getPatientAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getPatientBirthDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthDate, value, pos);
 }
 
 
+OFCondition DRTDoseIOD::getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBirthDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getPatientBirthTime(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthTime, value, pos);
 }
 
 
+OFCondition DRTDoseIOD::getPatientBodyMassIndex(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBodyMassIndex, value, pos);
+}
+
+
+OFCondition DRTDoseIOD::getPatientBodyMassIndex(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, PatientBodyMassIndex).getFloat64(value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getPatientBreedDescription(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBreedDescription, value, pos);
@@ -2809,6 +3004,12 @@ OFCondition DRTDoseIOD::getPatientComments(OFString &value, const signed long po
 }
 
 
+OFCondition DRTDoseIOD::getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientDeathDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getPatientID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientID, value, pos);
@@ -2863,6 +3064,12 @@ OFCondition DRTDoseIOD::getPatientSpeciesDescription(OFString &value, const sign
 }
 
 
+OFCondition DRTDoseIOD::getPatientState(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientState, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getPatientWeight(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientWeight, value, pos);
@@ -2989,6 +3196,12 @@ OFCondition DRTDoseIOD::getPositionReferenceIndicator(OFString &value, const sig
 }
 
 
+OFCondition DRTDoseIOD::getPregnancyStatus(Uint16 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmUnsignedShort &, PregnancyStatus).getUint16(value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getPresentationLUTShape(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PresentationLUTShape, value, pos);
@@ -3256,6 +3469,12 @@ OFCondition DRTDoseIOD::getSmallestImagePixelValue(Uint16 &value, const unsigned
 }
 
 
+OFCondition DRTDoseIOD::getSmokingStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(SmokingStatus, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getSoftwareVersions(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(SoftwareVersions, value, pos);
@@ -3298,6 +3517,24 @@ OFCondition DRTDoseIOD::getStereoPairsPresent(OFString &value, const signed long
 }
 
 
+OFCondition DRTDoseIOD::getStrainAdditionalInformation(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainAdditionalInformation, value, pos);
+}
+
+
+OFCondition DRTDoseIOD::getStrainDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainDescription, value, pos);
+}
+
+
+OFCondition DRTDoseIOD::getStrainNomenclature(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainNomenclature, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getStructureSetDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StructureSetDate, value, pos);
@@ -3448,6 +3685,15 @@ OFCondition DRTDoseIOD::setAdmittingDiagnosesDescription(const OFString &value,
 }
 
 
+OFCondition DRTDoseIOD::setAllergies(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = Allergies.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -3616,6 +3862,15 @@ OFCondition DRTDoseIOD::setClinicalTrialTimePointID(const OFString &value, const
 }
 
 
+OFCondition DRTDoseIOD::setColorSpace(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = ColorSpace.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setColumns(const Uint16 value, const unsigned long pos)
 {
     return Columns.putUint16(value, pos);
@@ -3703,15 +3958,6 @@ OFCondition DRTDoseIOD::setDeidentificationMethod(const OFString &value, const O
 }
 
 
-OFCondition DRTDoseIOD::setDerivationDescription(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
-    if (result.good())
-        result = DerivationDescription.putOFStringArray(value);
-    return result;
-}
-
-
 OFCondition DRTDoseIOD::setDeviceSerialNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -3982,6 +4228,15 @@ OFCondition DRTDoseIOD::setLargestImagePixelValue(const Uint16 value, const unsi
 }
 
 
+OFCondition DRTDoseIOD::setLastMenstrualDate(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = LastMenstrualDate.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setLongitudinalTemporalInformationModified(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -4036,6 +4291,33 @@ OFCondition DRTDoseIOD::setManufacturerModelName(const OFString &value, const OF
 }
 
 
+OFCondition DRTDoseIOD::setMeasuredAPDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredAPDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTDoseIOD::setMeasuredLateralDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredLateralDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTDoseIOD::setMedicalAlerts(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = MedicalAlerts.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setModality(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -4201,6 +4483,15 @@ OFCondition DRTDoseIOD::setPatientAge(const OFString &value, const OFBool check)
 }
 
 
+OFCondition DRTDoseIOD::setPatientAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setPatientBirthDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -4210,6 +4501,15 @@ OFCondition DRTDoseIOD::setPatientBirthDate(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTDoseIOD::setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBirthDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setPatientBirthTime(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
@@ -4219,6 +4519,15 @@ OFCondition DRTDoseIOD::setPatientBirthTime(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTDoseIOD::setPatientBodyMassIndex(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBodyMassIndex.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setPatientBreedDescription(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -4237,6 +4546,15 @@ OFCondition DRTDoseIOD::setPatientComments(const OFString &value, const OFBool c
 }
 
 
+OFCondition DRTDoseIOD::setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientDeathDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -4309,6 +4627,15 @@ OFCondition DRTDoseIOD::setPatientSpeciesDescription(const OFString &value, cons
 }
 
 
+OFCondition DRTDoseIOD::setPatientState(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientState.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setPatientWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -4450,6 +4777,12 @@ OFCondition DRTDoseIOD::setPositionReferenceIndicator(const OFString &value, con
 }
 
 
+OFCondition DRTDoseIOD::setPregnancyStatus(const Uint16 value, const unsigned long pos)
+{
+    return PregnancyStatus.putUint16(value, pos);
+}
+
+
 OFCondition DRTDoseIOD::setPresentationLUTShape(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -4750,6 +5083,15 @@ OFCondition DRTDoseIOD::setSmallestImagePixelValue(const Uint16 value, const uns
 }
 
 
+OFCondition DRTDoseIOD::setSmokingStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = SmokingStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setSoftwareVersions(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
@@ -4804,6 +5146,33 @@ OFCondition DRTDoseIOD::setStereoPairsPresent(const OFString &value, const OFBoo
 }
 
 
+OFCondition DRTDoseIOD::setStrainAdditionalInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = StrainAdditionalInformation.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTDoseIOD::setStrainDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainDescription.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTDoseIOD::setStrainNomenclature(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainNomenclature.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setStructureSetDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drtdrs.cc b/dcmrt/libsrc/drtdrs.cc
index 4cc00b7..f2788da 100644
--- a/dcmrt/libsrc/drtdrs.cc
+++ b/dcmrt/libsrc/drtdrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -888,7 +888,7 @@ OFBool DRTDoseReferenceSequence::isValid() const
 }
 
 
-unsigned long DRTDoseReferenceSequence::getNumberOfItems() const
+size_t DRTDoseReferenceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -918,12 +918,12 @@ OFCondition DRTDoseReferenceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTDoseReferenceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDoseReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -938,12 +938,12 @@ OFCondition DRTDoseReferenceSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTDoseReferenceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDoseReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -958,7 +958,7 @@ OFCondition DRTDoseReferenceSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTDoseReferenceSequence::gotoItem(const unsigned long num)
+OFCondition DRTDoseReferenceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -994,7 +994,7 @@ const DRTDoseReferenceSequence::Item &DRTDoseReferenceSequence::getCurrentItem()
 }
 
 
-OFCondition DRTDoseReferenceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDoseReferenceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -1004,7 +1004,7 @@ OFCondition DRTDoseReferenceSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTDoseReferenceSequence::Item &DRTDoseReferenceSequence::getItem(const unsigned long num)
+DRTDoseReferenceSequence::Item &DRTDoseReferenceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1014,7 +1014,7 @@ DRTDoseReferenceSequence::Item &DRTDoseReferenceSequence::getItem(const unsigned
 }
 
 
-const DRTDoseReferenceSequence::Item &DRTDoseReferenceSequence::getItem(const unsigned long num) const
+const DRTDoseReferenceSequence::Item &DRTDoseReferenceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1024,13 +1024,13 @@ const DRTDoseReferenceSequence::Item &DRTDoseReferenceSequence::getItem(const un
 }
 
 
-DRTDoseReferenceSequence::Item &DRTDoseReferenceSequence::operator[](const unsigned long num)
+DRTDoseReferenceSequence::Item &DRTDoseReferenceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTDoseReferenceSequence::Item &DRTDoseReferenceSequence::operator[](const unsigned long num) const
+const DRTDoseReferenceSequence::Item &DRTDoseReferenceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -1053,7 +1053,7 @@ OFCondition DRTDoseReferenceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDoseReferenceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDoseReferenceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -1076,7 +1076,7 @@ OFCondition DRTDoseReferenceSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTDoseReferenceSequence::removeItem(const unsigned long pos)
+OFCondition DRTDoseReferenceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtds.cc b/dcmrt/libsrc/drtds.cc
index 69b00cf..42392af 100644
--- a/dcmrt/libsrc/drtds.cc
+++ b/dcmrt/libsrc/drtds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -44,6 +44,7 @@ DRTDeviceSequence::Item::Item(const OFBool emptyDefaultItem)
     Manufacturer(DCM_Manufacturer),
     ManufacturerModelName(DCM_ManufacturerModelName),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -75,6 +76,7 @@ DRTDeviceSequence::Item::Item(const Item &copy)
     Manufacturer(copy.Manufacturer),
     ManufacturerModelName(copy.ManufacturerModelName),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -114,6 +116,7 @@ DRTDeviceSequence::Item &DRTDeviceSequence::Item::operator=(const Item &copy)
         Manufacturer = copy.Manufacturer;
         ManufacturerModelName = copy.ManufacturerModelName;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -137,6 +140,7 @@ void DRTDeviceSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -168,6 +172,7 @@ OFBool DRTDeviceSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -209,6 +214,7 @@ OFCondition DRTDeviceSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DeviceSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DeviceSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DeviceSequence");
@@ -246,6 +252,7 @@ OFCondition DRTDeviceSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "DeviceSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "DeviceSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "DeviceSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "DeviceSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "DeviceSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DeviceSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DeviceSequence");
@@ -499,6 +506,15 @@ OFCondition DRTDeviceSequence::Item::getMappingResource(OFString &value, const s
 }
 
 
+OFCondition DRTDeviceSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTDeviceSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -803,6 +819,19 @@ OFCondition DRTDeviceSequence::Item::setMappingResource(const OFString &value, c
 }
 
 
+OFCondition DRTDeviceSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDeviceSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -932,7 +961,7 @@ OFBool DRTDeviceSequence::isValid() const
 }
 
 
-unsigned long DRTDeviceSequence::getNumberOfItems() const
+size_t DRTDeviceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -962,12 +991,12 @@ OFCondition DRTDeviceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTDeviceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -982,12 +1011,12 @@ OFCondition DRTDeviceSequence::gotoItem(const unsigned long num, OFListIterator(
 }
 
 
-OFCondition DRTDeviceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1002,7 +1031,7 @@ OFCondition DRTDeviceSequence::gotoItem(const unsigned long num, OFListConstIter
 }
 
 
-OFCondition DRTDeviceSequence::gotoItem(const unsigned long num)
+OFCondition DRTDeviceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -1038,7 +1067,7 @@ const DRTDeviceSequence::Item &DRTDeviceSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTDeviceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDeviceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -1048,7 +1077,7 @@ OFCondition DRTDeviceSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTDeviceSequence::Item &DRTDeviceSequence::getItem(const unsigned long num)
+DRTDeviceSequence::Item &DRTDeviceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1058,7 +1087,7 @@ DRTDeviceSequence::Item &DRTDeviceSequence::getItem(const unsigned long num)
 }
 
 
-const DRTDeviceSequence::Item &DRTDeviceSequence::getItem(const unsigned long num) const
+const DRTDeviceSequence::Item &DRTDeviceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1068,13 +1097,13 @@ const DRTDeviceSequence::Item &DRTDeviceSequence::getItem(const unsigned long nu
 }
 
 
-DRTDeviceSequence::Item &DRTDeviceSequence::operator[](const unsigned long num)
+DRTDeviceSequence::Item &DRTDeviceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTDeviceSequence::Item &DRTDeviceSequence::operator[](const unsigned long num) const
+const DRTDeviceSequence::Item &DRTDeviceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -1097,7 +1126,7 @@ OFCondition DRTDeviceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDeviceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDeviceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -1120,7 +1149,7 @@ OFCondition DRTDeviceSequence::insertItem(const unsigned long pos, Item *&item)
 }
 
 
-OFCondition DRTDeviceSequence::removeItem(const unsigned long pos)
+OFCondition DRTDeviceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdspcs.cc b/dcmrt/libsrc/drtdspcs.cc
index a03182d..b48baf6 100644
--- a/dcmrt/libsrc/drtdspcs.cc
+++ b/dcmrt/libsrc/drtdspcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDigitalSignaturePurposeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTDigitalSignaturePurposeCodeSequence::Item::Item(const OFBool emptyDefaultItem
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTDigitalSignaturePurposeCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequ
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTDigitalSignaturePurposeCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTDigitalSignaturePurposeCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DigitalSignaturePurposeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DigitalSignaturePurposeCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "DigitalSignaturePurposeCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DigitalSignaturePurposeCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getMappingResource(OFS
 }
 
 
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setMappingResource(con
 }
 
 
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTDigitalSignaturePurposeCodeSequence::isValid() const
 }
 
 
-unsigned long DRTDigitalSignaturePurposeCodeSequence::getNumberOfItems() const
+size_t DRTDigitalSignaturePurposeCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCo
 }
 
 
-OFCondition DRTDigitalSignaturePurposeCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDigitalSignaturePurposeCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::getItem(const unsigned long
 }
 
 
-DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequence::getItem(const unsigned long num)
+DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequ
 }
 
 
-const DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequence::getItem(const unsigned long num) const
+const DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCo
 }
 
 
-DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequence::operator[](const unsigned long num)
+DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequence::operator[](const unsigned long num) const
+const DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDigitalSignaturePurposeCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDigitalSignaturePurposeCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::insertItem(const unsigned lo
 }
 
 
-OFCondition DRTDigitalSignaturePurposeCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTDigitalSignaturePurposeCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdss.cc b/dcmrt/libsrc/drtdss.cc
index e9e173a..9e67c62 100644
--- a/dcmrt/libsrc/drtdss.cc
+++ b/dcmrt/libsrc/drtdss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDigitalSignaturesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -446,7 +446,7 @@ OFBool DRTDigitalSignaturesSequence::isValid() const
 }
 
 
-unsigned long DRTDigitalSignaturesSequence::getNumberOfItems() const
+size_t DRTDigitalSignaturesSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -476,12 +476,12 @@ OFCondition DRTDigitalSignaturesSequence::gotoNextItem()
 }
 
 
-OFCondition DRTDigitalSignaturesSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDigitalSignaturesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -496,12 +496,12 @@ OFCondition DRTDigitalSignaturesSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTDigitalSignaturesSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDigitalSignaturesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -516,7 +516,7 @@ OFCondition DRTDigitalSignaturesSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTDigitalSignaturesSequence::gotoItem(const unsigned long num)
+OFCondition DRTDigitalSignaturesSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -552,7 +552,7 @@ const DRTDigitalSignaturesSequence::Item &DRTDigitalSignaturesSequence::getCurre
 }
 
 
-OFCondition DRTDigitalSignaturesSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDigitalSignaturesSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -562,7 +562,7 @@ OFCondition DRTDigitalSignaturesSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTDigitalSignaturesSequence::Item &DRTDigitalSignaturesSequence::getItem(const unsigned long num)
+DRTDigitalSignaturesSequence::Item &DRTDigitalSignaturesSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -572,7 +572,7 @@ DRTDigitalSignaturesSequence::Item &DRTDigitalSignaturesSequence::getItem(const
 }
 
 
-const DRTDigitalSignaturesSequence::Item &DRTDigitalSignaturesSequence::getItem(const unsigned long num) const
+const DRTDigitalSignaturesSequence::Item &DRTDigitalSignaturesSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -582,13 +582,13 @@ const DRTDigitalSignaturesSequence::Item &DRTDigitalSignaturesSequence::getItem(
 }
 
 
-DRTDigitalSignaturesSequence::Item &DRTDigitalSignaturesSequence::operator[](const unsigned long num)
+DRTDigitalSignaturesSequence::Item &DRTDigitalSignaturesSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTDigitalSignaturesSequence::Item &DRTDigitalSignaturesSequence::operator[](const unsigned long num) const
+const DRTDigitalSignaturesSequence::Item &DRTDigitalSignaturesSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -611,7 +611,7 @@ OFCondition DRTDigitalSignaturesSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDigitalSignaturesSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDigitalSignaturesSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -634,7 +634,7 @@ OFCondition DRTDigitalSignaturesSequence::insertItem(const unsigned long pos, It
 }
 
 
-OFCondition DRTDigitalSignaturesSequence::removeItem(const unsigned long pos)
+OFCondition DRTDigitalSignaturesSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdvhs.cc b/dcmrt/libsrc/drtdvhs.cc
index 328a765..933ef2d 100644
--- a/dcmrt/libsrc/drtdvhs.cc
+++ b/dcmrt/libsrc/drtdvhs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDVHSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -553,7 +553,7 @@ OFBool DRTDVHSequence::isValid() const
 }
 
 
-unsigned long DRTDVHSequence::getNumberOfItems() const
+size_t DRTDVHSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -583,12 +583,12 @@ OFCondition DRTDVHSequence::gotoNextItem()
 }
 
 
-OFCondition DRTDVHSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDVHSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -603,12 +603,12 @@ OFCondition DRTDVHSequence::gotoItem(const unsigned long num, OFListIterator(Ite
 }
 
 
-OFCondition DRTDVHSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDVHSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -623,7 +623,7 @@ OFCondition DRTDVHSequence::gotoItem(const unsigned long num, OFListConstIterato
 }
 
 
-OFCondition DRTDVHSequence::gotoItem(const unsigned long num)
+OFCondition DRTDVHSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -659,7 +659,7 @@ const DRTDVHSequence::Item &DRTDVHSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTDVHSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDVHSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -669,7 +669,7 @@ OFCondition DRTDVHSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTDVHSequence::Item &DRTDVHSequence::getItem(const unsigned long num)
+DRTDVHSequence::Item &DRTDVHSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -679,7 +679,7 @@ DRTDVHSequence::Item &DRTDVHSequence::getItem(const unsigned long num)
 }
 
 
-const DRTDVHSequence::Item &DRTDVHSequence::getItem(const unsigned long num) const
+const DRTDVHSequence::Item &DRTDVHSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -689,13 +689,13 @@ const DRTDVHSequence::Item &DRTDVHSequence::getItem(const unsigned long num) con
 }
 
 
-DRTDVHSequence::Item &DRTDVHSequence::operator[](const unsigned long num)
+DRTDVHSequence::Item &DRTDVHSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTDVHSequence::Item &DRTDVHSequence::operator[](const unsigned long num) const
+const DRTDVHSequence::Item &DRTDVHSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -718,7 +718,7 @@ OFCondition DRTDVHSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDVHSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDVHSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -741,7 +741,7 @@ OFCondition DRTDVHSequence::insertItem(const unsigned long pos, Item *&item)
 }
 
 
-OFCondition DRTDVHSequence::removeItem(const unsigned long pos)
+OFCondition DRTDVHSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdvrrs.cc b/dcmrt/libsrc/drtdvrrs.cc
index eec70c2..933f6a1 100644
--- a/dcmrt/libsrc/drtdvrrs.cc
+++ b/dcmrt/libsrc/drtdvrrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDVHReferencedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -260,7 +260,7 @@ OFBool DRTDVHReferencedROISequence::isValid() const
 }
 
 
-unsigned long DRTDVHReferencedROISequence::getNumberOfItems() const
+size_t DRTDVHReferencedROISequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -290,12 +290,12 @@ OFCondition DRTDVHReferencedROISequence::gotoNextItem()
 }
 
 
-OFCondition DRTDVHReferencedROISequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDVHReferencedROISequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -310,12 +310,12 @@ OFCondition DRTDVHReferencedROISequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTDVHReferencedROISequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDVHReferencedROISequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,7 +330,7 @@ OFCondition DRTDVHReferencedROISequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTDVHReferencedROISequence::gotoItem(const unsigned long num)
+OFCondition DRTDVHReferencedROISequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -366,7 +366,7 @@ const DRTDVHReferencedROISequence::Item &DRTDVHReferencedROISequence::getCurrent
 }
 
 
-OFCondition DRTDVHReferencedROISequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDVHReferencedROISequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -376,7 +376,7 @@ OFCondition DRTDVHReferencedROISequence::getItem(const unsigned long num, Item *
 }
 
 
-DRTDVHReferencedROISequence::Item &DRTDVHReferencedROISequence::getItem(const unsigned long num)
+DRTDVHReferencedROISequence::Item &DRTDVHReferencedROISequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -386,7 +386,7 @@ DRTDVHReferencedROISequence::Item &DRTDVHReferencedROISequence::getItem(const un
 }
 
 
-const DRTDVHReferencedROISequence::Item &DRTDVHReferencedROISequence::getItem(const unsigned long num) const
+const DRTDVHReferencedROISequence::Item &DRTDVHReferencedROISequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -396,13 +396,13 @@ const DRTDVHReferencedROISequence::Item &DRTDVHReferencedROISequence::getItem(co
 }
 
 
-DRTDVHReferencedROISequence::Item &DRTDVHReferencedROISequence::operator[](const unsigned long num)
+DRTDVHReferencedROISequence::Item &DRTDVHReferencedROISequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTDVHReferencedROISequence::Item &DRTDVHReferencedROISequence::operator[](const unsigned long num) const
+const DRTDVHReferencedROISequence::Item &DRTDVHReferencedROISequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -425,7 +425,7 @@ OFCondition DRTDVHReferencedROISequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDVHReferencedROISequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDVHReferencedROISequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -448,7 +448,7 @@ OFCondition DRTDVHReferencedROISequence::insertItem(const unsigned long pos, Ite
 }
 
 
-OFCondition DRTDVHReferencedROISequence::removeItem(const unsigned long pos)
+OFCondition DRTDVHReferencedROISequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drteas.cc b/dcmrt/libsrc/drteas.cc
index 53d8069..f21e814 100644
--- a/dcmrt/libsrc/drteas.cc
+++ b/dcmrt/libsrc/drteas.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTEncryptedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -257,7 +257,7 @@ OFBool DRTEncryptedAttributesSequence::isValid() const
 }
 
 
-unsigned long DRTEncryptedAttributesSequence::getNumberOfItems() const
+size_t DRTEncryptedAttributesSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -287,12 +287,12 @@ OFCondition DRTEncryptedAttributesSequence::gotoNextItem()
 }
 
 
-OFCondition DRTEncryptedAttributesSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTEncryptedAttributesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -307,12 +307,12 @@ OFCondition DRTEncryptedAttributesSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTEncryptedAttributesSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTEncryptedAttributesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -327,7 +327,7 @@ OFCondition DRTEncryptedAttributesSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTEncryptedAttributesSequence::gotoItem(const unsigned long num)
+OFCondition DRTEncryptedAttributesSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -363,7 +363,7 @@ const DRTEncryptedAttributesSequence::Item &DRTEncryptedAttributesSequence::getC
 }
 
 
-OFCondition DRTEncryptedAttributesSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTEncryptedAttributesSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -373,7 +373,7 @@ OFCondition DRTEncryptedAttributesSequence::getItem(const unsigned long num, Ite
 }
 
 
-DRTEncryptedAttributesSequence::Item &DRTEncryptedAttributesSequence::getItem(const unsigned long num)
+DRTEncryptedAttributesSequence::Item &DRTEncryptedAttributesSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -383,7 +383,7 @@ DRTEncryptedAttributesSequence::Item &DRTEncryptedAttributesSequence::getItem(co
 }
 
 
-const DRTEncryptedAttributesSequence::Item &DRTEncryptedAttributesSequence::getItem(const unsigned long num) const
+const DRTEncryptedAttributesSequence::Item &DRTEncryptedAttributesSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -393,13 +393,13 @@ const DRTEncryptedAttributesSequence::Item &DRTEncryptedAttributesSequence::getI
 }
 
 
-DRTEncryptedAttributesSequence::Item &DRTEncryptedAttributesSequence::operator[](const unsigned long num)
+DRTEncryptedAttributesSequence::Item &DRTEncryptedAttributesSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTEncryptedAttributesSequence::Item &DRTEncryptedAttributesSequence::operator[](const unsigned long num) const
+const DRTEncryptedAttributesSequence::Item &DRTEncryptedAttributesSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -422,7 +422,7 @@ OFCondition DRTEncryptedAttributesSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTEncryptedAttributesSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTEncryptedAttributesSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -445,7 +445,7 @@ OFCondition DRTEncryptedAttributesSequence::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTEncryptedAttributesSequence::removeItem(const unsigned long pos)
+OFCondition DRTEncryptedAttributesSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtecs.cc b/dcmrt/libsrc/drtecs.cc
index 4f07d4c..8a509db 100644
--- a/dcmrt/libsrc/drtecs.cc
+++ b/dcmrt/libsrc/drtecs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTEquivalentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -25,7 +25,16 @@ DRTEquivalentCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     CodeValue(DCM_CodeValue),
     CodingSchemeDesignator(DCM_CodingSchemeDesignator),
     CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
     LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
 }
@@ -37,7 +46,16 @@ DRTEquivalentCodeSequence::Item::Item(const Item &copy)
     CodeValue(copy.CodeValue),
     CodingSchemeDesignator(copy.CodingSchemeDesignator),
     CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
     LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
 }
@@ -57,7 +75,16 @@ DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::Item::operator=(cons
         CodeValue = copy.CodeValue;
         CodingSchemeDesignator = copy.CodingSchemeDesignator;
         CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
         LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
     return *this;
@@ -75,6 +102,15 @@ void DRTEquivalentCodeSequence::Item::clear()
         CodeMeaning.clear();
         LongCodeValue.clear();
         URNCodeValue.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
     }
 }
 
@@ -86,7 +122,16 @@ OFBool DRTEquivalentCodeSequence::Item::isEmpty()
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
            LongCodeValue.isEmpty() &&
-           URNCodeValue.isEmpty();
+           URNCodeValue.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
 }
 
 
@@ -109,6 +154,15 @@ OFCondition DRTEquivalentCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "EquivalentCodeSequence");
         getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "EquivalentCodeSequence");
         getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "EquivalentCodeSequence");
         result = EC_Normal;
     }
     return result;
@@ -127,6 +181,15 @@ OFCondition DRTEquivalentCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "EquivalentCodeSequence");
         addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "EquivalentCodeSequence");
         addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "EquivalentCodeSequence");
     }
     return result;
 }
@@ -168,6 +231,60 @@ OFCondition DRTEquivalentCodeSequence::Item::getCodingSchemeVersion(OFString &va
 }
 
 
+OFCondition DRTEquivalentCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
 OFCondition DRTEquivalentCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -177,6 +294,33 @@ OFCondition DRTEquivalentCodeSequence::Item::getLongCodeValue(OFString &value, c
 }
 
 
+OFCondition DRTEquivalentCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
 OFCondition DRTEquivalentCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -238,6 +382,84 @@ OFCondition DRTEquivalentCodeSequence::Item::setCodingSchemeVersion(const OFStri
 }
 
 
+OFCondition DRTEquivalentCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTEquivalentCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -251,6 +473,45 @@ OFCondition DRTEquivalentCodeSequence::Item::setLongCodeValue(const OFString &va
 }
 
 
+OFCondition DRTEquivalentCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTEquivalentCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -367,7 +628,7 @@ OFBool DRTEquivalentCodeSequence::isValid() const
 }
 
 
-unsigned long DRTEquivalentCodeSequence::getNumberOfItems() const
+size_t DRTEquivalentCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -397,12 +658,12 @@ OFCondition DRTEquivalentCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTEquivalentCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTEquivalentCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -417,12 +678,12 @@ OFCondition DRTEquivalentCodeSequence::gotoItem(const unsigned long num, OFListI
 }
 
 
-OFCondition DRTEquivalentCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTEquivalentCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -437,7 +698,7 @@ OFCondition DRTEquivalentCodeSequence::gotoItem(const unsigned long num, OFListC
 }
 
 
-OFCondition DRTEquivalentCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTEquivalentCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -473,7 +734,7 @@ const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getCurrentItem
 }
 
 
-OFCondition DRTEquivalentCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTEquivalentCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -483,7 +744,7 @@ OFCondition DRTEquivalentCodeSequence::getItem(const unsigned long num, Item *&i
 }
 
 
-DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getItem(const unsigned long num)
+DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -493,7 +754,7 @@ DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getItem(const unsign
 }
 
 
-const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getItem(const unsigned long num) const
+const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -503,13 +764,13 @@ const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getItem(const
 }
 
 
-DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::operator[](const unsigned long num)
+DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::operator[](const unsigned long num) const
+const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -532,7 +793,7 @@ OFCondition DRTEquivalentCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTEquivalentCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTEquivalentCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -555,7 +816,7 @@ OFCondition DRTEquivalentCodeSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTEquivalentCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTEquivalentCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtes.cc b/dcmrt/libsrc/drtes.cc
index 58d0027..5bcc618 100644
--- a/dcmrt/libsrc/drtes.cc
+++ b/dcmrt/libsrc/drtes.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTExposureSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -856,7 +856,7 @@ OFBool DRTExposureSequence::isValid() const
 }
 
 
-unsigned long DRTExposureSequence::getNumberOfItems() const
+size_t DRTExposureSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -886,12 +886,12 @@ OFCondition DRTExposureSequence::gotoNextItem()
 }
 
 
-OFCondition DRTExposureSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTExposureSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -906,12 +906,12 @@ OFCondition DRTExposureSequence::gotoItem(const unsigned long num, OFListIterato
 }
 
 
-OFCondition DRTExposureSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTExposureSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -926,7 +926,7 @@ OFCondition DRTExposureSequence::gotoItem(const unsigned long num, OFListConstIt
 }
 
 
-OFCondition DRTExposureSequence::gotoItem(const unsigned long num)
+OFCondition DRTExposureSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -962,7 +962,7 @@ const DRTExposureSequence::Item &DRTExposureSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTExposureSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTExposureSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -972,7 +972,7 @@ OFCondition DRTExposureSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTExposureSequence::Item &DRTExposureSequence::getItem(const unsigned long num)
+DRTExposureSequence::Item &DRTExposureSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -982,7 +982,7 @@ DRTExposureSequence::Item &DRTExposureSequence::getItem(const unsigned long num)
 }
 
 
-const DRTExposureSequence::Item &DRTExposureSequence::getItem(const unsigned long num) const
+const DRTExposureSequence::Item &DRTExposureSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -992,13 +992,13 @@ const DRTExposureSequence::Item &DRTExposureSequence::getItem(const unsigned lon
 }
 
 
-DRTExposureSequence::Item &DRTExposureSequence::operator[](const unsigned long num)
+DRTExposureSequence::Item &DRTExposureSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTExposureSequence::Item &DRTExposureSequence::operator[](const unsigned long num) const
+const DRTExposureSequence::Item &DRTExposureSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -1021,7 +1021,7 @@ OFCondition DRTExposureSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTExposureSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTExposureSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -1044,7 +1044,7 @@ OFCondition DRTExposureSequence::insertItem(const unsigned long pos, Item *&item
 }
 
 
-OFCondition DRTExposureSequence::removeItem(const unsigned long pos)
+OFCondition DRTExposureSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtfds.cc b/dcmrt/libsrc/drtfds.cc
index 3a69a63..739b0db 100644
--- a/dcmrt/libsrc/drtfds.cc
+++ b/dcmrt/libsrc/drtfds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFixationDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -388,7 +388,7 @@ OFBool DRTFixationDeviceSequence::isValid() const
 }
 
 
-unsigned long DRTFixationDeviceSequence::getNumberOfItems() const
+size_t DRTFixationDeviceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -418,12 +418,12 @@ OFCondition DRTFixationDeviceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTFixationDeviceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTFixationDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -438,12 +438,12 @@ OFCondition DRTFixationDeviceSequence::gotoItem(const unsigned long num, OFListI
 }
 
 
-OFCondition DRTFixationDeviceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTFixationDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -458,7 +458,7 @@ OFCondition DRTFixationDeviceSequence::gotoItem(const unsigned long num, OFListC
 }
 
 
-OFCondition DRTFixationDeviceSequence::gotoItem(const unsigned long num)
+OFCondition DRTFixationDeviceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -494,7 +494,7 @@ const DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::getCurrentItem
 }
 
 
-OFCondition DRTFixationDeviceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTFixationDeviceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -504,7 +504,7 @@ OFCondition DRTFixationDeviceSequence::getItem(const unsigned long num, Item *&i
 }
 
 
-DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::getItem(const unsigned long num)
+DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -514,7 +514,7 @@ DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::getItem(const unsign
 }
 
 
-const DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::getItem(const unsigned long num) const
+const DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -524,13 +524,13 @@ const DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::getItem(const
 }
 
 
-DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::operator[](const unsigned long num)
+DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::operator[](const unsigned long num) const
+const DRTFixationDeviceSequence::Item &DRTFixationDeviceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -553,7 +553,7 @@ OFCondition DRTFixationDeviceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTFixationDeviceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTFixationDeviceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -576,7 +576,7 @@ OFCondition DRTFixationDeviceSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTFixationDeviceSequence::removeItem(const unsigned long pos)
+OFCondition DRTFixationDeviceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtfes.cc b/dcmrt/libsrc/drtfes.cc
index add7207..2bf715e 100644
--- a/dcmrt/libsrc/drtfes.cc
+++ b/dcmrt/libsrc/drtfes.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFrameExtractionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -297,7 +297,7 @@ OFBool DRTFrameExtractionSequence::isValid() const
 }
 
 
-unsigned long DRTFrameExtractionSequence::getNumberOfItems() const
+size_t DRTFrameExtractionSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -327,12 +327,12 @@ OFCondition DRTFrameExtractionSequence::gotoNextItem()
 }
 
 
-OFCondition DRTFrameExtractionSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTFrameExtractionSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -347,12 +347,12 @@ OFCondition DRTFrameExtractionSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTFrameExtractionSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTFrameExtractionSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -367,7 +367,7 @@ OFCondition DRTFrameExtractionSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTFrameExtractionSequence::gotoItem(const unsigned long num)
+OFCondition DRTFrameExtractionSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -403,7 +403,7 @@ const DRTFrameExtractionSequence::Item &DRTFrameExtractionSequence::getCurrentIt
 }
 
 
-OFCondition DRTFrameExtractionSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTFrameExtractionSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -413,7 +413,7 @@ OFCondition DRTFrameExtractionSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTFrameExtractionSequence::Item &DRTFrameExtractionSequence::getItem(const unsigned long num)
+DRTFrameExtractionSequence::Item &DRTFrameExtractionSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -423,7 +423,7 @@ DRTFrameExtractionSequence::Item &DRTFrameExtractionSequence::getItem(const unsi
 }
 
 
-const DRTFrameExtractionSequence::Item &DRTFrameExtractionSequence::getItem(const unsigned long num) const
+const DRTFrameExtractionSequence::Item &DRTFrameExtractionSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -433,13 +433,13 @@ const DRTFrameExtractionSequence::Item &DRTFrameExtractionSequence::getItem(cons
 }
 
 
-DRTFrameExtractionSequence::Item &DRTFrameExtractionSequence::operator[](const unsigned long num)
+DRTFrameExtractionSequence::Item &DRTFrameExtractionSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTFrameExtractionSequence::Item &DRTFrameExtractionSequence::operator[](const unsigned long num) const
+const DRTFrameExtractionSequence::Item &DRTFrameExtractionSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -462,7 +462,7 @@ OFCondition DRTFrameExtractionSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTFrameExtractionSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTFrameExtractionSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -485,7 +485,7 @@ OFCondition DRTFrameExtractionSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTFrameExtractionSequence::removeItem(const unsigned long pos)
+OFCondition DRTFrameExtractionSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtfgs.cc b/dcmrt/libsrc/drtfgs.cc
index c82bde5..5d5f35a 100644
--- a/dcmrt/libsrc/drtfgs.cc
+++ b/dcmrt/libsrc/drtfgs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -536,7 +536,7 @@ OFBool DRTFractionGroupSequence::isValid() const
 }
 
 
-unsigned long DRTFractionGroupSequence::getNumberOfItems() const
+size_t DRTFractionGroupSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -566,12 +566,12 @@ OFCondition DRTFractionGroupSequence::gotoNextItem()
 }
 
 
-OFCondition DRTFractionGroupSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTFractionGroupSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -586,12 +586,12 @@ OFCondition DRTFractionGroupSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTFractionGroupSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTFractionGroupSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -606,7 +606,7 @@ OFCondition DRTFractionGroupSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTFractionGroupSequence::gotoItem(const unsigned long num)
+OFCondition DRTFractionGroupSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -642,7 +642,7 @@ const DRTFractionGroupSequence::Item &DRTFractionGroupSequence::getCurrentItem()
 }
 
 
-OFCondition DRTFractionGroupSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTFractionGroupSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -652,7 +652,7 @@ OFCondition DRTFractionGroupSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTFractionGroupSequence::Item &DRTFractionGroupSequence::getItem(const unsigned long num)
+DRTFractionGroupSequence::Item &DRTFractionGroupSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -662,7 +662,7 @@ DRTFractionGroupSequence::Item &DRTFractionGroupSequence::getItem(const unsigned
 }
 
 
-const DRTFractionGroupSequence::Item &DRTFractionGroupSequence::getItem(const unsigned long num) const
+const DRTFractionGroupSequence::Item &DRTFractionGroupSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -672,13 +672,13 @@ const DRTFractionGroupSequence::Item &DRTFractionGroupSequence::getItem(const un
 }
 
 
-DRTFractionGroupSequence::Item &DRTFractionGroupSequence::operator[](const unsigned long num)
+DRTFractionGroupSequence::Item &DRTFractionGroupSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTFractionGroupSequence::Item &DRTFractionGroupSequence::operator[](const unsigned long num) const
+const DRTFractionGroupSequence::Item &DRTFractionGroupSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -701,7 +701,7 @@ OFCondition DRTFractionGroupSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTFractionGroupSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTFractionGroupSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -724,7 +724,7 @@ OFCondition DRTFractionGroupSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTFractionGroupSequence::removeItem(const unsigned long pos)
+OFCondition DRTFractionGroupSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtfgss.cc b/dcmrt/libsrc/drtfgss.cc
index 6bfe62a..4735565 100644
--- a/dcmrt/libsrc/drtfgss.cc
+++ b/dcmrt/libsrc/drtfgss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionGroupSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -343,7 +343,7 @@ OFBool DRTFractionGroupSummarySequence::isValid() const
 }
 
 
-unsigned long DRTFractionGroupSummarySequence::getNumberOfItems() const
+size_t DRTFractionGroupSummarySequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -373,12 +373,12 @@ OFCondition DRTFractionGroupSummarySequence::gotoNextItem()
 }
 
 
-OFCondition DRTFractionGroupSummarySequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTFractionGroupSummarySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -393,12 +393,12 @@ OFCondition DRTFractionGroupSummarySequence::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTFractionGroupSummarySequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTFractionGroupSummarySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -413,7 +413,7 @@ OFCondition DRTFractionGroupSummarySequence::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTFractionGroupSummarySequence::gotoItem(const unsigned long num)
+OFCondition DRTFractionGroupSummarySequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -449,7 +449,7 @@ const DRTFractionGroupSummarySequence::Item &DRTFractionGroupSummarySequence::ge
 }
 
 
-OFCondition DRTFractionGroupSummarySequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTFractionGroupSummarySequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -459,7 +459,7 @@ OFCondition DRTFractionGroupSummarySequence::getItem(const unsigned long num, It
 }
 
 
-DRTFractionGroupSummarySequence::Item &DRTFractionGroupSummarySequence::getItem(const unsigned long num)
+DRTFractionGroupSummarySequence::Item &DRTFractionGroupSummarySequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -469,7 +469,7 @@ DRTFractionGroupSummarySequence::Item &DRTFractionGroupSummarySequence::getItem(
 }
 
 
-const DRTFractionGroupSummarySequence::Item &DRTFractionGroupSummarySequence::getItem(const unsigned long num) const
+const DRTFractionGroupSummarySequence::Item &DRTFractionGroupSummarySequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -479,13 +479,13 @@ const DRTFractionGroupSummarySequence::Item &DRTFractionGroupSummarySequence::ge
 }
 
 
-DRTFractionGroupSummarySequence::Item &DRTFractionGroupSummarySequence::operator[](const unsigned long num)
+DRTFractionGroupSummarySequence::Item &DRTFractionGroupSummarySequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTFractionGroupSummarySequence::Item &DRTFractionGroupSummarySequence::operator[](const unsigned long num) const
+const DRTFractionGroupSummarySequence::Item &DRTFractionGroupSummarySequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -508,7 +508,7 @@ OFCondition DRTFractionGroupSummarySequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTFractionGroupSummarySequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTFractionGroupSummarySequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -531,7 +531,7 @@ OFCondition DRTFractionGroupSummarySequence::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTFractionGroupSummarySequence::removeItem(const unsigned long pos)
+OFCondition DRTFractionGroupSummarySequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtfms.cc b/dcmrt/libsrc/drtfms.cc
index a0e73bb..56b3660 100644
--- a/dcmrt/libsrc/drtfms.cc
+++ b/dcmrt/libsrc/drtfms.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFluenceMapSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -260,7 +260,7 @@ OFBool DRTFluenceMapSequence::isValid() const
 }
 
 
-unsigned long DRTFluenceMapSequence::getNumberOfItems() const
+size_t DRTFluenceMapSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -290,12 +290,12 @@ OFCondition DRTFluenceMapSequence::gotoNextItem()
 }
 
 
-OFCondition DRTFluenceMapSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTFluenceMapSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -310,12 +310,12 @@ OFCondition DRTFluenceMapSequence::gotoItem(const unsigned long num, OFListItera
 }
 
 
-OFCondition DRTFluenceMapSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTFluenceMapSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,7 +330,7 @@ OFCondition DRTFluenceMapSequence::gotoItem(const unsigned long num, OFListConst
 }
 
 
-OFCondition DRTFluenceMapSequence::gotoItem(const unsigned long num)
+OFCondition DRTFluenceMapSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -366,7 +366,7 @@ const DRTFluenceMapSequence::Item &DRTFluenceMapSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTFluenceMapSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTFluenceMapSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -376,7 +376,7 @@ OFCondition DRTFluenceMapSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTFluenceMapSequence::Item &DRTFluenceMapSequence::getItem(const unsigned long num)
+DRTFluenceMapSequence::Item &DRTFluenceMapSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -386,7 +386,7 @@ DRTFluenceMapSequence::Item &DRTFluenceMapSequence::getItem(const unsigned long
 }
 
 
-const DRTFluenceMapSequence::Item &DRTFluenceMapSequence::getItem(const unsigned long num) const
+const DRTFluenceMapSequence::Item &DRTFluenceMapSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -396,13 +396,13 @@ const DRTFluenceMapSequence::Item &DRTFluenceMapSequence::getItem(const unsigned
 }
 
 
-DRTFluenceMapSequence::Item &DRTFluenceMapSequence::operator[](const unsigned long num)
+DRTFluenceMapSequence::Item &DRTFluenceMapSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTFluenceMapSequence::Item &DRTFluenceMapSequence::operator[](const unsigned long num) const
+const DRTFluenceMapSequence::Item &DRTFluenceMapSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -425,7 +425,7 @@ OFCondition DRTFluenceMapSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTFluenceMapSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTFluenceMapSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -448,7 +448,7 @@ OFCondition DRTFluenceMapSequence::insertItem(const unsigned long pos, Item *&it
 }
 
 
-OFCondition DRTFluenceMapSequence::removeItem(const unsigned long pos)
+OFCondition DRTFluenceMapSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtfsss.cc b/dcmrt/libsrc/drtfsss.cc
index 75400c7..79f9d82 100644
--- a/dcmrt/libsrc/drtfsss.cc
+++ b/dcmrt/libsrc/drtfsss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionStatusSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -318,7 +318,7 @@ OFBool DRTFractionStatusSummarySequence::isValid() const
 }
 
 
-unsigned long DRTFractionStatusSummarySequence::getNumberOfItems() const
+size_t DRTFractionStatusSummarySequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -348,12 +348,12 @@ OFCondition DRTFractionStatusSummarySequence::gotoNextItem()
 }
 
 
-OFCondition DRTFractionStatusSummarySequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTFractionStatusSummarySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -368,12 +368,12 @@ OFCondition DRTFractionStatusSummarySequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTFractionStatusSummarySequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTFractionStatusSummarySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -388,7 +388,7 @@ OFCondition DRTFractionStatusSummarySequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTFractionStatusSummarySequence::gotoItem(const unsigned long num)
+OFCondition DRTFractionStatusSummarySequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -424,7 +424,7 @@ const DRTFractionStatusSummarySequence::Item &DRTFractionStatusSummarySequence::
 }
 
 
-OFCondition DRTFractionStatusSummarySequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTFractionStatusSummarySequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -434,7 +434,7 @@ OFCondition DRTFractionStatusSummarySequence::getItem(const unsigned long num, I
 }
 
 
-DRTFractionStatusSummarySequence::Item &DRTFractionStatusSummarySequence::getItem(const unsigned long num)
+DRTFractionStatusSummarySequence::Item &DRTFractionStatusSummarySequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -444,7 +444,7 @@ DRTFractionStatusSummarySequence::Item &DRTFractionStatusSummarySequence::getIte
 }
 
 
-const DRTFractionStatusSummarySequence::Item &DRTFractionStatusSummarySequence::getItem(const unsigned long num) const
+const DRTFractionStatusSummarySequence::Item &DRTFractionStatusSummarySequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -454,13 +454,13 @@ const DRTFractionStatusSummarySequence::Item &DRTFractionStatusSummarySequence::
 }
 
 
-DRTFractionStatusSummarySequence::Item &DRTFractionStatusSummarySequence::operator[](const unsigned long num)
+DRTFractionStatusSummarySequence::Item &DRTFractionStatusSummarySequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTFractionStatusSummarySequence::Item &DRTFractionStatusSummarySequence::operator[](const unsigned long num) const
+const DRTFractionStatusSummarySequence::Item &DRTFractionStatusSummarySequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -483,7 +483,7 @@ OFCondition DRTFractionStatusSummarySequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTFractionStatusSummarySequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTFractionStatusSummarySequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -506,7 +506,7 @@ OFCondition DRTFractionStatusSummarySequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTFractionStatusSummarySequence::removeItem(const unsigned long pos)
+OFCondition DRTFractionStatusSummarySequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtgas.cc b/dcmrt/libsrc/drtgas.cc
index 613c9f2..e54dbeb 100644
--- a/dcmrt/libsrc/drtgas.cc
+++ b/dcmrt/libsrc/drtgas.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTGeneralAccessorySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -372,7 +372,7 @@ OFBool DRTGeneralAccessorySequence::isValid() const
 }
 
 
-unsigned long DRTGeneralAccessorySequence::getNumberOfItems() const
+size_t DRTGeneralAccessorySequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -402,12 +402,12 @@ OFCondition DRTGeneralAccessorySequence::gotoNextItem()
 }
 
 
-OFCondition DRTGeneralAccessorySequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTGeneralAccessorySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -422,12 +422,12 @@ OFCondition DRTGeneralAccessorySequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTGeneralAccessorySequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTGeneralAccessorySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -442,7 +442,7 @@ OFCondition DRTGeneralAccessorySequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTGeneralAccessorySequence::gotoItem(const unsigned long num)
+OFCondition DRTGeneralAccessorySequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -478,7 +478,7 @@ const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getCurrent
 }
 
 
-OFCondition DRTGeneralAccessorySequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTGeneralAccessorySequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -488,7 +488,7 @@ OFCondition DRTGeneralAccessorySequence::getItem(const unsigned long num, Item *
 }
 
 
-DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getItem(const unsigned long num)
+DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -498,7 +498,7 @@ DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getItem(const un
 }
 
 
-const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getItem(const unsigned long num) const
+const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -508,13 +508,13 @@ const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getItem(co
 }
 
 
-DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::operator[](const unsigned long num)
+DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::operator[](const unsigned long num) const
+const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -537,7 +537,7 @@ OFCondition DRTGeneralAccessorySequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTGeneralAccessorySequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTGeneralAccessorySequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -560,7 +560,7 @@ OFCondition DRTGeneralAccessorySequence::insertItem(const unsigned long pos, Ite
 }
 
 
-OFCondition DRTGeneralAccessorySequence::removeItem(const unsigned long pos)
+OFCondition DRTGeneralAccessorySequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtopis.cc b/dcmrt/libsrc/drtgpis.cc
similarity index 64%
copy from dcmrt/libsrc/drtopis.cc
copy to dcmrt/libsrc/drtgpis.cc
index a47bd1e..dd7164d 100644
--- a/dcmrt/libsrc/drtopis.cc
+++ b/dcmrt/libsrc/drtgpis.cc
@@ -1,50 +1,52 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTOtherPatientIDsSequence
+ *  Source file for class DRTGroupOfPatientsIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtopis.h"
+#include "dcmtk/dcmrt/seq/drtgpis.h"
 
 
 // --- item class ---
 
-DRTOtherPatientIDsSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTGroupOfPatientsIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PatientID(DCM_PatientID),
-    TypeOfPatientID(DCM_TypeOfPatientID)
+    PatientPosition(DCM_PatientPosition),
+    SubjectRelativePositionInImage(DCM_SubjectRelativePositionInImage)
 {
 }
 
 
-DRTOtherPatientIDsSequence::Item::Item(const Item &copy)
+DRTGroupOfPatientsIdentificationSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
     PatientID(copy.PatientID),
-    TypeOfPatientID(copy.TypeOfPatientID)
+    PatientPosition(copy.PatientPosition),
+    SubjectRelativePositionInImage(copy.SubjectRelativePositionInImage)
 {
 }
 
 
-DRTOtherPatientIDsSequence::Item::~Item()
+DRTGroupOfPatientsIdentificationSequence::Item::~Item()
 {
 }
 
 
-DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::Item::operator=(const Item &copy)
+DRTGroupOfPatientsIdentificationSequence::Item &DRTGroupOfPatientsIdentificationSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
@@ -52,13 +54,14 @@ DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::Item::operator=(co
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
         PatientID = copy.PatientID;
-        TypeOfPatientID = copy.TypeOfPatientID;
+        PatientPosition = copy.PatientPosition;
+        SubjectRelativePositionInImage = copy.SubjectRelativePositionInImage;
     }
     return *this;
 }
 
 
-void DRTOtherPatientIDsSequence::Item::clear()
+void DRTGroupOfPatientsIdentificationSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
@@ -66,59 +69,63 @@ void DRTOtherPatientIDsSequence::Item::clear()
         PatientID.clear();
         IssuerOfPatientID.clear();
         IssuerOfPatientIDQualifiersSequence.clear();
-        TypeOfPatientID.clear();
+        SubjectRelativePositionInImage.clear();
+        PatientPosition.clear();
     }
 }
 
 
-OFBool DRTOtherPatientIDsSequence::Item::isEmpty()
+OFBool DRTGroupOfPatientsIdentificationSequence::Item::isEmpty()
 {
     return PatientID.isEmpty() &&
            IssuerOfPatientID.isEmpty() &&
            IssuerOfPatientIDQualifiersSequence.isEmpty() &&
-           TypeOfPatientID.isEmpty();
+           SubjectRelativePositionInImage.isEmpty() &&
+           PatientPosition.isEmpty();
 }
 
 
-OFBool DRTOtherPatientIDsSequence::Item::isValid() const
+OFBool DRTGroupOfPatientsIdentificationSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::read(DcmItem &item)
+OFCondition DRTGroupOfPatientsIdentificationSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, PatientID, "1", "1", "OtherPatientIDsSequence");
-        getAndCheckElementFromDataset(item, IssuerOfPatientID, "1", "3", "OtherPatientIDsSequence");
-        IssuerOfPatientIDQualifiersSequence.read(item, "1-n", "3", "OtherPatientIDsSequence");
-        getAndCheckElementFromDataset(item, TypeOfPatientID, "1", "1", "OtherPatientIDsSequence");
+        getAndCheckElementFromDataset(item, PatientID, "1", "1", "GroupOfPatientsIdentificationSequence");
+        getAndCheckElementFromDataset(item, IssuerOfPatientID, "1", "3", "GroupOfPatientsIdentificationSequence");
+        IssuerOfPatientIDQualifiersSequence.read(item, "1-n", "3", "GroupOfPatientsIdentificationSequence");
+        getAndCheckElementFromDataset(item, SubjectRelativePositionInImage, "3", "3", "GroupOfPatientsIdentificationSequence");
+        getAndCheckElementFromDataset(item, PatientPosition, "1", "3", "GroupOfPatientsIdentificationSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::write(DcmItem &item)
+OFCondition DRTGroupOfPatientsIdentificationSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmLongString(PatientID), "1", "1", "OtherPatientIDsSequence");
-        addElementToDataset(result, item, new DcmLongString(IssuerOfPatientID), "1", "3", "OtherPatientIDsSequence");
-        if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(item, "1-n", "3", "OtherPatientIDsSequence");
-        addElementToDataset(result, item, new DcmCodeString(TypeOfPatientID), "1", "1", "OtherPatientIDsSequence");
+        addElementToDataset(result, item, new DcmLongString(PatientID), "1", "1", "GroupOfPatientsIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(IssuerOfPatientID), "1", "3", "GroupOfPatientsIdentificationSequence");
+        if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(item, "1-n", "3", "GroupOfPatientsIdentificationSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(SubjectRelativePositionInImage), "3", "3", "GroupOfPatientsIdentificationSequence");
+        addElementToDataset(result, item, new DcmCodeString(PatientPosition), "1", "3", "GroupOfPatientsIdentificationSequence");
     }
     return result;
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::getIssuerOfPatientID(OFString &value, const signed long pos) const
+OFCondition DRTGroupOfPatientsIdentificationSequence::Item::getIssuerOfPatientID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -127,7 +134,7 @@ OFCondition DRTOtherPatientIDsSequence::Item::getIssuerOfPatientID(OFString &val
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::getPatientID(OFString &value, const signed long pos) const
+OFCondition DRTGroupOfPatientsIdentificationSequence::Item::getPatientID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -136,16 +143,25 @@ OFCondition DRTOtherPatientIDsSequence::Item::getPatientID(OFString &value, cons
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::getTypeOfPatientID(OFString &value, const signed long pos) const
+OFCondition DRTGroupOfPatientsIdentificationSequence::Item::getPatientPosition(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(TypeOfPatientID, value, pos);
+        return getStringValueFromElement(PatientPosition, value, pos);
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::setIssuerOfPatientID(const OFString &value, const OFBool check)
+OFCondition DRTGroupOfPatientsIdentificationSequence::Item::getSubjectRelativePositionInImage(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, SubjectRelativePositionInImage).getUint16(value, pos);
+}
+
+
+OFCondition DRTGroupOfPatientsIdentificationSequence::Item::setIssuerOfPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -158,7 +174,7 @@ OFCondition DRTOtherPatientIDsSequence::Item::setIssuerOfPatientID(const OFStrin
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::setPatientID(const OFString &value, const OFBool check)
+OFCondition DRTGroupOfPatientsIdentificationSequence::Item::setPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -171,22 +187,31 @@ OFCondition DRTOtherPatientIDsSequence::Item::setPatientID(const OFString &value
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::setTypeOfPatientID(const OFString &value, const OFBool check)
+OFCondition DRTGroupOfPatientsIdentificationSequence::Item::setPatientPosition(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = TypeOfPatientID.putOFStringArray(value);
+            result = PatientPosition.putOFStringArray(value);
     }
     return result;
 }
 
 
+OFCondition DRTGroupOfPatientsIdentificationSequence::Item::setSubjectRelativePositionInImage(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SubjectRelativePositionInImage.putUint16(value, pos);
+}
+
+
 // --- sequence class ---
 
-DRTOtherPatientIDsSequence::DRTOtherPatientIDsSequence(const OFBool emptyDefaultSequence)
+DRTGroupOfPatientsIdentificationSequence::DRTGroupOfPatientsIdentificationSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -196,7 +221,7 @@ DRTOtherPatientIDsSequence::DRTOtherPatientIDsSequence(const OFBool emptyDefault
 }
 
 
-DRTOtherPatientIDsSequence::DRTOtherPatientIDsSequence(const DRTOtherPatientIDsSequence &copy)
+DRTGroupOfPatientsIdentificationSequence::DRTGroupOfPatientsIdentificationSequence(const DRTGroupOfPatientsIdentificationSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -222,7 +247,7 @@ DRTOtherPatientIDsSequence::DRTOtherPatientIDsSequence(const DRTOtherPatientIDsS
 }
 
 
-DRTOtherPatientIDsSequence &DRTOtherPatientIDsSequence::operator=(const DRTOtherPatientIDsSequence &copy)
+DRTGroupOfPatientsIdentificationSequence &DRTGroupOfPatientsIdentificationSequence::operator=(const DRTGroupOfPatientsIdentificationSequence &copy)
 {
     if (this != &copy)
     {
@@ -250,13 +275,13 @@ DRTOtherPatientIDsSequence &DRTOtherPatientIDsSequence::operator=(const DRTOther
 }
 
 
-DRTOtherPatientIDsSequence::~DRTOtherPatientIDsSequence()
+DRTGroupOfPatientsIdentificationSequence::~DRTGroupOfPatientsIdentificationSequence()
 {
     clear();
 }
 
 
-void DRTOtherPatientIDsSequence::clear()
+void DRTGroupOfPatientsIdentificationSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -275,25 +300,25 @@ void DRTOtherPatientIDsSequence::clear()
 }
 
 
-OFBool DRTOtherPatientIDsSequence::isEmpty()
+OFBool DRTGroupOfPatientsIdentificationSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTOtherPatientIDsSequence::isValid() const
+OFBool DRTGroupOfPatientsIdentificationSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTOtherPatientIDsSequence::getNumberOfItems() const
+size_t DRTGroupOfPatientsIdentificationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoFirstItem()
+OFCondition DRTGroupOfPatientsIdentificationSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -305,7 +330,7 @@ OFCondition DRTOtherPatientIDsSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoNextItem()
+OFCondition DRTGroupOfPatientsIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -317,12 +342,12 @@ OFCondition DRTOtherPatientIDsSequence::gotoNextItem()
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTGroupOfPatientsIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -337,12 +362,12 @@ OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTGroupOfPatientsIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -357,13 +382,13 @@ OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num)
+OFCondition DRTGroupOfPatientsIdentificationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::getCurrentItem(Item *&item) const
+OFCondition DRTGroupOfPatientsIdentificationSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -375,7 +400,7 @@ OFCondition DRTOtherPatientIDsSequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getCurrentItem()
+DRTGroupOfPatientsIdentificationSequence::Item &DRTGroupOfPatientsIdentificationSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -384,7 +409,7 @@ DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getCurrentItem()
 }
 
 
-const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getCurrentItem() const
+const DRTGroupOfPatientsIdentificationSequence::Item &DRTGroupOfPatientsIdentificationSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -393,7 +418,7 @@ const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getCurrentIt
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTGroupOfPatientsIdentificationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -403,7 +428,7 @@ OFCondition DRTOtherPatientIDsSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(const unsigned long num)
+DRTGroupOfPatientsIdentificationSequence::Item &DRTGroupOfPatientsIdentificationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -413,7 +438,7 @@ DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(const unsi
 }
 
 
-const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(const unsigned long num) const
+const DRTGroupOfPatientsIdentificationSequence::Item &DRTGroupOfPatientsIdentificationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -423,19 +448,19 @@ const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(cons
 }
 
 
-DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::operator[](const unsigned long num)
+DRTGroupOfPatientsIdentificationSequence::Item &DRTGroupOfPatientsIdentificationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::operator[](const unsigned long num) const
+const DRTGroupOfPatientsIdentificationSequence::Item &DRTGroupOfPatientsIdentificationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::addItem(Item *&item)
+OFCondition DRTGroupOfPatientsIdentificationSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -452,7 +477,7 @@ OFCondition DRTOtherPatientIDsSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTGroupOfPatientsIdentificationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -475,7 +500,7 @@ OFCondition DRTOtherPatientIDsSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::removeItem(const unsigned long pos)
+OFCondition DRTGroupOfPatientsIdentificationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -493,10 +518,10 @@ OFCondition DRTOtherPatientIDsSequence::removeItem(const unsigned long pos)
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::read(DcmItem &dataset,
-                                             const OFString &card,
-                                             const OFString &type,
-                                             const char *moduleName)
+OFCondition DRTGroupOfPatientsIdentificationSequence::read(DcmItem &dataset,
+                                                           const OFString &card,
+                                                           const OFString &type,
+                                                           const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -505,7 +530,7 @@ OFCondition DRTOtherPatientIDsSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_OtherPatientIDsSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_GroupOfPatientsIdentificationSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -535,7 +560,7 @@ OFCondition DRTOtherPatientIDsSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_OtherPatientIDsSequence);
+            DcmSequenceOfItems element(DCM_GroupOfPatientsIdentificationSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -543,16 +568,16 @@ OFCondition DRTOtherPatientIDsSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::write(DcmItem &dataset,
-                                              const OFString &card,
-                                              const OFString &type,
-                                              const char *moduleName)
+OFCondition DRTGroupOfPatientsIdentificationSequence::write(DcmItem &dataset,
+                                                            const OFString &card,
+                                                            const OFString &type,
+                                                            const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_OtherPatientIDsSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GroupOfPatientsIdentificationSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drthsdrs.cc b/dcmrt/libsrc/drthsdrs.cc
index 129979a..1c47369 100644
--- a/dcmrt/libsrc/drthsdrs.cc
+++ b/dcmrt/libsrc/drthsdrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTHL7StructuredDocumentReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -309,7 +309,7 @@ OFBool DRTHL7StructuredDocumentReferenceSequence::isValid() const
 }
 
 
-unsigned long DRTHL7StructuredDocumentReferenceSequence::getNumberOfItems() const
+size_t DRTHL7StructuredDocumentReferenceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -339,12 +339,12 @@ OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -359,12 +359,12 @@ OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoItem(const unsigned l
 }
 
 
-OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -379,7 +379,7 @@ OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoItem(const unsigned l
 }
 
 
-OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoItem(const unsigned long num)
+OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -415,7 +415,7 @@ const DRTHL7StructuredDocumentReferenceSequence::Item &DRTHL7StructuredDocumentR
 }
 
 
-OFCondition DRTHL7StructuredDocumentReferenceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTHL7StructuredDocumentReferenceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -425,7 +425,7 @@ OFCondition DRTHL7StructuredDocumentReferenceSequence::getItem(const unsigned lo
 }
 
 
-DRTHL7StructuredDocumentReferenceSequence::Item &DRTHL7StructuredDocumentReferenceSequence::getItem(const unsigned long num)
+DRTHL7StructuredDocumentReferenceSequence::Item &DRTHL7StructuredDocumentReferenceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -435,7 +435,7 @@ DRTHL7StructuredDocumentReferenceSequence::Item &DRTHL7StructuredDocumentReferen
 }
 
 
-const DRTHL7StructuredDocumentReferenceSequence::Item &DRTHL7StructuredDocumentReferenceSequence::getItem(const unsigned long num) const
+const DRTHL7StructuredDocumentReferenceSequence::Item &DRTHL7StructuredDocumentReferenceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -445,13 +445,13 @@ const DRTHL7StructuredDocumentReferenceSequence::Item &DRTHL7StructuredDocumentR
 }
 
 
-DRTHL7StructuredDocumentReferenceSequence::Item &DRTHL7StructuredDocumentReferenceSequence::operator[](const unsigned long num)
+DRTHL7StructuredDocumentReferenceSequence::Item &DRTHL7StructuredDocumentReferenceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTHL7StructuredDocumentReferenceSequence::Item &DRTHL7StructuredDocumentReferenceSequence::operator[](const unsigned long num) const
+const DRTHL7StructuredDocumentReferenceSequence::Item &DRTHL7StructuredDocumentReferenceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -474,7 +474,7 @@ OFCondition DRTHL7StructuredDocumentReferenceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTHL7StructuredDocumentReferenceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTHL7StructuredDocumentReferenceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -497,7 +497,7 @@ OFCondition DRTHL7StructuredDocumentReferenceSequence::insertItem(const unsigned
 }
 
 
-OFCondition DRTHL7StructuredDocumentReferenceSequence::removeItem(const unsigned long pos)
+OFCondition DRTHL7StructuredDocumentReferenceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtiais.cc b/dcmrt/libsrc/drtiais.cc
index c206dae..f5b2a1b 100644
--- a/dcmrt/libsrc/drtiais.cc
+++ b/dcmrt/libsrc/drtiais.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfAdmissionIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -280,7 +280,7 @@ OFBool DRTIssuerOfAdmissionIDSequence::isValid() const
 }
 
 
-unsigned long DRTIssuerOfAdmissionIDSequence::getNumberOfItems() const
+size_t DRTIssuerOfAdmissionIDSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -310,12 +310,12 @@ OFCondition DRTIssuerOfAdmissionIDSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIssuerOfAdmissionIDSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIssuerOfAdmissionIDSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,12 +330,12 @@ OFCondition DRTIssuerOfAdmissionIDSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTIssuerOfAdmissionIDSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIssuerOfAdmissionIDSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -350,7 +350,7 @@ OFCondition DRTIssuerOfAdmissionIDSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTIssuerOfAdmissionIDSequence::gotoItem(const unsigned long num)
+OFCondition DRTIssuerOfAdmissionIDSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -386,7 +386,7 @@ const DRTIssuerOfAdmissionIDSequence::Item &DRTIssuerOfAdmissionIDSequence::getC
 }
 
 
-OFCondition DRTIssuerOfAdmissionIDSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIssuerOfAdmissionIDSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -396,7 +396,7 @@ OFCondition DRTIssuerOfAdmissionIDSequence::getItem(const unsigned long num, Ite
 }
 
 
-DRTIssuerOfAdmissionIDSequence::Item &DRTIssuerOfAdmissionIDSequence::getItem(const unsigned long num)
+DRTIssuerOfAdmissionIDSequence::Item &DRTIssuerOfAdmissionIDSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -406,7 +406,7 @@ DRTIssuerOfAdmissionIDSequence::Item &DRTIssuerOfAdmissionIDSequence::getItem(co
 }
 
 
-const DRTIssuerOfAdmissionIDSequence::Item &DRTIssuerOfAdmissionIDSequence::getItem(const unsigned long num) const
+const DRTIssuerOfAdmissionIDSequence::Item &DRTIssuerOfAdmissionIDSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -416,13 +416,13 @@ const DRTIssuerOfAdmissionIDSequence::Item &DRTIssuerOfAdmissionIDSequence::getI
 }
 
 
-DRTIssuerOfAdmissionIDSequence::Item &DRTIssuerOfAdmissionIDSequence::operator[](const unsigned long num)
+DRTIssuerOfAdmissionIDSequence::Item &DRTIssuerOfAdmissionIDSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIssuerOfAdmissionIDSequence::Item &DRTIssuerOfAdmissionIDSequence::operator[](const unsigned long num) const
+const DRTIssuerOfAdmissionIDSequence::Item &DRTIssuerOfAdmissionIDSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -445,7 +445,7 @@ OFCondition DRTIssuerOfAdmissionIDSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIssuerOfAdmissionIDSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIssuerOfAdmissionIDSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -468,7 +468,7 @@ OFCondition DRTIssuerOfAdmissionIDSequence::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTIssuerOfAdmissionIDSequence::removeItem(const unsigned long pos)
+OFCondition DRTIssuerOfAdmissionIDSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtians.cc b/dcmrt/libsrc/drtians.cc
index 6e0bb83..6cdc545 100644
--- a/dcmrt/libsrc/drtians.cc
+++ b/dcmrt/libsrc/drtians.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfAccessionNumberSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -280,7 +280,7 @@ OFBool DRTIssuerOfAccessionNumberSequence::isValid() const
 }
 
 
-unsigned long DRTIssuerOfAccessionNumberSequence::getNumberOfItems() const
+size_t DRTIssuerOfAccessionNumberSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -310,12 +310,12 @@ OFCondition DRTIssuerOfAccessionNumberSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIssuerOfAccessionNumberSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIssuerOfAccessionNumberSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,12 +330,12 @@ OFCondition DRTIssuerOfAccessionNumberSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTIssuerOfAccessionNumberSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIssuerOfAccessionNumberSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -350,7 +350,7 @@ OFCondition DRTIssuerOfAccessionNumberSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTIssuerOfAccessionNumberSequence::gotoItem(const unsigned long num)
+OFCondition DRTIssuerOfAccessionNumberSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -386,7 +386,7 @@ const DRTIssuerOfAccessionNumberSequence::Item &DRTIssuerOfAccessionNumberSequen
 }
 
 
-OFCondition DRTIssuerOfAccessionNumberSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIssuerOfAccessionNumberSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -396,7 +396,7 @@ OFCondition DRTIssuerOfAccessionNumberSequence::getItem(const unsigned long num,
 }
 
 
-DRTIssuerOfAccessionNumberSequence::Item &DRTIssuerOfAccessionNumberSequence::getItem(const unsigned long num)
+DRTIssuerOfAccessionNumberSequence::Item &DRTIssuerOfAccessionNumberSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -406,7 +406,7 @@ DRTIssuerOfAccessionNumberSequence::Item &DRTIssuerOfAccessionNumberSequence::ge
 }
 
 
-const DRTIssuerOfAccessionNumberSequence::Item &DRTIssuerOfAccessionNumberSequence::getItem(const unsigned long num) const
+const DRTIssuerOfAccessionNumberSequence::Item &DRTIssuerOfAccessionNumberSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -416,13 +416,13 @@ const DRTIssuerOfAccessionNumberSequence::Item &DRTIssuerOfAccessionNumberSequen
 }
 
 
-DRTIssuerOfAccessionNumberSequence::Item &DRTIssuerOfAccessionNumberSequence::operator[](const unsigned long num)
+DRTIssuerOfAccessionNumberSequence::Item &DRTIssuerOfAccessionNumberSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIssuerOfAccessionNumberSequence::Item &DRTIssuerOfAccessionNumberSequence::operator[](const unsigned long num) const
+const DRTIssuerOfAccessionNumberSequence::Item &DRTIssuerOfAccessionNumberSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -445,7 +445,7 @@ OFCondition DRTIssuerOfAccessionNumberSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIssuerOfAccessionNumberSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIssuerOfAccessionNumberSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -468,7 +468,7 @@ OFCondition DRTIssuerOfAccessionNumberSequence::insertItem(const unsigned long p
 }
 
 
-OFCondition DRTIssuerOfAccessionNumberSequence::removeItem(const unsigned long pos)
+OFCondition DRTIssuerOfAccessionNumberSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtiblds.cc b/dcmrt/libsrc/drtiblds.cc
index 0cc4309..02b432b 100644
--- a/dcmrt/libsrc/drtiblds.cc
+++ b/dcmrt/libsrc/drtiblds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamLimitingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -332,7 +332,7 @@ OFBool DRTIonBeamLimitingDeviceSequence::isValid() const
 }
 
 
-unsigned long DRTIonBeamLimitingDeviceSequence::getNumberOfItems() const
+size_t DRTIonBeamLimitingDeviceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -362,12 +362,12 @@ OFCondition DRTIonBeamLimitingDeviceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIonBeamLimitingDeviceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIonBeamLimitingDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -382,12 +382,12 @@ OFCondition DRTIonBeamLimitingDeviceSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTIonBeamLimitingDeviceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIonBeamLimitingDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -402,7 +402,7 @@ OFCondition DRTIonBeamLimitingDeviceSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTIonBeamLimitingDeviceSequence::gotoItem(const unsigned long num)
+OFCondition DRTIonBeamLimitingDeviceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -438,7 +438,7 @@ const DRTIonBeamLimitingDeviceSequence::Item &DRTIonBeamLimitingDeviceSequence::
 }
 
 
-OFCondition DRTIonBeamLimitingDeviceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIonBeamLimitingDeviceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -448,7 +448,7 @@ OFCondition DRTIonBeamLimitingDeviceSequence::getItem(const unsigned long num, I
 }
 
 
-DRTIonBeamLimitingDeviceSequence::Item &DRTIonBeamLimitingDeviceSequence::getItem(const unsigned long num)
+DRTIonBeamLimitingDeviceSequence::Item &DRTIonBeamLimitingDeviceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -458,7 +458,7 @@ DRTIonBeamLimitingDeviceSequence::Item &DRTIonBeamLimitingDeviceSequence::getIte
 }
 
 
-const DRTIonBeamLimitingDeviceSequence::Item &DRTIonBeamLimitingDeviceSequence::getItem(const unsigned long num) const
+const DRTIonBeamLimitingDeviceSequence::Item &DRTIonBeamLimitingDeviceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -468,13 +468,13 @@ const DRTIonBeamLimitingDeviceSequence::Item &DRTIonBeamLimitingDeviceSequence::
 }
 
 
-DRTIonBeamLimitingDeviceSequence::Item &DRTIonBeamLimitingDeviceSequence::operator[](const unsigned long num)
+DRTIonBeamLimitingDeviceSequence::Item &DRTIonBeamLimitingDeviceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIonBeamLimitingDeviceSequence::Item &DRTIonBeamLimitingDeviceSequence::operator[](const unsigned long num) const
+const DRTIonBeamLimitingDeviceSequence::Item &DRTIonBeamLimitingDeviceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -497,7 +497,7 @@ OFCondition DRTIonBeamLimitingDeviceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIonBeamLimitingDeviceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIonBeamLimitingDeviceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -520,7 +520,7 @@ OFCondition DRTIonBeamLimitingDeviceSequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTIonBeamLimitingDeviceSequence::removeItem(const unsigned long pos)
+OFCondition DRTIonBeamLimitingDeviceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtibls.cc b/dcmrt/libsrc/drtibls.cc
index a58a038..260b4e5 100644
--- a/dcmrt/libsrc/drtibls.cc
+++ b/dcmrt/libsrc/drtibls.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -627,7 +627,7 @@ OFBool DRTIonBlockSequence::isValid() const
 }
 
 
-unsigned long DRTIonBlockSequence::getNumberOfItems() const
+size_t DRTIonBlockSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -657,12 +657,12 @@ OFCondition DRTIonBlockSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIonBlockSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIonBlockSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -677,12 +677,12 @@ OFCondition DRTIonBlockSequence::gotoItem(const unsigned long num, OFListIterato
 }
 
 
-OFCondition DRTIonBlockSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIonBlockSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -697,7 +697,7 @@ OFCondition DRTIonBlockSequence::gotoItem(const unsigned long num, OFListConstIt
 }
 
 
-OFCondition DRTIonBlockSequence::gotoItem(const unsigned long num)
+OFCondition DRTIonBlockSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -733,7 +733,7 @@ const DRTIonBlockSequence::Item &DRTIonBlockSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTIonBlockSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIonBlockSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -743,7 +743,7 @@ OFCondition DRTIonBlockSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTIonBlockSequence::Item &DRTIonBlockSequence::getItem(const unsigned long num)
+DRTIonBlockSequence::Item &DRTIonBlockSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -753,7 +753,7 @@ DRTIonBlockSequence::Item &DRTIonBlockSequence::getItem(const unsigned long num)
 }
 
 
-const DRTIonBlockSequence::Item &DRTIonBlockSequence::getItem(const unsigned long num) const
+const DRTIonBlockSequence::Item &DRTIonBlockSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -763,13 +763,13 @@ const DRTIonBlockSequence::Item &DRTIonBlockSequence::getItem(const unsigned lon
 }
 
 
-DRTIonBlockSequence::Item &DRTIonBlockSequence::operator[](const unsigned long num)
+DRTIonBlockSequence::Item &DRTIonBlockSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIonBlockSequence::Item &DRTIonBlockSequence::operator[](const unsigned long num) const
+const DRTIonBlockSequence::Item &DRTIonBlockSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -792,7 +792,7 @@ OFCondition DRTIonBlockSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIonBlockSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIonBlockSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -815,7 +815,7 @@ OFCondition DRTIonBlockSequence::insertItem(const unsigned long pos, Item *&item
 }
 
 
-OFCondition DRTIonBlockSequence::removeItem(const unsigned long pos)
+OFCondition DRTIonBlockSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtibs.cc b/dcmrt/libsrc/drtibs.cc
index 88cffe1..69779fa 100644
--- a/dcmrt/libsrc/drtibs.cc
+++ b/dcmrt/libsrc/drtibs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -26,8 +26,10 @@ DRTIonBeamSequence::Item::Item(const OFBool emptyDefaultItem)
     BeamName(DCM_BeamName),
     BeamNumber(DCM_BeamNumber),
     BeamType(DCM_BeamType),
+    DepthDoseParametersSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     FinalCumulativeMetersetWeight(DCM_FinalCumulativeMetersetWeight),
+    FixationEye(DCM_FixationEye),
     FixationLightAzimuthalAngle(DCM_FixationLightAzimuthalAngle),
     FixationLightPolarAngle(DCM_FixationLightPolarAngle),
     GeneralAccessorySequence(emptyDefaultItem /*emptyDefaultSequence*/),
@@ -42,6 +44,7 @@ DRTIonBeamSequence::Item::Item(const OFBool emptyDefaultItem)
     LateralSpreadingDeviceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     Manufacturer(DCM_Manufacturer),
     ManufacturerModelName(DCM_ManufacturerModelName),
+    ModulatedScanModeType(DCM_ModulatedScanModeType),
     NumberOfBlocks(DCM_NumberOfBlocks),
     NumberOfBoli(DCM_NumberOfBoli),
     NumberOfCompensators(DCM_NumberOfCompensators),
@@ -84,8 +87,10 @@ DRTIonBeamSequence::Item::Item(const Item &copy)
     BeamName(copy.BeamName),
     BeamNumber(copy.BeamNumber),
     BeamType(copy.BeamType),
+    DepthDoseParametersSequence(copy.DepthDoseParametersSequence),
     DeviceSerialNumber(copy.DeviceSerialNumber),
     FinalCumulativeMetersetWeight(copy.FinalCumulativeMetersetWeight),
+    FixationEye(copy.FixationEye),
     FixationLightAzimuthalAngle(copy.FixationLightAzimuthalAngle),
     FixationLightPolarAngle(copy.FixationLightPolarAngle),
     GeneralAccessorySequence(copy.GeneralAccessorySequence),
@@ -100,6 +105,7 @@ DRTIonBeamSequence::Item::Item(const Item &copy)
     LateralSpreadingDeviceSequence(copy.LateralSpreadingDeviceSequence),
     Manufacturer(copy.Manufacturer),
     ManufacturerModelName(copy.ManufacturerModelName),
+    ModulatedScanModeType(copy.ModulatedScanModeType),
     NumberOfBlocks(copy.NumberOfBlocks),
     NumberOfBoli(copy.NumberOfBoli),
     NumberOfCompensators(copy.NumberOfCompensators),
@@ -150,8 +156,10 @@ DRTIonBeamSequence::Item &DRTIonBeamSequence::Item::operator=(const Item &copy)
         BeamName = copy.BeamName;
         BeamNumber = copy.BeamNumber;
         BeamType = copy.BeamType;
+        DepthDoseParametersSequence = copy.DepthDoseParametersSequence;
         DeviceSerialNumber = copy.DeviceSerialNumber;
         FinalCumulativeMetersetWeight = copy.FinalCumulativeMetersetWeight;
+        FixationEye = copy.FixationEye;
         FixationLightAzimuthalAngle = copy.FixationLightAzimuthalAngle;
         FixationLightPolarAngle = copy.FixationLightPolarAngle;
         GeneralAccessorySequence = copy.GeneralAccessorySequence;
@@ -166,6 +174,7 @@ DRTIonBeamSequence::Item &DRTIonBeamSequence::Item::operator=(const Item &copy)
         LateralSpreadingDeviceSequence = copy.LateralSpreadingDeviceSequence;
         Manufacturer = copy.Manufacturer;
         ManufacturerModelName = copy.ManufacturerModelName;
+        ModulatedScanModeType = copy.ModulatedScanModeType;
         NumberOfBlocks = copy.NumberOfBlocks;
         NumberOfBoli = copy.NumberOfBoli;
         NumberOfCompensators = copy.NumberOfCompensators;
@@ -216,6 +225,7 @@ void DRTIonBeamSequence::Item::clear()
         RadiationAtomicNumber.clear();
         RadiationChargeState.clear();
         ScanMode.clear();
+        ModulatedScanModeType.clear();
         TreatmentMachineName.clear();
         Manufacturer.clear();
         InstitutionName.clear();
@@ -226,6 +236,7 @@ void DRTIonBeamSequence::Item::clear()
         PrimaryDosimeterUnit.clear();
         ReferencedToleranceTableNumber.clear();
         VirtualSourceAxisDistances.clear();
+        DepthDoseParametersSequence.clear();
         IonBeamLimitingDeviceSequence.clear();
         ReferencedPatientSetupNumber.clear();
         ReferencedReferenceImageSequence.clear();
@@ -256,6 +267,7 @@ void DRTIonBeamSequence::Item::clear()
         PatientSupportAccessoryCode.clear();
         FixationLightAzimuthalAngle.clear();
         FixationLightPolarAngle.clear();
+        FixationEye.clear();
         FinalCumulativeMetersetWeight.clear();
         NumberOfControlPoints.clear();
         IonControlPointSequence.clear();
@@ -274,6 +286,7 @@ OFBool DRTIonBeamSequence::Item::isEmpty()
            RadiationAtomicNumber.isEmpty() &&
            RadiationChargeState.isEmpty() &&
            ScanMode.isEmpty() &&
+           ModulatedScanModeType.isEmpty() &&
            TreatmentMachineName.isEmpty() &&
            Manufacturer.isEmpty() &&
            InstitutionName.isEmpty() &&
@@ -284,6 +297,7 @@ OFBool DRTIonBeamSequence::Item::isEmpty()
            PrimaryDosimeterUnit.isEmpty() &&
            ReferencedToleranceTableNumber.isEmpty() &&
            VirtualSourceAxisDistances.isEmpty() &&
+           DepthDoseParametersSequence.isEmpty() &&
            IonBeamLimitingDeviceSequence.isEmpty() &&
            ReferencedPatientSetupNumber.isEmpty() &&
            ReferencedReferenceImageSequence.isEmpty() &&
@@ -314,6 +328,7 @@ OFBool DRTIonBeamSequence::Item::isEmpty()
            PatientSupportAccessoryCode.isEmpty() &&
            FixationLightAzimuthalAngle.isEmpty() &&
            FixationLightPolarAngle.isEmpty() &&
+           FixationEye.isEmpty() &&
            FinalCumulativeMetersetWeight.isEmpty() &&
            NumberOfControlPoints.isEmpty() &&
            IonControlPointSequence.isEmpty();
@@ -342,6 +357,7 @@ OFCondition DRTIonBeamSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, RadiationAtomicNumber, "1", "1C", "IonBeamSequence");
         getAndCheckElementFromDataset(item, RadiationChargeState, "1", "1C", "IonBeamSequence");
         getAndCheckElementFromDataset(item, ScanMode, "1", "1", "IonBeamSequence");
+        getAndCheckElementFromDataset(item, ModulatedScanModeType, "1", "1C", "IonBeamSequence");
         getAndCheckElementFromDataset(item, TreatmentMachineName, "1", "2", "IonBeamSequence");
         getAndCheckElementFromDataset(item, Manufacturer, "1", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, InstitutionName, "1", "3", "IonBeamSequence");
@@ -352,6 +368,7 @@ OFCondition DRTIonBeamSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, PrimaryDosimeterUnit, "1", "1", "IonBeamSequence");
         getAndCheckElementFromDataset(item, ReferencedToleranceTableNumber, "1", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, VirtualSourceAxisDistances, "2", "1", "IonBeamSequence");
+        DepthDoseParametersSequence.read(item, "1-n", "3", "IonBeamSequence");
         IonBeamLimitingDeviceSequence.read(item, "1-n", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, ReferencedPatientSetupNumber, "1", "3", "IonBeamSequence");
         ReferencedReferenceImageSequence.read(item, "1-n", "3", "IonBeamSequence");
@@ -382,6 +399,7 @@ OFCondition DRTIonBeamSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, PatientSupportAccessoryCode, "1", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, FixationLightAzimuthalAngle, "1", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, FixationLightPolarAngle, "1", "3", "IonBeamSequence");
+        getAndCheckElementFromDataset(item, FixationEye, "1", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, FinalCumulativeMetersetWeight, "1", "1C", "IonBeamSequence");
         getAndCheckElementFromDataset(item, NumberOfControlPoints, "1", "1", "IonBeamSequence");
         IonControlPointSequence.read(item, "1-n", "1", "IonBeamSequence");
@@ -406,6 +424,7 @@ OFCondition DRTIonBeamSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmIntegerString(RadiationAtomicNumber), "1", "1C", "IonBeamSequence");
         addElementToDataset(result, item, new DcmSignedShort(RadiationChargeState), "1", "1C", "IonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(ScanMode), "1", "1", "IonBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(ModulatedScanModeType), "1", "1C", "IonBeamSequence");
         addElementToDataset(result, item, new DcmShortString(TreatmentMachineName), "1", "2", "IonBeamSequence");
         addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "3", "IonBeamSequence");
@@ -416,6 +435,7 @@ OFCondition DRTIonBeamSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmCodeString(PrimaryDosimeterUnit), "1", "1", "IonBeamSequence");
         addElementToDataset(result, item, new DcmIntegerString(ReferencedToleranceTableNumber), "1", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(VirtualSourceAxisDistances), "2", "1", "IonBeamSequence");
+        if (result.good()) result = DepthDoseParametersSequence.write(item, "1-n", "3", "IonBeamSequence");
         if (result.good()) result = IonBeamLimitingDeviceSequence.write(item, "1-n", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmIntegerString(ReferencedPatientSetupNumber), "1", "3", "IonBeamSequence");
         if (result.good()) result = ReferencedReferenceImageSequence.write(item, "1-n", "3", "IonBeamSequence");
@@ -446,6 +466,7 @@ OFCondition DRTIonBeamSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmLongString(PatientSupportAccessoryCode), "1", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(FixationLightAzimuthalAngle), "1", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(FixationLightPolarAngle), "1", "3", "IonBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(FixationEye), "1", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(FinalCumulativeMetersetWeight), "1", "1C", "IonBeamSequence");
         addElementToDataset(result, item, new DcmIntegerString(NumberOfControlPoints), "1", "1", "IonBeamSequence");
         if (result.good()) result = IonControlPointSequence.write(item, "1-n", "1", "IonBeamSequence");
@@ -526,6 +547,15 @@ OFCondition DRTIonBeamSequence::Item::getFinalCumulativeMetersetWeight(Float64 &
 }
 
 
+OFCondition DRTIonBeamSequence::Item::getFixationEye(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(FixationEye, value, pos);
+}
+
+
 OFCondition DRTIonBeamSequence::Item::getFixationLightAzimuthalAngle(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
@@ -589,6 +619,15 @@ OFCondition DRTIonBeamSequence::Item::getManufacturerModelName(OFString &value,
 }
 
 
+OFCondition DRTIonBeamSequence::Item::getModulatedScanModeType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ModulatedScanModeType, value, pos);
+}
+
+
 OFCondition DRTIonBeamSequence::Item::getNumberOfBlocks(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -1000,6 +1039,19 @@ OFCondition DRTIonBeamSequence::Item::setFinalCumulativeMetersetWeight(const OFS
 }
 
 
+OFCondition DRTIonBeamSequence::Item::setFixationEye(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = FixationEye.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTIonBeamSequence::Item::setFixationLightAzimuthalAngle(const Float32 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
@@ -1083,6 +1135,19 @@ OFCondition DRTIonBeamSequence::Item::setManufacturerModelName(const OFString &v
 }
 
 
+OFCondition DRTIonBeamSequence::Item::setModulatedScanModeType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ModulatedScanModeType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTIonBeamSequence::Item::setNumberOfBlocks(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -1491,7 +1556,7 @@ OFBool DRTIonBeamSequence::isValid() const
 }
 
 
-unsigned long DRTIonBeamSequence::getNumberOfItems() const
+size_t DRTIonBeamSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -1521,12 +1586,12 @@ OFCondition DRTIonBeamSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIonBeamSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIonBeamSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1541,12 +1606,12 @@ OFCondition DRTIonBeamSequence::gotoItem(const unsigned long num, OFListIterator
 }
 
 
-OFCondition DRTIonBeamSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIonBeamSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1561,7 +1626,7 @@ OFCondition DRTIonBeamSequence::gotoItem(const unsigned long num, OFListConstIte
 }
 
 
-OFCondition DRTIonBeamSequence::gotoItem(const unsigned long num)
+OFCondition DRTIonBeamSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -1597,7 +1662,7 @@ const DRTIonBeamSequence::Item &DRTIonBeamSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTIonBeamSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIonBeamSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -1607,7 +1672,7 @@ OFCondition DRTIonBeamSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTIonBeamSequence::Item &DRTIonBeamSequence::getItem(const unsigned long num)
+DRTIonBeamSequence::Item &DRTIonBeamSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1617,7 +1682,7 @@ DRTIonBeamSequence::Item &DRTIonBeamSequence::getItem(const unsigned long num)
 }
 
 
-const DRTIonBeamSequence::Item &DRTIonBeamSequence::getItem(const unsigned long num) const
+const DRTIonBeamSequence::Item &DRTIonBeamSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1627,13 +1692,13 @@ const DRTIonBeamSequence::Item &DRTIonBeamSequence::getItem(const unsigned long
 }
 
 
-DRTIonBeamSequence::Item &DRTIonBeamSequence::operator[](const unsigned long num)
+DRTIonBeamSequence::Item &DRTIonBeamSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIonBeamSequence::Item &DRTIonBeamSequence::operator[](const unsigned long num) const
+const DRTIonBeamSequence::Item &DRTIonBeamSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -1656,7 +1721,7 @@ OFCondition DRTIonBeamSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIonBeamSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIonBeamSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -1679,7 +1744,7 @@ OFCondition DRTIonBeamSequence::insertItem(const unsigned long pos, Item *&item)
 }
 
 
-OFCondition DRTIonBeamSequence::removeItem(const unsigned long pos)
+OFCondition DRTIonBeamSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drticpds.cc b/dcmrt/libsrc/drticpds.cc
index 5645f81..cc5bac3 100644
--- a/dcmrt/libsrc/drticpds.cc
+++ b/dcmrt/libsrc/drticpds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonControlPointDeliverySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -24,6 +24,7 @@ DRTIonControlPointDeliverySequence::Item::Item(const OFBool emptyDefaultItem)
     BeamLimitingDeviceAngle(DCM_BeamLimitingDeviceAngle),
     BeamLimitingDevicePositionSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     BeamLimitingDeviceRotationDirection(DCM_BeamLimitingDeviceRotationDirection),
+    ChairHeadFramePosition(DCM_ChairHeadFramePosition),
     CorrectedParameterSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     DeliveredMeterset(DCM_DeliveredMeterset),
     GantryAngle(DCM_GantryAngle),
@@ -47,6 +48,9 @@ DRTIonControlPointDeliverySequence::Item::Item(const OFBool emptyDefaultItem)
     ReferencedControlPointIndex(DCM_ReferencedControlPointIndex),
     ScanSpotMetersetsDelivered(DCM_ScanSpotMetersetsDelivered),
     ScanSpotPositionMap(DCM_ScanSpotPositionMap),
+    ScanSpotPrescribedIndices(DCM_ScanSpotPrescribedIndices),
+    ScanSpotReordered(DCM_ScanSpotReordered),
+    ScanSpotTimeOffset(DCM_ScanSpotTimeOffset),
     ScanSpotTuneID(DCM_ScanSpotTuneID),
     ScanningSpotSize(DCM_ScanningSpotSize),
     SnoutPosition(DCM_SnoutPosition),
@@ -69,6 +73,7 @@ DRTIonControlPointDeliverySequence::Item::Item(const Item &copy)
     BeamLimitingDeviceAngle(copy.BeamLimitingDeviceAngle),
     BeamLimitingDevicePositionSequence(copy.BeamLimitingDevicePositionSequence),
     BeamLimitingDeviceRotationDirection(copy.BeamLimitingDeviceRotationDirection),
+    ChairHeadFramePosition(copy.ChairHeadFramePosition),
     CorrectedParameterSequence(copy.CorrectedParameterSequence),
     DeliveredMeterset(copy.DeliveredMeterset),
     GantryAngle(copy.GantryAngle),
@@ -92,6 +97,9 @@ DRTIonControlPointDeliverySequence::Item::Item(const Item &copy)
     ReferencedControlPointIndex(copy.ReferencedControlPointIndex),
     ScanSpotMetersetsDelivered(copy.ScanSpotMetersetsDelivered),
     ScanSpotPositionMap(copy.ScanSpotPositionMap),
+    ScanSpotPrescribedIndices(copy.ScanSpotPrescribedIndices),
+    ScanSpotReordered(copy.ScanSpotReordered),
+    ScanSpotTimeOffset(copy.ScanSpotTimeOffset),
     ScanSpotTuneID(copy.ScanSpotTuneID),
     ScanningSpotSize(copy.ScanningSpotSize),
     SnoutPosition(copy.SnoutPosition),
@@ -122,6 +130,7 @@ DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::It
         BeamLimitingDeviceAngle = copy.BeamLimitingDeviceAngle;
         BeamLimitingDevicePositionSequence = copy.BeamLimitingDevicePositionSequence;
         BeamLimitingDeviceRotationDirection = copy.BeamLimitingDeviceRotationDirection;
+        ChairHeadFramePosition = copy.ChairHeadFramePosition;
         CorrectedParameterSequence = copy.CorrectedParameterSequence;
         DeliveredMeterset = copy.DeliveredMeterset;
         GantryAngle = copy.GantryAngle;
@@ -145,6 +154,9 @@ DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::It
         ReferencedControlPointIndex = copy.ReferencedControlPointIndex;
         ScanSpotMetersetsDelivered = copy.ScanSpotMetersetsDelivered;
         ScanSpotPositionMap = copy.ScanSpotPositionMap;
+        ScanSpotPrescribedIndices = copy.ScanSpotPrescribedIndices;
+        ScanSpotReordered = copy.ScanSpotReordered;
+        ScanSpotTimeOffset = copy.ScanSpotTimeOffset;
         ScanSpotTuneID = copy.ScanSpotTuneID;
         ScanningSpotSize = copy.ScanningSpotSize;
         SnoutPosition = copy.SnoutPosition;
@@ -192,8 +204,11 @@ void DRTIonControlPointDeliverySequence::Item::clear()
         NumberOfScanSpotPositions.clear();
         ScanSpotPositionMap.clear();
         ScanSpotMetersetsDelivered.clear();
+        ScanSpotTimeOffset.clear();
         ScanningSpotSize.clear();
         NumberOfPaintings.clear();
+        ScanSpotReordered.clear();
+        ScanSpotPrescribedIndices.clear();
         PatientSupportAngle.clear();
         PatientSupportRotationDirection.clear();
         TableTopPitchAngle.clear();
@@ -201,6 +216,7 @@ void DRTIonControlPointDeliverySequence::Item::clear()
         TableTopRollAngle.clear();
         TableTopRollRotationDirection.clear();
         HeadFixationAngle.clear();
+        ChairHeadFramePosition.clear();
         TableTopVerticalPosition.clear();
         TableTopLongitudinalPosition.clear();
         TableTopLateralPosition.clear();
@@ -237,8 +253,11 @@ OFBool DRTIonControlPointDeliverySequence::Item::isEmpty()
            NumberOfScanSpotPositions.isEmpty() &&
            ScanSpotPositionMap.isEmpty() &&
            ScanSpotMetersetsDelivered.isEmpty() &&
+           ScanSpotTimeOffset.isEmpty() &&
            ScanningSpotSize.isEmpty() &&
            NumberOfPaintings.isEmpty() &&
+           ScanSpotReordered.isEmpty() &&
+           ScanSpotPrescribedIndices.isEmpty() &&
            PatientSupportAngle.isEmpty() &&
            PatientSupportRotationDirection.isEmpty() &&
            TableTopPitchAngle.isEmpty() &&
@@ -246,6 +265,7 @@ OFBool DRTIonControlPointDeliverySequence::Item::isEmpty()
            TableTopRollAngle.isEmpty() &&
            TableTopRollRotationDirection.isEmpty() &&
            HeadFixationAngle.isEmpty() &&
+           ChairHeadFramePosition.isEmpty() &&
            TableTopVerticalPosition.isEmpty() &&
            TableTopLongitudinalPosition.isEmpty() &&
            TableTopLateralPosition.isEmpty() &&
@@ -292,8 +312,11 @@ OFCondition DRTIonControlPointDeliverySequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, NumberOfScanSpotPositions, "1", "1C", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, ScanSpotPositionMap, "1-n", "1C", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, ScanSpotMetersetsDelivered, "1-n", "1C", "IonControlPointDeliverySequence");
+        getAndCheckElementFromDataset(item, ScanSpotTimeOffset, "1-n", "3", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, ScanningSpotSize, "2", "3", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, NumberOfPaintings, "1", "1C", "IonControlPointDeliverySequence");
+        getAndCheckElementFromDataset(item, ScanSpotReordered, "1", "3", "IonControlPointDeliverySequence");
+        getAndCheckElementFromDataset(item, ScanSpotPrescribedIndices, "1-n", "1C", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, PatientSupportAngle, "1", "1C", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, PatientSupportRotationDirection, "1", "1C", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, TableTopPitchAngle, "1", "2C", "IonControlPointDeliverySequence");
@@ -301,6 +324,7 @@ OFCondition DRTIonControlPointDeliverySequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, TableTopRollAngle, "1", "2C", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, TableTopRollRotationDirection, "1", "2C", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, HeadFixationAngle, "1", "3", "IonControlPointDeliverySequence");
+        getAndCheckElementFromDataset(item, ChairHeadFramePosition, "1", "3", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, TableTopVerticalPosition, "1", "2C", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, TableTopLongitudinalPosition, "1", "2C", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, TableTopLateralPosition, "1", "2C", "IonControlPointDeliverySequence");
@@ -343,8 +367,11 @@ OFCondition DRTIonControlPointDeliverySequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmIntegerString(NumberOfScanSpotPositions), "1", "1C", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(ScanSpotPositionMap), "1-n", "1C", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(ScanSpotMetersetsDelivered), "1-n", "1C", "IonControlPointDeliverySequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(ScanSpotTimeOffset), "1-n", "3", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(ScanningSpotSize), "2", "3", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmIntegerString(NumberOfPaintings), "1", "1C", "IonControlPointDeliverySequence");
+        addElementToDataset(result, item, new DcmCodeString(ScanSpotReordered), "1", "3", "IonControlPointDeliverySequence");
+        addElementToDataset(result, item, new DcmIntegerString(ScanSpotPrescribedIndices), "1-n", "1C", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmDecimalString(PatientSupportAngle), "1", "1C", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmCodeString(PatientSupportRotationDirection), "1", "1C", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(TableTopPitchAngle), "1", "2C", "IonControlPointDeliverySequence");
@@ -352,6 +379,7 @@ OFCondition DRTIonControlPointDeliverySequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmFloatingPointSingle(TableTopRollAngle), "1", "2C", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmCodeString(TableTopRollRotationDirection), "1", "2C", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(HeadFixationAngle), "1", "3", "IonControlPointDeliverySequence");
+        addElementToDataset(result, item, new DcmDecimalString(ChairHeadFramePosition), "1", "3", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmDecimalString(TableTopVerticalPosition), "1", "2C", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmDecimalString(TableTopLongitudinalPosition), "1", "2C", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmDecimalString(TableTopLateralPosition), "1", "2C", "IonControlPointDeliverySequence");
@@ -390,6 +418,24 @@ OFCondition DRTIonControlPointDeliverySequence::Item::getBeamLimitingDeviceRotat
 }
 
 
+OFCondition DRTIonControlPointDeliverySequence::Item::getChairHeadFramePosition(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ChairHeadFramePosition, value, pos);
+}
+
+
+OFCondition DRTIonControlPointDeliverySequence::Item::getChairHeadFramePosition(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, ChairHeadFramePosition).getFloat64(value, pos);
+}
+
+
 OFCondition DRTIonControlPointDeliverySequence::Item::getDeliveredMeterset(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -615,6 +661,42 @@ OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotPositionMap(Flo
 }
 
 
+OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotPrescribedIndices(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ScanSpotPrescribedIndices, value, pos);
+}
+
+
+OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotPrescribedIndices(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ScanSpotPrescribedIndices).getSint32(value, pos);
+}
+
+
+OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotReordered(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ScanSpotReordered, value, pos);
+}
+
+
+OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotTimeOffset(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, ScanSpotTimeOffset).getFloat32(value, pos);
+}
+
+
 OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotTuneID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -794,6 +876,19 @@ OFCondition DRTIonControlPointDeliverySequence::Item::setBeamLimitingDeviceRotat
 }
 
 
+OFCondition DRTIonControlPointDeliverySequence::Item::setChairHeadFramePosition(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ChairHeadFramePosition.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTIonControlPointDeliverySequence::Item::setDeliveredMeterset(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -991,6 +1086,41 @@ OFCondition DRTIonControlPointDeliverySequence::Item::setScanSpotPositionMap(con
 }
 
 
+OFCondition DRTIonControlPointDeliverySequence::Item::setScanSpotPrescribedIndices(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1-n") : EC_Normal;
+        if (result.good())
+            result = ScanSpotPrescribedIndices.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTIonControlPointDeliverySequence::Item::setScanSpotReordered(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ScanSpotReordered.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTIonControlPointDeliverySequence::Item::setScanSpotTimeOffset(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ScanSpotTimeOffset.putFloat32(value, pos);
+}
+
+
 OFCondition DRTIonControlPointDeliverySequence::Item::setScanSpotTuneID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -1247,7 +1377,7 @@ OFBool DRTIonControlPointDeliverySequence::isValid() const
 }
 
 
-unsigned long DRTIonControlPointDeliverySequence::getNumberOfItems() const
+size_t DRTIonControlPointDeliverySequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -1277,12 +1407,12 @@ OFCondition DRTIonControlPointDeliverySequence::gotoNextItem()
 }
 
 
-OFCondition DRTIonControlPointDeliverySequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIonControlPointDeliverySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1297,12 +1427,12 @@ OFCondition DRTIonControlPointDeliverySequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTIonControlPointDeliverySequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIonControlPointDeliverySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1317,7 +1447,7 @@ OFCondition DRTIonControlPointDeliverySequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTIonControlPointDeliverySequence::gotoItem(const unsigned long num)
+OFCondition DRTIonControlPointDeliverySequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -1353,7 +1483,7 @@ const DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequen
 }
 
 
-OFCondition DRTIonControlPointDeliverySequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIonControlPointDeliverySequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -1363,7 +1493,7 @@ OFCondition DRTIonControlPointDeliverySequence::getItem(const unsigned long num,
 }
 
 
-DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::getItem(const unsigned long num)
+DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1373,7 +1503,7 @@ DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::ge
 }
 
 
-const DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::getItem(const unsigned long num) const
+const DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1383,13 +1513,13 @@ const DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequen
 }
 
 
-DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::operator[](const unsigned long num)
+DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::operator[](const unsigned long num) const
+const DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -1412,7 +1542,7 @@ OFCondition DRTIonControlPointDeliverySequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIonControlPointDeliverySequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIonControlPointDeliverySequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -1435,7 +1565,7 @@ OFCondition DRTIonControlPointDeliverySequence::insertItem(const unsigned long p
 }
 
 
-OFCondition DRTIonControlPointDeliverySequence::removeItem(const unsigned long pos)
+OFCondition DRTIonControlPointDeliverySequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drticps.cc b/dcmrt/libsrc/drticps.cc
index 28430e1..16c61cb 100644
--- a/dcmrt/libsrc/drticps.cc
+++ b/dcmrt/libsrc/drticps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -24,6 +24,7 @@ DRTIonControlPointSequence::Item::Item(const OFBool emptyDefaultItem)
     BeamLimitingDeviceAngle(DCM_BeamLimitingDeviceAngle),
     BeamLimitingDevicePositionSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     BeamLimitingDeviceRotationDirection(DCM_BeamLimitingDeviceRotationDirection),
+    ChairHeadFramePosition(DCM_ChairHeadFramePosition),
     ControlPointIndex(DCM_ControlPointIndex),
     CumulativeMetersetWeight(DCM_CumulativeMetersetWeight),
     ExternalContourEntryPoint(DCM_ExternalContourEntryPoint),
@@ -47,6 +48,7 @@ DRTIonControlPointSequence::Item::Item(const OFBool emptyDefaultItem)
     ReferencedDoseReferenceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ScanSpotMetersetWeights(DCM_ScanSpotMetersetWeights),
     ScanSpotPositionMap(DCM_ScanSpotPositionMap),
+    ScanSpotReorderingAllowed(DCM_ScanSpotReorderingAllowed),
     ScanSpotTuneID(DCM_ScanSpotTuneID),
     ScanningSpotSize(DCM_ScanningSpotSize),
     SnoutPosition(DCM_SnoutPosition),
@@ -67,6 +69,7 @@ DRTIonControlPointSequence::Item::Item(const Item &copy)
     BeamLimitingDeviceAngle(copy.BeamLimitingDeviceAngle),
     BeamLimitingDevicePositionSequence(copy.BeamLimitingDevicePositionSequence),
     BeamLimitingDeviceRotationDirection(copy.BeamLimitingDeviceRotationDirection),
+    ChairHeadFramePosition(copy.ChairHeadFramePosition),
     ControlPointIndex(copy.ControlPointIndex),
     CumulativeMetersetWeight(copy.CumulativeMetersetWeight),
     ExternalContourEntryPoint(copy.ExternalContourEntryPoint),
@@ -90,6 +93,7 @@ DRTIonControlPointSequence::Item::Item(const Item &copy)
     ReferencedDoseReferenceSequence(copy.ReferencedDoseReferenceSequence),
     ScanSpotMetersetWeights(copy.ScanSpotMetersetWeights),
     ScanSpotPositionMap(copy.ScanSpotPositionMap),
+    ScanSpotReorderingAllowed(copy.ScanSpotReorderingAllowed),
     ScanSpotTuneID(copy.ScanSpotTuneID),
     ScanningSpotSize(copy.ScanningSpotSize),
     SnoutPosition(copy.SnoutPosition),
@@ -118,6 +122,7 @@ DRTIonControlPointSequence::Item &DRTIonControlPointSequence::Item::operator=(co
         BeamLimitingDeviceAngle = copy.BeamLimitingDeviceAngle;
         BeamLimitingDevicePositionSequence = copy.BeamLimitingDevicePositionSequence;
         BeamLimitingDeviceRotationDirection = copy.BeamLimitingDeviceRotationDirection;
+        ChairHeadFramePosition = copy.ChairHeadFramePosition;
         ControlPointIndex = copy.ControlPointIndex;
         CumulativeMetersetWeight = copy.CumulativeMetersetWeight;
         ExternalContourEntryPoint = copy.ExternalContourEntryPoint;
@@ -141,6 +146,7 @@ DRTIonControlPointSequence::Item &DRTIonControlPointSequence::Item::operator=(co
         ReferencedDoseReferenceSequence = copy.ReferencedDoseReferenceSequence;
         ScanSpotMetersetWeights = copy.ScanSpotMetersetWeights;
         ScanSpotPositionMap = copy.ScanSpotPositionMap;
+        ScanSpotReorderingAllowed = copy.ScanSpotReorderingAllowed;
         ScanSpotTuneID = copy.ScanSpotTuneID;
         ScanningSpotSize = copy.ScanningSpotSize;
         SnoutPosition = copy.SnoutPosition;
@@ -180,6 +186,7 @@ void DRTIonControlPointSequence::Item::clear()
         BeamLimitingDeviceAngle.clear();
         BeamLimitingDeviceRotationDirection.clear();
         ScanSpotTuneID.clear();
+        ScanSpotReorderingAllowed.clear();
         NumberOfScanSpotPositions.clear();
         ScanSpotPositionMap.clear();
         ScanSpotMetersetWeights.clear();
@@ -192,6 +199,7 @@ void DRTIonControlPointSequence::Item::clear()
         TableTopRollAngle.clear();
         TableTopRollRotationDirection.clear();
         HeadFixationAngle.clear();
+        ChairHeadFramePosition.clear();
         TableTopVerticalPosition.clear();
         TableTopLongitudinalPosition.clear();
         TableTopLateralPosition.clear();
@@ -223,6 +231,7 @@ OFBool DRTIonControlPointSequence::Item::isEmpty()
            BeamLimitingDeviceAngle.isEmpty() &&
            BeamLimitingDeviceRotationDirection.isEmpty() &&
            ScanSpotTuneID.isEmpty() &&
+           ScanSpotReorderingAllowed.isEmpty() &&
            NumberOfScanSpotPositions.isEmpty() &&
            ScanSpotPositionMap.isEmpty() &&
            ScanSpotMetersetWeights.isEmpty() &&
@@ -235,6 +244,7 @@ OFBool DRTIonControlPointSequence::Item::isEmpty()
            TableTopRollAngle.isEmpty() &&
            TableTopRollRotationDirection.isEmpty() &&
            HeadFixationAngle.isEmpty() &&
+           ChairHeadFramePosition.isEmpty() &&
            TableTopVerticalPosition.isEmpty() &&
            TableTopLongitudinalPosition.isEmpty() &&
            TableTopLateralPosition.isEmpty() &&
@@ -276,6 +286,7 @@ OFCondition DRTIonControlPointSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, BeamLimitingDeviceAngle, "1", "1C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, BeamLimitingDeviceRotationDirection, "1", "1C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, ScanSpotTuneID, "1", "1C", "IonControlPointSequence");
+        getAndCheckElementFromDataset(item, ScanSpotReorderingAllowed, "1", "3", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, NumberOfScanSpotPositions, "1", "1C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, ScanSpotPositionMap, "1-n", "1C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, ScanSpotMetersetWeights, "1-n", "1C", "IonControlPointSequence");
@@ -288,6 +299,7 @@ OFCondition DRTIonControlPointSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, TableTopRollAngle, "1", "2C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, TableTopRollRotationDirection, "1", "2C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, HeadFixationAngle, "1", "3", "IonControlPointSequence");
+        getAndCheckElementFromDataset(item, ChairHeadFramePosition, "1", "3", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, TableTopVerticalPosition, "1", "2C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, TableTopLongitudinalPosition, "1", "2C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, TableTopLateralPosition, "1", "2C", "IonControlPointSequence");
@@ -325,6 +337,7 @@ OFCondition DRTIonControlPointSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmDecimalString(BeamLimitingDeviceAngle), "1", "1C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmCodeString(BeamLimitingDeviceRotationDirection), "1", "1C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmShortString(ScanSpotTuneID), "1", "1C", "IonControlPointSequence");
+        addElementToDataset(result, item, new DcmCodeString(ScanSpotReorderingAllowed), "1", "3", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmIntegerString(NumberOfScanSpotPositions), "1", "1C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(ScanSpotPositionMap), "1-n", "1C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(ScanSpotMetersetWeights), "1-n", "1C", "IonControlPointSequence");
@@ -337,6 +350,7 @@ OFCondition DRTIonControlPointSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmFloatingPointSingle(TableTopRollAngle), "1", "2C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmCodeString(TableTopRollRotationDirection), "1", "2C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(HeadFixationAngle), "1", "3", "IonControlPointSequence");
+        addElementToDataset(result, item, new DcmDecimalString(ChairHeadFramePosition), "1", "3", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(TableTopVerticalPosition), "1", "2C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(TableTopLongitudinalPosition), "1", "2C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(TableTopLateralPosition), "1", "2C", "IonControlPointSequence");
@@ -376,6 +390,24 @@ OFCondition DRTIonControlPointSequence::Item::getBeamLimitingDeviceRotationDirec
 }
 
 
+OFCondition DRTIonControlPointSequence::Item::getChairHeadFramePosition(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ChairHeadFramePosition, value, pos);
+}
+
+
+OFCondition DRTIonControlPointSequence::Item::getChairHeadFramePosition(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, ChairHeadFramePosition).getFloat64(value, pos);
+}
+
+
 OFCondition DRTIonControlPointSequence::Item::getControlPointIndex(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -628,6 +660,15 @@ OFCondition DRTIonControlPointSequence::Item::getScanSpotPositionMap(Float32 &va
 }
 
 
+OFCondition DRTIonControlPointSequence::Item::getScanSpotReorderingAllowed(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ScanSpotReorderingAllowed, value, pos);
+}
+
+
 OFCondition DRTIonControlPointSequence::Item::getScanSpotTuneID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -798,6 +839,19 @@ OFCondition DRTIonControlPointSequence::Item::setBeamLimitingDeviceRotationDirec
 }
 
 
+OFCondition DRTIonControlPointSequence::Item::setChairHeadFramePosition(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ChairHeadFramePosition.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTIonControlPointSequence::Item::setControlPointIndex(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -1008,6 +1062,19 @@ OFCondition DRTIonControlPointSequence::Item::setScanSpotPositionMap(const Float
 }
 
 
+OFCondition DRTIonControlPointSequence::Item::setScanSpotReorderingAllowed(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ScanSpotReorderingAllowed.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTIonControlPointSequence::Item::setScanSpotTuneID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -1238,7 +1305,7 @@ OFBool DRTIonControlPointSequence::isValid() const
 }
 
 
-unsigned long DRTIonControlPointSequence::getNumberOfItems() const
+size_t DRTIonControlPointSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -1268,12 +1335,12 @@ OFCondition DRTIonControlPointSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIonControlPointSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIonControlPointSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1288,12 +1355,12 @@ OFCondition DRTIonControlPointSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTIonControlPointSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIonControlPointSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1308,7 +1375,7 @@ OFCondition DRTIonControlPointSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTIonControlPointSequence::gotoItem(const unsigned long num)
+OFCondition DRTIonControlPointSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -1344,7 +1411,7 @@ const DRTIonControlPointSequence::Item &DRTIonControlPointSequence::getCurrentIt
 }
 
 
-OFCondition DRTIonControlPointSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIonControlPointSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -1354,7 +1421,7 @@ OFCondition DRTIonControlPointSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTIonControlPointSequence::Item &DRTIonControlPointSequence::getItem(const unsigned long num)
+DRTIonControlPointSequence::Item &DRTIonControlPointSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1364,7 +1431,7 @@ DRTIonControlPointSequence::Item &DRTIonControlPointSequence::getItem(const unsi
 }
 
 
-const DRTIonControlPointSequence::Item &DRTIonControlPointSequence::getItem(const unsigned long num) const
+const DRTIonControlPointSequence::Item &DRTIonControlPointSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1374,13 +1441,13 @@ const DRTIonControlPointSequence::Item &DRTIonControlPointSequence::getItem(cons
 }
 
 
-DRTIonControlPointSequence::Item &DRTIonControlPointSequence::operator[](const unsigned long num)
+DRTIonControlPointSequence::Item &DRTIonControlPointSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIonControlPointSequence::Item &DRTIonControlPointSequence::operator[](const unsigned long num) const
+const DRTIonControlPointSequence::Item &DRTIonControlPointSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -1403,7 +1470,7 @@ OFCondition DRTIonControlPointSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIonControlPointSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIonControlPointSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -1426,7 +1493,7 @@ OFCondition DRTIonControlPointSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTIonControlPointSequence::removeItem(const unsigned long pos)
+OFCondition DRTIonControlPointSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtics.cc b/dcmrt/libsrc/drtics.cc
index cc4ab0a..70003ec 100644
--- a/dcmrt/libsrc/drtics.cc
+++ b/dcmrt/libsrc/drtics.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTInstitutionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTInstitutionCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTInstitutionCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::Item::operator=(co
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTInstitutionCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTInstitutionCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTInstitutionCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "InstitutionCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "InstitutionCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTInstitutionCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "InstitutionCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "InstitutionCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTInstitutionCodeSequence::Item::getMappingResource(OFString &value
 }
 
 
+OFCondition DRTInstitutionCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTInstitutionCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTInstitutionCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTInstitutionCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTInstitutionCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTInstitutionCodeSequence::isValid() const
 }
 
 
-unsigned long DRTInstitutionCodeSequence::getNumberOfItems() const
+size_t DRTInstitutionCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTInstitutionCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTInstitutionCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTInstitutionCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTInstitutionCodeSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTInstitutionCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTInstitutionCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTInstitutionCodeSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTInstitutionCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTInstitutionCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::getCurrentIt
 }
 
 
-OFCondition DRTInstitutionCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTInstitutionCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTInstitutionCodeSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::getItem(const unsigned long num)
+DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::getItem(const unsi
 }
 
 
-const DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::getItem(const unsigned long num) const
+const DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::getItem(cons
 }
 
 
-DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::operator[](const unsigned long num)
+DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::operator[](const unsigned long num) const
+const DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTInstitutionCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTInstitutionCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTInstitutionCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTInstitutionCodeSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTInstitutionCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTInstitutionCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtiis.cc b/dcmrt/libsrc/drtiis.cc
index 145601c..b6821d8 100644
--- a/dcmrt/libsrc/drtiis.cc
+++ b/dcmrt/libsrc/drtiis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIconImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -25,6 +25,7 @@ DRTIconImageSequence::Item::Item(const OFBool emptyDefaultItem)
     BitsStored(DCM_BitsStored),
     BluePaletteColorLookupTableData(DCM_BluePaletteColorLookupTableData),
     BluePaletteColorLookupTableDescriptor(DCM_BluePaletteColorLookupTableDescriptor),
+    ColorSpace(DCM_ColorSpace),
     Columns(DCM_Columns),
     GreenPaletteColorLookupTableData(DCM_GreenPaletteColorLookupTableData),
     GreenPaletteColorLookupTableDescriptor(DCM_GreenPaletteColorLookupTableDescriptor),
@@ -51,6 +52,7 @@ DRTIconImageSequence::Item::Item(const Item &copy)
     BitsStored(copy.BitsStored),
     BluePaletteColorLookupTableData(copy.BluePaletteColorLookupTableData),
     BluePaletteColorLookupTableDescriptor(copy.BluePaletteColorLookupTableDescriptor),
+    ColorSpace(copy.ColorSpace),
     Columns(copy.Columns),
     GreenPaletteColorLookupTableData(copy.GreenPaletteColorLookupTableData),
     GreenPaletteColorLookupTableDescriptor(copy.GreenPaletteColorLookupTableDescriptor),
@@ -85,6 +87,7 @@ DRTIconImageSequence::Item &DRTIconImageSequence::Item::operator=(const Item &co
         BitsStored = copy.BitsStored;
         BluePaletteColorLookupTableData = copy.BluePaletteColorLookupTableData;
         BluePaletteColorLookupTableDescriptor = copy.BluePaletteColorLookupTableDescriptor;
+        ColorSpace = copy.ColorSpace;
         Columns = copy.Columns;
         GreenPaletteColorLookupTableData = copy.GreenPaletteColorLookupTableData;
         GreenPaletteColorLookupTableDescriptor = copy.GreenPaletteColorLookupTableDescriptor;
@@ -119,7 +122,6 @@ void DRTIconImageSequence::Item::clear()
         BitsStored.clear();
         HighBit.clear();
         PixelRepresentation.clear();
-        PixelData.clear();
         PlanarConfiguration.clear();
         PixelAspectRatio.clear();
         SmallestImagePixelValue.clear();
@@ -131,6 +133,8 @@ void DRTIconImageSequence::Item::clear()
         GreenPaletteColorLookupTableData.clear();
         BluePaletteColorLookupTableData.clear();
         ICCProfile.clear();
+        ColorSpace.clear();
+        PixelData.clear();
     }
 }
 
@@ -145,7 +149,6 @@ OFBool DRTIconImageSequence::Item::isEmpty()
            BitsStored.isEmpty() &&
            HighBit.isEmpty() &&
            PixelRepresentation.isEmpty() &&
-           PixelData.isEmpty() &&
            PlanarConfiguration.isEmpty() &&
            PixelAspectRatio.isEmpty() &&
            SmallestImagePixelValue.isEmpty() &&
@@ -156,7 +159,9 @@ OFBool DRTIconImageSequence::Item::isEmpty()
            RedPaletteColorLookupTableData.isEmpty() &&
            GreenPaletteColorLookupTableData.isEmpty() &&
            BluePaletteColorLookupTableData.isEmpty() &&
-           ICCProfile.isEmpty();
+           ICCProfile.isEmpty() &&
+           ColorSpace.isEmpty() &&
+           PixelData.isEmpty();
 }
 
 
@@ -181,7 +186,6 @@ OFCondition DRTIconImageSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, BitsStored, "1", "1", "IconImageSequence");
         getAndCheckElementFromDataset(item, HighBit, "1", "1", "IconImageSequence");
         getAndCheckElementFromDataset(item, PixelRepresentation, "1", "1", "IconImageSequence");
-        getAndCheckElementFromDataset(item, PixelData, "1", "1C", "IconImageSequence");
         getAndCheckElementFromDataset(item, PlanarConfiguration, "1", "1C", "IconImageSequence");
         getAndCheckElementFromDataset(item, PixelAspectRatio, "2", "1C", "IconImageSequence");
         getAndCheckElementFromDataset(item, SmallestImagePixelValue, "1", "3", "IconImageSequence");
@@ -193,6 +197,8 @@ OFCondition DRTIconImageSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, GreenPaletteColorLookupTableData, "1", "1C", "IconImageSequence");
         getAndCheckElementFromDataset(item, BluePaletteColorLookupTableData, "1", "1C", "IconImageSequence");
         getAndCheckElementFromDataset(item, ICCProfile, "1", "3", "IconImageSequence");
+        getAndCheckElementFromDataset(item, ColorSpace, "1", "3", "IconImageSequence");
+        getAndCheckElementFromDataset(item, PixelData, "1", "1", "IconImageSequence");
         result = EC_Normal;
     }
     return result;
@@ -213,7 +219,6 @@ OFCondition DRTIconImageSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUnsignedShort(BitsStored), "1", "1", "IconImageSequence");
         addElementToDataset(result, item, new DcmUnsignedShort(HighBit), "1", "1", "IconImageSequence");
         addElementToDataset(result, item, new DcmUnsignedShort(PixelRepresentation), "1", "1", "IconImageSequence");
-        addElementToDataset(result, item, new DcmPixelData(PixelData), "1", "1C", "IconImageSequence");
         addElementToDataset(result, item, new DcmUnsignedShort(PlanarConfiguration), "1", "1C", "IconImageSequence");
         addElementToDataset(result, item, new DcmIntegerString(PixelAspectRatio), "2", "1C", "IconImageSequence");
         addElementToDataset(result, item, new DcmUnsignedShort(SmallestImagePixelValue), "1", "3", "IconImageSequence");
@@ -225,6 +230,8 @@ OFCondition DRTIconImageSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmOtherByteOtherWord(GreenPaletteColorLookupTableData), "1", "1C", "IconImageSequence");
         addElementToDataset(result, item, new DcmOtherByteOtherWord(BluePaletteColorLookupTableData), "1", "1C", "IconImageSequence");
         addElementToDataset(result, item, new DcmOtherByteOtherWord(ICCProfile), "1", "3", "IconImageSequence");
+        addElementToDataset(result, item, new DcmCodeString(ColorSpace), "1", "3", "IconImageSequence");
+        addElementToDataset(result, item, new DcmPixelData(PixelData), "1", "1", "IconImageSequence");
     }
     return result;
 }
@@ -276,6 +283,15 @@ OFCondition DRTIconImageSequence::Item::getBluePaletteColorLookupTableDescriptor
 }
 
 
+OFCondition DRTIconImageSequence::Item::getColorSpace(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ColorSpace, value, pos);
+}
+
+
 OFCondition DRTIconImageSequence::Item::getColumns(Uint16 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
@@ -486,6 +502,19 @@ OFCondition DRTIconImageSequence::Item::setBluePaletteColorLookupTableDescriptor
 }
 
 
+OFCondition DRTIconImageSequence::Item::setColorSpace(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ColorSpace.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTIconImageSequence::Item::setColumns(const Uint16 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
@@ -732,7 +761,7 @@ OFBool DRTIconImageSequence::isValid() const
 }
 
 
-unsigned long DRTIconImageSequence::getNumberOfItems() const
+size_t DRTIconImageSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -762,12 +791,12 @@ OFCondition DRTIconImageSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIconImageSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIconImageSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -782,12 +811,12 @@ OFCondition DRTIconImageSequence::gotoItem(const unsigned long num, OFListIterat
 }
 
 
-OFCondition DRTIconImageSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIconImageSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -802,7 +831,7 @@ OFCondition DRTIconImageSequence::gotoItem(const unsigned long num, OFListConstI
 }
 
 
-OFCondition DRTIconImageSequence::gotoItem(const unsigned long num)
+OFCondition DRTIconImageSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -838,7 +867,7 @@ const DRTIconImageSequence::Item &DRTIconImageSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTIconImageSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIconImageSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -848,7 +877,7 @@ OFCondition DRTIconImageSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTIconImageSequence::Item &DRTIconImageSequence::getItem(const unsigned long num)
+DRTIconImageSequence::Item &DRTIconImageSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -858,7 +887,7 @@ DRTIconImageSequence::Item &DRTIconImageSequence::getItem(const unsigned long nu
 }
 
 
-const DRTIconImageSequence::Item &DRTIconImageSequence::getItem(const unsigned long num) const
+const DRTIconImageSequence::Item &DRTIconImageSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -868,13 +897,13 @@ const DRTIconImageSequence::Item &DRTIconImageSequence::getItem(const unsigned l
 }
 
 
-DRTIconImageSequence::Item &DRTIconImageSequence::operator[](const unsigned long num)
+DRTIconImageSequence::Item &DRTIconImageSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIconImageSequence::Item &DRTIconImageSequence::operator[](const unsigned long num) const
+const DRTIconImageSequence::Item &DRTIconImageSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -897,7 +926,7 @@ OFCondition DRTIconImageSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIconImageSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIconImageSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -920,7 +949,7 @@ OFCondition DRTIconImageSequence::insertItem(const unsigned long pos, Item *&ite
 }
 
 
-OFCondition DRTIconImageSequence::removeItem(const unsigned long pos)
+OFCondition DRTIconImageSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtimage.cc b/dcmrt/libsrc/drtimage.cc
index f55e999..1451213 100644
--- a/dcmrt/libsrc/drtimage.cc
+++ b/dcmrt/libsrc/drtimage.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTImageIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -23,6 +23,9 @@ DRTImageIOD::DRTImageIOD()
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
     PatientBirthDate(DCM_PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(DCM_PatientAlternativeCalendar),
     PatientSex(DCM_PatientSex),
     ReferencedPatientPhotoSequence(),
     QualityControlSubject(DCM_QualityControlSubject),
@@ -38,12 +41,19 @@ DRTImageIOD::DRTImageIOD()
     PatientBreedDescription(DCM_PatientBreedDescription),
     PatientBreedCodeSequence(),
     BreedRegistrationSequence(),
+    StrainDescription(DCM_StrainDescription),
+    StrainNomenclature(DCM_StrainNomenclature),
+    StrainCodeSequence(),
+    StrainAdditionalInformation(DCM_StrainAdditionalInformation),
+    StrainStockSequence(),
     ResponsiblePerson(DCM_ResponsiblePerson),
     ResponsiblePersonRole(DCM_ResponsiblePersonRole),
     ResponsibleOrganization(DCM_ResponsibleOrganization),
     PatientIdentityRemoved(DCM_PatientIdentityRemoved),
     DeidentificationMethod(DCM_DeidentificationMethod),
     DeidentificationMethodCodeSequence(),
+    SourcePatientGroupIdentificationSequence(),
+    GroupOfPatientsIdentificationSequence(),
     ClinicalTrialSponsorName(DCM_ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(DCM_ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(DCM_ClinicalTrialProtocolName),
@@ -77,7 +87,16 @@ DRTImageIOD::DRTImageIOD()
     PatientAge(DCM_PatientAge),
     PatientSize(DCM_PatientSize),
     PatientWeight(DCM_PatientWeight),
+    PatientBodyMassIndex(DCM_PatientBodyMassIndex),
+    MeasuredAPDimension(DCM_MeasuredAPDimension),
+    MeasuredLateralDimension(DCM_MeasuredLateralDimension),
     PatientSizeCodeSequence(),
+    MedicalAlerts(DCM_MedicalAlerts),
+    Allergies(DCM_Allergies),
+    SmokingStatus(DCM_SmokingStatus),
+    PregnancyStatus(DCM_PregnancyStatus),
+    LastMenstrualDate(DCM_LastMenstrualDate),
+    PatientState(DCM_PatientState),
     Occupation(DCM_Occupation),
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
@@ -97,6 +116,7 @@ DRTImageIOD::DRTImageIOD()
     SeriesDescription(DCM_SeriesDescription),
     SeriesDescriptionCodeSequence(),
     OperatorsName(DCM_OperatorsName),
+    OperatorIdentificationSequence(),
     ReferencedPerformedProcedureStepSequence(),
     RequestAttributesSequence(),
     PerformedProcedureStepID(DCM_PerformedProcedureStepID),
@@ -121,6 +141,7 @@ DRTImageIOD::DRTImageIOD()
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
+    UDISequence(),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -133,11 +154,6 @@ DRTImageIOD::DRTImageIOD()
     AcquisitionDate(DCM_AcquisitionDate),
     AcquisitionTime(DCM_AcquisitionTime),
     AcquisitionDateTime(DCM_AcquisitionDateTime),
-    ReferencedImageSequence(),
-    DerivationDescription(DCM_DerivationDescription),
-    DerivationCodeSequence(),
-    SourceImageSequence(),
-    ReferencedInstanceSequence(),
     ImagesInAcquisition(DCM_ImagesInAcquisition),
     ImageComments(DCM_ImageComments),
     QualityControlImage(DCM_QualityControlImage),
@@ -150,9 +166,14 @@ DRTImageIOD::DRTImageIOD()
     PresentationLUTShape(DCM_PresentationLUTShape),
     IrradiationEventUID(DCM_IrradiationEventUID),
     RealWorldValueMappingSequence(),
+    ReferencedImageSequence(),
+    ReferencedInstanceSequence(),
+    DerivationDescription(DCM_DerivationDescription),
+    DerivationCodeSequence(),
+    SourceImageSequence(),
+    SourceInstanceSequence(),
     Rows(DCM_Rows),
     Columns(DCM_Columns),
-    PixelData(DCM_PixelData),
     PlanarConfiguration(DCM_PlanarConfiguration),
     PixelAspectRatio(DCM_PixelAspectRatio),
     SmallestImagePixelValue(DCM_SmallestImagePixelValue),
@@ -164,6 +185,8 @@ DRTImageIOD::DRTImageIOD()
     GreenPaletteColorLookupTableData(DCM_GreenPaletteColorLookupTableData),
     BluePaletteColorLookupTableData(DCM_BluePaletteColorLookupTableData),
     ICCProfile(DCM_ICCProfile),
+    ColorSpace(DCM_ColorSpace),
+    PixelData(DCM_PixelData),
     PixelDataProviderURL(DCM_PixelDataProviderURL),
     PixelPaddingRangeLimit(DCM_PixelPaddingRangeLimit),
     ContrastBolusAgent(DCM_ContrastBolusAgent),
@@ -241,6 +264,9 @@ DRTImageIOD::DRTImageIOD()
     TableTopLateralPosition(DCM_TableTopLateralPosition),
     IsocenterPosition(DCM_IsocenterPosition),
     PatientPosition(DCM_PatientPosition),
+    ExposureTime(DCM_ExposureTime),
+    ExposureTimeInms(DCM_ExposureTimeInms),
+    MetersetExposure(DCM_MetersetExposure),
     ModalityLUTSequence(),
     RescaleIntercept(DCM_RescaleIntercept),
     RescaleSlope(DCM_RescaleSlope),
@@ -264,6 +290,8 @@ DRTImageIOD::DRTImageIOD()
     RelatedGeneralSOPClassUID(DCM_RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(DCM_OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(),
+    ContextGroupIdentificationSequence(),
+    MappingResourceIdentificationSequence(),
     TimezoneOffsetFromUTC(DCM_TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(),
     SOPInstanceStatus(DCM_SOPInstanceStatus),
@@ -295,6 +323,9 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
     PatientBirthDate(copy.PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(copy.PatientAlternativeCalendar),
     PatientSex(copy.PatientSex),
     ReferencedPatientPhotoSequence(copy.ReferencedPatientPhotoSequence),
     QualityControlSubject(copy.QualityControlSubject),
@@ -310,12 +341,19 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     PatientBreedDescription(copy.PatientBreedDescription),
     PatientBreedCodeSequence(copy.PatientBreedCodeSequence),
     BreedRegistrationSequence(copy.BreedRegistrationSequence),
+    StrainDescription(copy.StrainDescription),
+    StrainNomenclature(copy.StrainNomenclature),
+    StrainCodeSequence(copy.StrainCodeSequence),
+    StrainAdditionalInformation(copy.StrainAdditionalInformation),
+    StrainStockSequence(copy.StrainStockSequence),
     ResponsiblePerson(copy.ResponsiblePerson),
     ResponsiblePersonRole(copy.ResponsiblePersonRole),
     ResponsibleOrganization(copy.ResponsibleOrganization),
     PatientIdentityRemoved(copy.PatientIdentityRemoved),
     DeidentificationMethod(copy.DeidentificationMethod),
     DeidentificationMethodCodeSequence(copy.DeidentificationMethodCodeSequence),
+    SourcePatientGroupIdentificationSequence(copy.SourcePatientGroupIdentificationSequence),
+    GroupOfPatientsIdentificationSequence(copy.GroupOfPatientsIdentificationSequence),
     ClinicalTrialSponsorName(copy.ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(copy.ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(copy.ClinicalTrialProtocolName),
@@ -349,7 +387,16 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     PatientAge(copy.PatientAge),
     PatientSize(copy.PatientSize),
     PatientWeight(copy.PatientWeight),
+    PatientBodyMassIndex(copy.PatientBodyMassIndex),
+    MeasuredAPDimension(copy.MeasuredAPDimension),
+    MeasuredLateralDimension(copy.MeasuredLateralDimension),
     PatientSizeCodeSequence(copy.PatientSizeCodeSequence),
+    MedicalAlerts(copy.MedicalAlerts),
+    Allergies(copy.Allergies),
+    SmokingStatus(copy.SmokingStatus),
+    PregnancyStatus(copy.PregnancyStatus),
+    LastMenstrualDate(copy.LastMenstrualDate),
+    PatientState(copy.PatientState),
     Occupation(copy.Occupation),
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
@@ -369,6 +416,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     SeriesDescription(copy.SeriesDescription),
     SeriesDescriptionCodeSequence(copy.SeriesDescriptionCodeSequence),
     OperatorsName(copy.OperatorsName),
+    OperatorIdentificationSequence(copy.OperatorIdentificationSequence),
     ReferencedPerformedProcedureStepSequence(copy.ReferencedPerformedProcedureStepSequence),
     RequestAttributesSequence(copy.RequestAttributesSequence),
     PerformedProcedureStepID(copy.PerformedProcedureStepID),
@@ -393,6 +441,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
+    UDISequence(copy.UDISequence),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -405,11 +454,6 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     AcquisitionDate(copy.AcquisitionDate),
     AcquisitionTime(copy.AcquisitionTime),
     AcquisitionDateTime(copy.AcquisitionDateTime),
-    ReferencedImageSequence(copy.ReferencedImageSequence),
-    DerivationDescription(copy.DerivationDescription),
-    DerivationCodeSequence(copy.DerivationCodeSequence),
-    SourceImageSequence(copy.SourceImageSequence),
-    ReferencedInstanceSequence(copy.ReferencedInstanceSequence),
     ImagesInAcquisition(copy.ImagesInAcquisition),
     ImageComments(copy.ImageComments),
     QualityControlImage(copy.QualityControlImage),
@@ -422,9 +466,14 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     PresentationLUTShape(copy.PresentationLUTShape),
     IrradiationEventUID(copy.IrradiationEventUID),
     RealWorldValueMappingSequence(copy.RealWorldValueMappingSequence),
+    ReferencedImageSequence(copy.ReferencedImageSequence),
+    ReferencedInstanceSequence(copy.ReferencedInstanceSequence),
+    DerivationDescription(copy.DerivationDescription),
+    DerivationCodeSequence(copy.DerivationCodeSequence),
+    SourceImageSequence(copy.SourceImageSequence),
+    SourceInstanceSequence(copy.SourceInstanceSequence),
     Rows(copy.Rows),
     Columns(copy.Columns),
-    PixelData(copy.PixelData),
     PlanarConfiguration(copy.PlanarConfiguration),
     PixelAspectRatio(copy.PixelAspectRatio),
     SmallestImagePixelValue(copy.SmallestImagePixelValue),
@@ -436,6 +485,8 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     GreenPaletteColorLookupTableData(copy.GreenPaletteColorLookupTableData),
     BluePaletteColorLookupTableData(copy.BluePaletteColorLookupTableData),
     ICCProfile(copy.ICCProfile),
+    ColorSpace(copy.ColorSpace),
+    PixelData(copy.PixelData),
     PixelDataProviderURL(copy.PixelDataProviderURL),
     PixelPaddingRangeLimit(copy.PixelPaddingRangeLimit),
     ContrastBolusAgent(copy.ContrastBolusAgent),
@@ -513,6 +564,9 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     TableTopLateralPosition(copy.TableTopLateralPosition),
     IsocenterPosition(copy.IsocenterPosition),
     PatientPosition(copy.PatientPosition),
+    ExposureTime(copy.ExposureTime),
+    ExposureTimeInms(copy.ExposureTimeInms),
+    MetersetExposure(copy.MetersetExposure),
     ModalityLUTSequence(copy.ModalityLUTSequence),
     RescaleIntercept(copy.RescaleIntercept),
     RescaleSlope(copy.RescaleSlope),
@@ -536,6 +590,8 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     RelatedGeneralSOPClassUID(copy.RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(copy.OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(copy.CodingSchemeIdentificationSequence),
+    ContextGroupIdentificationSequence(copy.ContextGroupIdentificationSequence),
+    MappingResourceIdentificationSequence(copy.MappingResourceIdentificationSequence),
     TimezoneOffsetFromUTC(copy.TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(copy.ContributingEquipmentSequence),
     SOPInstanceStatus(copy.SOPInstanceStatus),
@@ -573,6 +629,9 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
         PatientBirthDate = copy.PatientBirthDate;
+        PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
+        PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
+        PatientAlternativeCalendar = copy.PatientAlternativeCalendar;
         PatientSex = copy.PatientSex;
         ReferencedPatientPhotoSequence = copy.ReferencedPatientPhotoSequence;
         QualityControlSubject = copy.QualityControlSubject;
@@ -588,12 +647,19 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         PatientBreedDescription = copy.PatientBreedDescription;
         PatientBreedCodeSequence = copy.PatientBreedCodeSequence;
         BreedRegistrationSequence = copy.BreedRegistrationSequence;
+        StrainDescription = copy.StrainDescription;
+        StrainNomenclature = copy.StrainNomenclature;
+        StrainCodeSequence = copy.StrainCodeSequence;
+        StrainAdditionalInformation = copy.StrainAdditionalInformation;
+        StrainStockSequence = copy.StrainStockSequence;
         ResponsiblePerson = copy.ResponsiblePerson;
         ResponsiblePersonRole = copy.ResponsiblePersonRole;
         ResponsibleOrganization = copy.ResponsibleOrganization;
         PatientIdentityRemoved = copy.PatientIdentityRemoved;
         DeidentificationMethod = copy.DeidentificationMethod;
         DeidentificationMethodCodeSequence = copy.DeidentificationMethodCodeSequence;
+        SourcePatientGroupIdentificationSequence = copy.SourcePatientGroupIdentificationSequence;
+        GroupOfPatientsIdentificationSequence = copy.GroupOfPatientsIdentificationSequence;
         ClinicalTrialSponsorName = copy.ClinicalTrialSponsorName;
         ClinicalTrialProtocolID = copy.ClinicalTrialProtocolID;
         ClinicalTrialProtocolName = copy.ClinicalTrialProtocolName;
@@ -627,7 +693,16 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         PatientAge = copy.PatientAge;
         PatientSize = copy.PatientSize;
         PatientWeight = copy.PatientWeight;
+        PatientBodyMassIndex = copy.PatientBodyMassIndex;
+        MeasuredAPDimension = copy.MeasuredAPDimension;
+        MeasuredLateralDimension = copy.MeasuredLateralDimension;
         PatientSizeCodeSequence = copy.PatientSizeCodeSequence;
+        MedicalAlerts = copy.MedicalAlerts;
+        Allergies = copy.Allergies;
+        SmokingStatus = copy.SmokingStatus;
+        PregnancyStatus = copy.PregnancyStatus;
+        LastMenstrualDate = copy.LastMenstrualDate;
+        PatientState = copy.PatientState;
         Occupation = copy.Occupation;
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
@@ -647,6 +722,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         SeriesDescription = copy.SeriesDescription;
         SeriesDescriptionCodeSequence = copy.SeriesDescriptionCodeSequence;
         OperatorsName = copy.OperatorsName;
+        OperatorIdentificationSequence = copy.OperatorIdentificationSequence;
         ReferencedPerformedProcedureStepSequence = copy.ReferencedPerformedProcedureStepSequence;
         RequestAttributesSequence = copy.RequestAttributesSequence;
         PerformedProcedureStepID = copy.PerformedProcedureStepID;
@@ -671,6 +747,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
+        UDISequence = copy.UDISequence;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -683,11 +760,6 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         AcquisitionDate = copy.AcquisitionDate;
         AcquisitionTime = copy.AcquisitionTime;
         AcquisitionDateTime = copy.AcquisitionDateTime;
-        ReferencedImageSequence = copy.ReferencedImageSequence;
-        DerivationDescription = copy.DerivationDescription;
-        DerivationCodeSequence = copy.DerivationCodeSequence;
-        SourceImageSequence = copy.SourceImageSequence;
-        ReferencedInstanceSequence = copy.ReferencedInstanceSequence;
         ImagesInAcquisition = copy.ImagesInAcquisition;
         ImageComments = copy.ImageComments;
         QualityControlImage = copy.QualityControlImage;
@@ -700,9 +772,14 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         PresentationLUTShape = copy.PresentationLUTShape;
         IrradiationEventUID = copy.IrradiationEventUID;
         RealWorldValueMappingSequence = copy.RealWorldValueMappingSequence;
+        ReferencedImageSequence = copy.ReferencedImageSequence;
+        ReferencedInstanceSequence = copy.ReferencedInstanceSequence;
+        DerivationDescription = copy.DerivationDescription;
+        DerivationCodeSequence = copy.DerivationCodeSequence;
+        SourceImageSequence = copy.SourceImageSequence;
+        SourceInstanceSequence = copy.SourceInstanceSequence;
         Rows = copy.Rows;
         Columns = copy.Columns;
-        PixelData = copy.PixelData;
         PlanarConfiguration = copy.PlanarConfiguration;
         PixelAspectRatio = copy.PixelAspectRatio;
         SmallestImagePixelValue = copy.SmallestImagePixelValue;
@@ -714,6 +791,8 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         GreenPaletteColorLookupTableData = copy.GreenPaletteColorLookupTableData;
         BluePaletteColorLookupTableData = copy.BluePaletteColorLookupTableData;
         ICCProfile = copy.ICCProfile;
+        ColorSpace = copy.ColorSpace;
+        PixelData = copy.PixelData;
         PixelDataProviderURL = copy.PixelDataProviderURL;
         PixelPaddingRangeLimit = copy.PixelPaddingRangeLimit;
         ContrastBolusAgent = copy.ContrastBolusAgent;
@@ -791,6 +870,9 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         TableTopLateralPosition = copy.TableTopLateralPosition;
         IsocenterPosition = copy.IsocenterPosition;
         PatientPosition = copy.PatientPosition;
+        ExposureTime = copy.ExposureTime;
+        ExposureTimeInms = copy.ExposureTimeInms;
+        MetersetExposure = copy.MetersetExposure;
         ModalityLUTSequence = copy.ModalityLUTSequence;
         RescaleIntercept = copy.RescaleIntercept;
         RescaleSlope = copy.RescaleSlope;
@@ -814,6 +896,8 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         RelatedGeneralSOPClassUID = copy.RelatedGeneralSOPClassUID;
         OriginalSpecializedSOPClassUID = copy.OriginalSpecializedSOPClassUID;
         CodingSchemeIdentificationSequence = copy.CodingSchemeIdentificationSequence;
+        ContextGroupIdentificationSequence = copy.ContextGroupIdentificationSequence;
+        MappingResourceIdentificationSequence = copy.MappingResourceIdentificationSequence;
         TimezoneOffsetFromUTC = copy.TimezoneOffsetFromUTC;
         ContributingEquipmentSequence = copy.ContributingEquipmentSequence;
         SOPInstanceStatus = copy.SOPInstanceStatus;
@@ -846,6 +930,9 @@ void DRTImageIOD::clear()
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
     PatientBirthDate.clear();
+    PatientBirthDateInAlternativeCalendar.clear();
+    PatientDeathDateInAlternativeCalendar.clear();
+    PatientAlternativeCalendar.clear();
     PatientSex.clear();
     ReferencedPatientPhotoSequence.clear();
     QualityControlSubject.clear();
@@ -861,12 +948,19 @@ void DRTImageIOD::clear()
     PatientBreedDescription.clear();
     PatientBreedCodeSequence.clear();
     BreedRegistrationSequence.clear();
+    StrainDescription.clear();
+    StrainNomenclature.clear();
+    StrainCodeSequence.clear();
+    StrainAdditionalInformation.clear();
+    StrainStockSequence.clear();
     ResponsiblePerson.clear();
     ResponsiblePersonRole.clear();
     ResponsibleOrganization.clear();
     PatientIdentityRemoved.clear();
     DeidentificationMethod.clear();
     DeidentificationMethodCodeSequence.clear();
+    SourcePatientGroupIdentificationSequence.clear();
+    GroupOfPatientsIdentificationSequence.clear();
     ClinicalTrialSponsorName.clear();
     ClinicalTrialProtocolID.clear();
     ClinicalTrialProtocolName.clear();
@@ -900,7 +994,16 @@ void DRTImageIOD::clear()
     PatientAge.clear();
     PatientSize.clear();
     PatientWeight.clear();
+    PatientBodyMassIndex.clear();
+    MeasuredAPDimension.clear();
+    MeasuredLateralDimension.clear();
     PatientSizeCodeSequence.clear();
+    MedicalAlerts.clear();
+    Allergies.clear();
+    SmokingStatus.clear();
+    PregnancyStatus.clear();
+    LastMenstrualDate.clear();
+    PatientState.clear();
     Occupation.clear();
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
@@ -920,6 +1023,7 @@ void DRTImageIOD::clear()
     SeriesDescription.clear();
     SeriesDescriptionCodeSequence.clear();
     OperatorsName.clear();
+    OperatorIdentificationSequence.clear();
     ReferencedPerformedProcedureStepSequence.clear();
     RequestAttributesSequence.clear();
     PerformedProcedureStepID.clear();
@@ -944,6 +1048,7 @@ void DRTImageIOD::clear()
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
+    UDISequence.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -957,11 +1062,6 @@ void DRTImageIOD::clear()
     AcquisitionDate.clear();
     AcquisitionTime.clear();
     AcquisitionDateTime.clear();
-    ReferencedImageSequence.clear();
-    DerivationDescription.clear();
-    DerivationCodeSequence.clear();
-    SourceImageSequence.clear();
-    ReferencedInstanceSequence.clear();
     ImagesInAcquisition.clear();
     ImageComments.clear();
     QualityControlImage.clear();
@@ -974,6 +1074,12 @@ void DRTImageIOD::clear()
     PresentationLUTShape.clear();
     IrradiationEventUID.clear();
     RealWorldValueMappingSequence.clear();
+    ReferencedImageSequence.clear();
+    ReferencedInstanceSequence.clear();
+    DerivationDescription.clear();
+    DerivationCodeSequence.clear();
+    SourceImageSequence.clear();
+    SourceInstanceSequence.clear();
     SamplesPerPixel.clear();
     PhotometricInterpretation.clear();
     Rows.clear();
@@ -982,7 +1088,6 @@ void DRTImageIOD::clear()
     BitsStored.clear();
     HighBit.clear();
     PixelRepresentation.clear();
-    PixelData.clear();
     PlanarConfiguration.clear();
     PixelAspectRatio.clear();
     SmallestImagePixelValue.clear();
@@ -994,6 +1099,8 @@ void DRTImageIOD::clear()
     GreenPaletteColorLookupTableData.clear();
     BluePaletteColorLookupTableData.clear();
     ICCProfile.clear();
+    ColorSpace.clear();
+    PixelData.clear();
     PixelDataProviderURL.clear();
     PixelPaddingRangeLimit.clear();
     ContrastBolusAgent.clear();
@@ -1064,6 +1171,9 @@ void DRTImageIOD::clear()
     TableTopLateralPosition.clear();
     IsocenterPosition.clear();
     PatientPosition.clear();
+    ExposureTime.clear();
+    ExposureTimeInms.clear();
+    MetersetExposure.clear();
     ModalityLUTSequence.clear();
     RescaleIntercept.clear();
     RescaleSlope.clear();
@@ -1087,6 +1197,8 @@ void DRTImageIOD::clear()
     RelatedGeneralSOPClassUID.clear();
     OriginalSpecializedSOPClassUID.clear();
     CodingSchemeIdentificationSequence.clear();
+    ContextGroupIdentificationSequence.clear();
+    MappingResourceIdentificationSequence.clear();
     TimezoneOffsetFromUTC.clear();
     ContributingEquipmentSequence.clear();
     SOPInstanceStatus.clear();
@@ -1171,6 +1283,7 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
+        UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -1186,11 +1299,6 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, AcquisitionDate, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, AcquisitionTime, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, AcquisitionDateTime, "1", "3", "GeneralImageModule");
-        ReferencedImageSequence.read(dataset, "1-n", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, DerivationDescription, "1", "3", "GeneralImageModule");
-        DerivationCodeSequence.read(dataset, "1-n", "3", "GeneralImageModule");
-        SourceImageSequence.read(dataset, "1-n", "3", "GeneralImageModule");
-        ReferencedInstanceSequence.read(dataset, "1-n", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, ImagesInAcquisition, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, ImageComments, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, QualityControlImage, "1", "3", "GeneralImageModule");
@@ -1204,6 +1312,14 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, IrradiationEventUID, "1-n", "3", "GeneralImageModule");
         RealWorldValueMappingSequence.read(dataset, "1-n", "3", "GeneralImageModule");
 
+        // --- GeneralReferenceModule (U) ---
+        ReferencedImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        ReferencedInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        getAndCheckElementFromDataset(dataset, DerivationDescription, "1", "3", "GeneralReferenceModule");
+        DerivationCodeSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+
         // --- ImagePixelModule (M) ---
         // getAndCheckElementFromDataset(dataset, SamplesPerPixel, "1", "1", "ImagePixelModule");
         // getAndCheckElementFromDataset(dataset, PhotometricInterpretation, "1", "1", "ImagePixelModule");
@@ -1213,7 +1329,6 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         // getAndCheckElementFromDataset(dataset, BitsStored, "1", "1", "ImagePixelModule");
         // getAndCheckElementFromDataset(dataset, HighBit, "1", "1", "ImagePixelModule");
         // getAndCheckElementFromDataset(dataset, PixelRepresentation, "1", "1", "ImagePixelModule");
-        getAndCheckElementFromDataset(dataset, PixelData, "1", "1C", "ImagePixelModule");
         getAndCheckElementFromDataset(dataset, PlanarConfiguration, "1", "1C", "ImagePixelModule");
         getAndCheckElementFromDataset(dataset, PixelAspectRatio, "2", "1C", "ImagePixelModule");
         getAndCheckElementFromDataset(dataset, SmallestImagePixelValue, "1", "3", "ImagePixelModule");
@@ -1225,6 +1340,8 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, GreenPaletteColorLookupTableData, "1", "1C", "ImagePixelModule");
         getAndCheckElementFromDataset(dataset, BluePaletteColorLookupTableData, "1", "1C", "ImagePixelModule");
         getAndCheckElementFromDataset(dataset, ICCProfile, "1", "3", "ImagePixelModule");
+        getAndCheckElementFromDataset(dataset, ColorSpace, "1", "3", "ImagePixelModule");
+        getAndCheckElementFromDataset(dataset, PixelData, "1", "1C", "ImagePixelModule");
         getAndCheckElementFromDataset(dataset, PixelDataProviderURL, "1", "1C", "ImagePixelModule");
         getAndCheckElementFromDataset(dataset, PixelPaddingRangeLimit, "1", "1C", "ImagePixelModule");
 
@@ -1322,6 +1439,9 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, TableTopLateralPosition, "1", "3", "RTImageModule");
         getAndCheckElementFromDataset(dataset, IsocenterPosition, "3", "3", "RTImageModule");
         getAndCheckElementFromDataset(dataset, PatientPosition, "1", "1C", "RTImageModule");
+        getAndCheckElementFromDataset(dataset, ExposureTime, "1", "3", "RTImageModule");
+        getAndCheckElementFromDataset(dataset, ExposureTimeInms, "1", "3", "RTImageModule");
+        getAndCheckElementFromDataset(dataset, MetersetExposure, "1", "3", "RTImageModule");
 
         // --- ModalityLUTModule (U) ---
         ModalityLUTSequence.read(dataset, "1-n", "1C", "ModalityLUTModule");
@@ -1356,6 +1476,8 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, RelatedGeneralSOPClassUID, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, OriginalSpecializedSOPClassUID, "1", "3", "SOPCommonModule");
         CodingSchemeIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        ContextGroupIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        MappingResourceIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, TimezoneOffsetFromUTC, "1", "3", "SOPCommonModule");
         ContributingEquipmentSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         // getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "3", "SOPCommonModule");
@@ -1398,6 +1520,9 @@ OFCondition DRTImageIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientAlternativeCalendar, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientSex, "1", "2", "PatientModule");
     ReferencedPatientPhotoSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, QualityControlSubject, "1", "3", "PatientModule");
@@ -1413,12 +1538,19 @@ OFCondition DRTImageIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientBreedDescription, "1", "2C", "PatientModule");
     PatientBreedCodeSequence.read(dataset, "1-n", "2C", "PatientModule");
     BreedRegistrationSequence.read(dataset, "1-n", "2C", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainDescription, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainNomenclature, "1", "3", "PatientModule");
+    StrainCodeSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainAdditionalInformation, "1", "3", "PatientModule");
+    StrainStockSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePerson, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePersonRole, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsibleOrganization, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientIdentityRemoved, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, DeidentificationMethod, "1-n", "1C", "PatientModule");
     DeidentificationMethodCodeSequence.read(dataset, "1-n", "1C", "PatientModule");
+    SourcePatientGroupIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
+    GroupOfPatientsIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
 
     // --- ClinicalTrialSubjectModule (U) ---
     if (dataset.tagExists(DCM_ClinicalTrialSponsorName) ||
@@ -1474,7 +1606,16 @@ OFCondition DRTImageIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PatientAge, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientSize, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientWeight, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientBodyMassIndex, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredAPDimension, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredLateralDimension, "1", "3", "PatientStudyModule");
         PatientSizeCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MedicalAlerts, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, Allergies, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, SmokingStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PregnancyStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, LastMenstrualDate, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientState, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, Occupation, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
@@ -1511,6 +1652,7 @@ OFCondition DRTImageIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, SeriesDescription, "1", "3", "RTSeriesModule");
         SeriesDescriptionCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, OperatorsName, "1-n", "2", "RTSeriesModule");
+        OperatorIdentificationSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         ReferencedPerformedProcedureStepSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         RequestAttributesSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepID, "1", "3", "RTSeriesModule");
@@ -1549,6 +1691,9 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(PatientAlternativeCalendar), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientSex), "1", "2", "PatientModule");
         if (result.good()) result = ReferencedPatientPhotoSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(QualityControlSubject), "1", "3", "PatientModule");
@@ -1564,12 +1709,19 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientBreedDescription), "1", "2C", "PatientModule");
         if (result.good()) result = PatientBreedCodeSequence.write(dataset, "1-n" ,"2C", "PatientModule");
         if (result.good()) result = BreedRegistrationSequence.write(dataset, "1-n" ,"2C", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedCharacters(StrainDescription), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(StrainNomenclature), "1", "3", "PatientModule");
+        if (result.good()) result = StrainCodeSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedText(StrainAdditionalInformation), "1", "3", "PatientModule");
+        if (result.good()) result = StrainStockSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmPersonName(ResponsiblePerson), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(ResponsiblePersonRole), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(ResponsibleOrganization), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientIdentityRemoved), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(DeidentificationMethod), "1-n", "1C", "PatientModule");
         if (result.good()) result = DeidentificationMethodCodeSequence.write(dataset, "1-n" ,"1C", "PatientModule");
+        if (result.good()) result = SourcePatientGroupIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        if (result.good()) result = GroupOfPatientsIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
 
         // --- ClinicalTrialSubjectModule (U) ---
         if (isClinicalTrialSubjectModulePresent(OFFalse /*complete*/))
@@ -1614,7 +1766,16 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmAgeString(PatientAge), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientSize), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientWeight), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(PatientBodyMassIndex), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredAPDimension), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredLateralDimension), "1", "3", "PatientStudyModule");
             if (result.good()) result = PatientSizeCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(MedicalAlerts), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(Allergies), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmCodeString(SmokingStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnsignedShort(PregnancyStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDate(LastMenstrualDate), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(PatientState), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmShortString(Occupation), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
@@ -1642,6 +1803,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(SeriesDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = SeriesDescriptionCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmPersonName(OperatorsName), "1-n", "2", "RTSeriesModule");
+        if (result.good()) result = OperatorIdentificationSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = ReferencedPerformedProcedureStepSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = RequestAttributesSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortString(PerformedProcedureStepID), "1", "3", "RTSeriesModule");
@@ -1678,6 +1840,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1693,11 +1856,6 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmDate(AcquisitionDate), "1", "3", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmTime(AcquisitionTime), "1", "3", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmDateTime(AcquisitionDateTime), "1", "3", "GeneralImageModule");
-        if (result.good()) result = ReferencedImageSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
-        addElementToDataset(result, dataset, new DcmShortText(DerivationDescription), "1", "3", "GeneralImageModule");
-        if (result.good()) result = DerivationCodeSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
-        if (result.good()) result = SourceImageSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
-        if (result.good()) result = ReferencedInstanceSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmIntegerString(ImagesInAcquisition), "1", "3", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmLongText(ImageComments), "1", "3", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmCodeString(QualityControlImage), "1", "3", "GeneralImageModule");
@@ -1711,6 +1869,17 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(IrradiationEventUID), "1-n", "3", "GeneralImageModule");
         if (result.good()) result = RealWorldValueMappingSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
 
+        // --- GeneralReferenceModule (U) ---
+        if (isGeneralReferenceModulePresent(OFFalse /*complete*/))
+        {
+            if (result.good()) result = ReferencedImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = ReferencedInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            addElementToDataset(result, dataset, new DcmShortText(DerivationDescription), "1", "3", "GeneralReferenceModule");
+            if (result.good()) result = DerivationCodeSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+        }
+
         // --- ImagePixelModule (M) ---
         // addElementToDataset(result, dataset, new DcmUnsignedShort(SamplesPerPixel), "1", "1", "ImagePixelModule");
         // addElementToDataset(result, dataset, new DcmCodeString(PhotometricInterpretation), "1", "1", "ImagePixelModule");
@@ -1720,7 +1889,6 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         // addElementToDataset(result, dataset, new DcmUnsignedShort(BitsStored), "1", "1", "ImagePixelModule");
         // addElementToDataset(result, dataset, new DcmUnsignedShort(HighBit), "1", "1", "ImagePixelModule");
         // addElementToDataset(result, dataset, new DcmUnsignedShort(PixelRepresentation), "1", "1", "ImagePixelModule");
-        addElementToDataset(result, dataset, new DcmPixelData(PixelData), "1", "1C", "ImagePixelModule");
         addElementToDataset(result, dataset, new DcmUnsignedShort(PlanarConfiguration), "1", "1C", "ImagePixelModule");
         addElementToDataset(result, dataset, new DcmIntegerString(PixelAspectRatio), "2", "1C", "ImagePixelModule");
         addElementToDataset(result, dataset, new DcmUnsignedShort(SmallestImagePixelValue), "1", "3", "ImagePixelModule");
@@ -1732,6 +1900,8 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmOtherByteOtherWord(GreenPaletteColorLookupTableData), "1", "1C", "ImagePixelModule");
         addElementToDataset(result, dataset, new DcmOtherByteOtherWord(BluePaletteColorLookupTableData), "1", "1C", "ImagePixelModule");
         addElementToDataset(result, dataset, new DcmOtherByteOtherWord(ICCProfile), "1", "3", "ImagePixelModule");
+        addElementToDataset(result, dataset, new DcmCodeString(ColorSpace), "1", "3", "ImagePixelModule");
+        addElementToDataset(result, dataset, new DcmPixelData(PixelData), "1", "1C", "ImagePixelModule");
         addElementToDataset(result, dataset, new DcmUniversalResourceIdentifierOrLocator(PixelDataProviderURL), "1", "1C", "ImagePixelModule");
         addElementToDataset(result, dataset, new DcmUnsignedShort(PixelPaddingRangeLimit), "1", "1C", "ImagePixelModule");
 
@@ -1831,6 +2001,9 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmDecimalString(TableTopLateralPosition), "1", "3", "RTImageModule");
         addElementToDataset(result, dataset, new DcmDecimalString(IsocenterPosition), "3", "3", "RTImageModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientPosition), "1", "1C", "RTImageModule");
+        addElementToDataset(result, dataset, new DcmIntegerString(ExposureTime), "1", "3", "RTImageModule");
+        addElementToDataset(result, dataset, new DcmFloatingPointDouble(ExposureTimeInms), "1", "3", "RTImageModule");
+        addElementToDataset(result, dataset, new DcmDecimalString(MetersetExposure), "1", "3", "RTImageModule");
 
         // --- ModalityLUTModule (U) ---
         if (isModalityLUTModulePresent(OFFalse /*complete*/))
@@ -1871,6 +2044,8 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(RelatedGeneralSOPClassUID), "1-n", "3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(OriginalSpecializedSOPClassUID), "1", "3", "SOPCommonModule");
         if (result.good()) result = CodingSchemeIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = ContextGroupIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = MappingResourceIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmShortString(TimezoneOffsetFromUTC), "1", "3", "SOPCommonModule");
         if (result.good()) result = ContributingEquipmentSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         // addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "3", "SOPCommonModule");
@@ -1937,7 +2112,16 @@ OFBool DRTImageIOD::isPatientStudyModulePresent(const OFBool /*complete*/)
            !PatientAge.isEmpty() ||
            !PatientSize.isEmpty() ||
            !PatientWeight.isEmpty() ||
+           !PatientBodyMassIndex.isEmpty() ||
+           !MeasuredAPDimension.isEmpty() ||
+           !MeasuredLateralDimension.isEmpty() ||
            !PatientSizeCodeSequence.isEmpty() ||
+           !MedicalAlerts.isEmpty() ||
+           !Allergies.isEmpty() ||
+           !SmokingStatus.isEmpty() ||
+           !PregnancyStatus.isEmpty() ||
+           !LastMenstrualDate.isEmpty() ||
+           !PatientState.isEmpty() ||
            !Occupation.isEmpty() ||
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
@@ -1981,6 +2165,18 @@ OFBool DRTImageIOD::isFrameOfReferenceModulePresent(const OFBool complete)
 }
 
 
+OFBool DRTImageIOD::isGeneralReferenceModulePresent(const OFBool /*complete*/)
+{
+    /* check whether at least one attribute is present */
+    return !ReferencedImageSequence.isEmpty() ||
+           !ReferencedInstanceSequence.isEmpty() ||
+           !DerivationDescription.isEmpty() ||
+           !DerivationCodeSequence.isEmpty() ||
+           !SourceImageSequence.isEmpty() ||
+           !SourceInstanceSequence.isEmpty();
+}
+
+
 OFBool DRTImageIOD::isContrastBolusModulePresent(const OFBool /*complete*/)
 {
     /* check whether at least one attribute is present */
@@ -2158,6 +2354,12 @@ OFCondition DRTImageIOD::getAdmittingDiagnosesDescription(OFString &value, const
 }
 
 
+OFCondition DRTImageIOD::getAllergies(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(Allergies, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getApprovalStatus(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ApprovalStatus, value, pos);
@@ -2317,6 +2519,12 @@ OFCondition DRTImageIOD::getClinicalTrialTimePointID(OFString &value, const sign
 }
 
 
+OFCondition DRTImageIOD::getColorSpace(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ColorSpace, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getColumns(Uint16 &value, const unsigned long pos) const
 {
     return OFconst_cast(DcmUnsignedShort &, Columns).getUint16(value, pos);
@@ -2515,6 +2723,24 @@ OFCondition DRTImageIOD::getEthnicGroup(OFString &value, const signed long pos)
 }
 
 
+OFCondition DRTImageIOD::getExposureTime(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ExposureTime, value, pos);
+}
+
+
+OFCondition DRTImageIOD::getExposureTime(Sint32 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmIntegerString &, ExposureTime).getSint32(value, pos);
+}
+
+
+OFCondition DRTImageIOD::getExposureTimeInms(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmFloatingPointDouble &, ExposureTimeInms).getFloat64(value, pos);
+}
+
+
 OFCondition DRTImageIOD::getFractionNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(FractionNumber, value, pos);
@@ -2791,6 +3017,12 @@ OFCondition DRTImageIOD::getLargestImagePixelValue(Uint16 &value, const unsigned
 }
 
 
+OFCondition DRTImageIOD::getLastMenstrualDate(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(LastMenstrualDate, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getLongitudinalTemporalInformationModified(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(LongitudinalTemporalInformationModified, value, pos);
@@ -2839,6 +3071,48 @@ OFCondition DRTImageIOD::getManufacturerModelName(OFString &value, const signed
 }
 
 
+OFCondition DRTImageIOD::getMeasuredAPDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredAPDimension, value, pos);
+}
+
+
+OFCondition DRTImageIOD::getMeasuredAPDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredAPDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTImageIOD::getMeasuredLateralDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredLateralDimension, value, pos);
+}
+
+
+OFCondition DRTImageIOD::getMeasuredLateralDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredLateralDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTImageIOD::getMedicalAlerts(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MedicalAlerts, value, pos);
+}
+
+
+OFCondition DRTImageIOD::getMetersetExposure(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MetersetExposure, value, pos);
+}
+
+
+OFCondition DRTImageIOD::getMetersetExposure(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MetersetExposure).getFloat64(value, pos);
+}
+
+
 OFCondition DRTImageIOD::getModality(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(Modality, value, pos);
@@ -2899,18 +3173,42 @@ OFCondition DRTImageIOD::getPatientAge(OFString &value, const signed long pos) c
 }
 
 
+OFCondition DRTImageIOD::getPatientAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getPatientBirthDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthDate, value, pos);
 }
 
 
+OFCondition DRTImageIOD::getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBirthDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getPatientBirthTime(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthTime, value, pos);
 }
 
 
+OFCondition DRTImageIOD::getPatientBodyMassIndex(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBodyMassIndex, value, pos);
+}
+
+
+OFCondition DRTImageIOD::getPatientBodyMassIndex(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, PatientBodyMassIndex).getFloat64(value, pos);
+}
+
+
 OFCondition DRTImageIOD::getPatientBreedDescription(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBreedDescription, value, pos);
@@ -2923,6 +3221,12 @@ OFCondition DRTImageIOD::getPatientComments(OFString &value, const signed long p
 }
 
 
+OFCondition DRTImageIOD::getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientDeathDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getPatientID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientID, value, pos);
@@ -2983,6 +3287,12 @@ OFCondition DRTImageIOD::getPatientSpeciesDescription(OFString &value, const sig
 }
 
 
+OFCondition DRTImageIOD::getPatientState(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientState, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getPatientSupportAngle(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientSupportAngle, value, pos);
@@ -3121,6 +3431,12 @@ OFCondition DRTImageIOD::getPreferredPlaybackSequencing(Uint16 &value, const uns
 }
 
 
+OFCondition DRTImageIOD::getPregnancyStatus(Uint16 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmUnsignedShort &, PregnancyStatus).getUint16(value, pos);
+}
+
+
 OFCondition DRTImageIOD::getPresentationLUTShape(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PresentationLUTShape, value, pos);
@@ -3496,6 +3812,12 @@ OFCondition DRTImageIOD::getSmallestImagePixelValue(Uint16 &value, const unsigne
 }
 
 
+OFCondition DRTImageIOD::getSmokingStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(SmokingStatus, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getSoftwareVersions(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(SoftwareVersions, value, pos);
@@ -3580,6 +3902,24 @@ OFCondition DRTImageIOD::getStopTrim(Sint32 &value, const unsigned long pos) con
 }
 
 
+OFCondition DRTImageIOD::getStrainAdditionalInformation(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainAdditionalInformation, value, pos);
+}
+
+
+OFCondition DRTImageIOD::getStrainDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainDescription, value, pos);
+}
+
+
+OFCondition DRTImageIOD::getStrainNomenclature(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainNomenclature, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getStudyDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StudyDate, value, pos);
@@ -3853,6 +4193,15 @@ OFCondition DRTImageIOD::setAdmittingDiagnosesDescription(const OFString &value,
 }
 
 
+OFCondition DRTImageIOD::setAllergies(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = Allergies.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setApprovalStatus(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -4048,6 +4397,15 @@ OFCondition DRTImageIOD::setClinicalTrialTimePointID(const OFString &value, cons
 }
 
 
+OFCondition DRTImageIOD::setColorSpace(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = ColorSpace.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setColumns(const Uint16 value, const unsigned long pos)
 {
     return Columns.putUint16(value, pos);
@@ -4261,6 +4619,21 @@ OFCondition DRTImageIOD::setEthnicGroup(const OFString &value, const OFBool chec
 }
 
 
+OFCondition DRTImageIOD::setExposureTime(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = ExposureTime.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTImageIOD::setExposureTimeInms(const Float64 value, const unsigned long pos)
+{
+    return ExposureTimeInms.putFloat64(value, pos);
+}
+
+
 OFCondition DRTImageIOD::setFractionNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
@@ -4513,6 +4886,15 @@ OFCondition DRTImageIOD::setLargestImagePixelValue(const Uint16 value, const uns
 }
 
 
+OFCondition DRTImageIOD::setLastMenstrualDate(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = LastMenstrualDate.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setLongitudinalTemporalInformationModified(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -4567,6 +4949,42 @@ OFCondition DRTImageIOD::setManufacturerModelName(const OFString &value, const O
 }
 
 
+OFCondition DRTImageIOD::setMeasuredAPDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredAPDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTImageIOD::setMeasuredLateralDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredLateralDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTImageIOD::setMedicalAlerts(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = MedicalAlerts.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTImageIOD::setMetersetExposure(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MetersetExposure.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setModality(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -4648,6 +5066,15 @@ OFCondition DRTImageIOD::setPatientAge(const OFString &value, const OFBool check
 }
 
 
+OFCondition DRTImageIOD::setPatientAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setPatientBirthDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -4657,6 +5084,15 @@ OFCondition DRTImageIOD::setPatientBirthDate(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTImageIOD::setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBirthDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setPatientBirthTime(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
@@ -4666,6 +5102,15 @@ OFCondition DRTImageIOD::setPatientBirthTime(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTImageIOD::setPatientBodyMassIndex(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBodyMassIndex.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setPatientBreedDescription(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -4684,6 +5129,15 @@ OFCondition DRTImageIOD::setPatientComments(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTImageIOD::setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientDeathDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -4765,6 +5219,15 @@ OFCondition DRTImageIOD::setPatientSpeciesDescription(const OFString &value, con
 }
 
 
+OFCondition DRTImageIOD::setPatientState(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientState.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setPatientSupportAngle(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -4927,6 +5390,12 @@ OFCondition DRTImageIOD::setPreferredPlaybackSequencing(const Uint16 value, cons
 }
 
 
+OFCondition DRTImageIOD::setPregnancyStatus(const Uint16 value, const unsigned long pos)
+{
+    return PregnancyStatus.putUint16(value, pos);
+}
+
+
 OFCondition DRTImageIOD::setPresentationLUTShape(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -5344,6 +5813,15 @@ OFCondition DRTImageIOD::setSmallestImagePixelValue(const Uint16 value, const un
 }
 
 
+OFCondition DRTImageIOD::setSmokingStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = SmokingStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setSoftwareVersions(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
@@ -5425,6 +5903,33 @@ OFCondition DRTImageIOD::setStopTrim(const OFString &value, const OFBool check)
 }
 
 
+OFCondition DRTImageIOD::setStrainAdditionalInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = StrainAdditionalInformation.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTImageIOD::setStrainDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainDescription.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTImageIOD::setStrainNomenclature(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainNomenclature.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setStudyDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drtionpl.cc b/dcmrt/libsrc/drtionpl.cc
index 52b22af..3ba2f77 100644
--- a/dcmrt/libsrc/drtionpl.cc
+++ b/dcmrt/libsrc/drtionpl.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -23,6 +23,9 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
     PatientBirthDate(DCM_PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(DCM_PatientAlternativeCalendar),
     PatientSex(DCM_PatientSex),
     ReferencedPatientPhotoSequence(),
     QualityControlSubject(DCM_QualityControlSubject),
@@ -38,12 +41,19 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     PatientBreedDescription(DCM_PatientBreedDescription),
     PatientBreedCodeSequence(),
     BreedRegistrationSequence(),
+    StrainDescription(DCM_StrainDescription),
+    StrainNomenclature(DCM_StrainNomenclature),
+    StrainCodeSequence(),
+    StrainAdditionalInformation(DCM_StrainAdditionalInformation),
+    StrainStockSequence(),
     ResponsiblePerson(DCM_ResponsiblePerson),
     ResponsiblePersonRole(DCM_ResponsiblePersonRole),
     ResponsibleOrganization(DCM_ResponsibleOrganization),
     PatientIdentityRemoved(DCM_PatientIdentityRemoved),
     DeidentificationMethod(DCM_DeidentificationMethod),
     DeidentificationMethodCodeSequence(),
+    SourcePatientGroupIdentificationSequence(),
+    GroupOfPatientsIdentificationSequence(),
     ClinicalTrialSponsorName(DCM_ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(DCM_ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(DCM_ClinicalTrialProtocolName),
@@ -77,7 +87,16 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     PatientAge(DCM_PatientAge),
     PatientSize(DCM_PatientSize),
     PatientWeight(DCM_PatientWeight),
+    PatientBodyMassIndex(DCM_PatientBodyMassIndex),
+    MeasuredAPDimension(DCM_MeasuredAPDimension),
+    MeasuredLateralDimension(DCM_MeasuredLateralDimension),
     PatientSizeCodeSequence(),
+    MedicalAlerts(DCM_MedicalAlerts),
+    Allergies(DCM_Allergies),
+    SmokingStatus(DCM_SmokingStatus),
+    PregnancyStatus(DCM_PregnancyStatus),
+    LastMenstrualDate(DCM_LastMenstrualDate),
+    PatientState(DCM_PatientState),
     Occupation(DCM_Occupation),
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
@@ -97,6 +116,7 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     SeriesDescription(DCM_SeriesDescription),
     SeriesDescriptionCodeSequence(),
     OperatorsName(DCM_OperatorsName),
+    OperatorIdentificationSequence(),
     ReferencedPerformedProcedureStepSequence(),
     RequestAttributesSequence(),
     PerformedProcedureStepID(DCM_PerformedProcedureStepID),
@@ -121,6 +141,7 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
+    UDISequence(),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -138,6 +159,7 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     ReferencedStructureSetSequence(),
     ReferencedDoseSequence(),
     ReferencedRTPlanSequence(),
+    FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(DCM_FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix),
     PrescriptionDescription(DCM_PrescriptionDescription),
     DoseReferenceSequence(),
     IonToleranceTableSequence(),
@@ -148,6 +170,12 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     ReviewDate(DCM_ReviewDate),
     ReviewTime(DCM_ReviewTime),
     ReviewerName(DCM_ReviewerName),
+    ReferencedImageSequence(),
+    ReferencedInstanceSequence(),
+    DerivationDescription(DCM_DerivationDescription),
+    DerivationCodeSequence(),
+    SourceImageSequence(),
+    SourceInstanceSequence(),
     SOPClassUID(DCM_SOPClassUID),
     SOPInstanceUID(DCM_SOPInstanceUID),
     SpecificCharacterSet(DCM_SpecificCharacterSet),
@@ -158,6 +186,8 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     RelatedGeneralSOPClassUID(DCM_RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(DCM_OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(),
+    ContextGroupIdentificationSequence(),
+    MappingResourceIdentificationSequence(),
     TimezoneOffsetFromUTC(DCM_TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(),
     SOPInstanceStatus(DCM_SOPInstanceStatus),
@@ -188,6 +218,9 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
     PatientBirthDate(copy.PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(copy.PatientAlternativeCalendar),
     PatientSex(copy.PatientSex),
     ReferencedPatientPhotoSequence(copy.ReferencedPatientPhotoSequence),
     QualityControlSubject(copy.QualityControlSubject),
@@ -203,12 +236,19 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     PatientBreedDescription(copy.PatientBreedDescription),
     PatientBreedCodeSequence(copy.PatientBreedCodeSequence),
     BreedRegistrationSequence(copy.BreedRegistrationSequence),
+    StrainDescription(copy.StrainDescription),
+    StrainNomenclature(copy.StrainNomenclature),
+    StrainCodeSequence(copy.StrainCodeSequence),
+    StrainAdditionalInformation(copy.StrainAdditionalInformation),
+    StrainStockSequence(copy.StrainStockSequence),
     ResponsiblePerson(copy.ResponsiblePerson),
     ResponsiblePersonRole(copy.ResponsiblePersonRole),
     ResponsibleOrganization(copy.ResponsibleOrganization),
     PatientIdentityRemoved(copy.PatientIdentityRemoved),
     DeidentificationMethod(copy.DeidentificationMethod),
     DeidentificationMethodCodeSequence(copy.DeidentificationMethodCodeSequence),
+    SourcePatientGroupIdentificationSequence(copy.SourcePatientGroupIdentificationSequence),
+    GroupOfPatientsIdentificationSequence(copy.GroupOfPatientsIdentificationSequence),
     ClinicalTrialSponsorName(copy.ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(copy.ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(copy.ClinicalTrialProtocolName),
@@ -242,7 +282,16 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     PatientAge(copy.PatientAge),
     PatientSize(copy.PatientSize),
     PatientWeight(copy.PatientWeight),
+    PatientBodyMassIndex(copy.PatientBodyMassIndex),
+    MeasuredAPDimension(copy.MeasuredAPDimension),
+    MeasuredLateralDimension(copy.MeasuredLateralDimension),
     PatientSizeCodeSequence(copy.PatientSizeCodeSequence),
+    MedicalAlerts(copy.MedicalAlerts),
+    Allergies(copy.Allergies),
+    SmokingStatus(copy.SmokingStatus),
+    PregnancyStatus(copy.PregnancyStatus),
+    LastMenstrualDate(copy.LastMenstrualDate),
+    PatientState(copy.PatientState),
     Occupation(copy.Occupation),
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
@@ -262,6 +311,7 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     SeriesDescription(copy.SeriesDescription),
     SeriesDescriptionCodeSequence(copy.SeriesDescriptionCodeSequence),
     OperatorsName(copy.OperatorsName),
+    OperatorIdentificationSequence(copy.OperatorIdentificationSequence),
     ReferencedPerformedProcedureStepSequence(copy.ReferencedPerformedProcedureStepSequence),
     RequestAttributesSequence(copy.RequestAttributesSequence),
     PerformedProcedureStepID(copy.PerformedProcedureStepID),
@@ -286,6 +336,7 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
+    UDISequence(copy.UDISequence),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -303,6 +354,7 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     ReferencedStructureSetSequence(copy.ReferencedStructureSetSequence),
     ReferencedDoseSequence(copy.ReferencedDoseSequence),
     ReferencedRTPlanSequence(copy.ReferencedRTPlanSequence),
+    FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(copy.FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix),
     PrescriptionDescription(copy.PrescriptionDescription),
     DoseReferenceSequence(copy.DoseReferenceSequence),
     IonToleranceTableSequence(copy.IonToleranceTableSequence),
@@ -313,6 +365,12 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     ReviewDate(copy.ReviewDate),
     ReviewTime(copy.ReviewTime),
     ReviewerName(copy.ReviewerName),
+    ReferencedImageSequence(copy.ReferencedImageSequence),
+    ReferencedInstanceSequence(copy.ReferencedInstanceSequence),
+    DerivationDescription(copy.DerivationDescription),
+    DerivationCodeSequence(copy.DerivationCodeSequence),
+    SourceImageSequence(copy.SourceImageSequence),
+    SourceInstanceSequence(copy.SourceInstanceSequence),
     SOPClassUID(copy.SOPClassUID),
     SOPInstanceUID(copy.SOPInstanceUID),
     SpecificCharacterSet(copy.SpecificCharacterSet),
@@ -323,6 +381,8 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     RelatedGeneralSOPClassUID(copy.RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(copy.OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(copy.CodingSchemeIdentificationSequence),
+    ContextGroupIdentificationSequence(copy.ContextGroupIdentificationSequence),
+    MappingResourceIdentificationSequence(copy.MappingResourceIdentificationSequence),
     TimezoneOffsetFromUTC(copy.TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(copy.ContributingEquipmentSequence),
     SOPInstanceStatus(copy.SOPInstanceStatus),
@@ -359,6 +419,9 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
         PatientBirthDate = copy.PatientBirthDate;
+        PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
+        PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
+        PatientAlternativeCalendar = copy.PatientAlternativeCalendar;
         PatientSex = copy.PatientSex;
         ReferencedPatientPhotoSequence = copy.ReferencedPatientPhotoSequence;
         QualityControlSubject = copy.QualityControlSubject;
@@ -374,12 +437,19 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         PatientBreedDescription = copy.PatientBreedDescription;
         PatientBreedCodeSequence = copy.PatientBreedCodeSequence;
         BreedRegistrationSequence = copy.BreedRegistrationSequence;
+        StrainDescription = copy.StrainDescription;
+        StrainNomenclature = copy.StrainNomenclature;
+        StrainCodeSequence = copy.StrainCodeSequence;
+        StrainAdditionalInformation = copy.StrainAdditionalInformation;
+        StrainStockSequence = copy.StrainStockSequence;
         ResponsiblePerson = copy.ResponsiblePerson;
         ResponsiblePersonRole = copy.ResponsiblePersonRole;
         ResponsibleOrganization = copy.ResponsibleOrganization;
         PatientIdentityRemoved = copy.PatientIdentityRemoved;
         DeidentificationMethod = copy.DeidentificationMethod;
         DeidentificationMethodCodeSequence = copy.DeidentificationMethodCodeSequence;
+        SourcePatientGroupIdentificationSequence = copy.SourcePatientGroupIdentificationSequence;
+        GroupOfPatientsIdentificationSequence = copy.GroupOfPatientsIdentificationSequence;
         ClinicalTrialSponsorName = copy.ClinicalTrialSponsorName;
         ClinicalTrialProtocolID = copy.ClinicalTrialProtocolID;
         ClinicalTrialProtocolName = copy.ClinicalTrialProtocolName;
@@ -413,7 +483,16 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         PatientAge = copy.PatientAge;
         PatientSize = copy.PatientSize;
         PatientWeight = copy.PatientWeight;
+        PatientBodyMassIndex = copy.PatientBodyMassIndex;
+        MeasuredAPDimension = copy.MeasuredAPDimension;
+        MeasuredLateralDimension = copy.MeasuredLateralDimension;
         PatientSizeCodeSequence = copy.PatientSizeCodeSequence;
+        MedicalAlerts = copy.MedicalAlerts;
+        Allergies = copy.Allergies;
+        SmokingStatus = copy.SmokingStatus;
+        PregnancyStatus = copy.PregnancyStatus;
+        LastMenstrualDate = copy.LastMenstrualDate;
+        PatientState = copy.PatientState;
         Occupation = copy.Occupation;
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
@@ -433,6 +512,7 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         SeriesDescription = copy.SeriesDescription;
         SeriesDescriptionCodeSequence = copy.SeriesDescriptionCodeSequence;
         OperatorsName = copy.OperatorsName;
+        OperatorIdentificationSequence = copy.OperatorIdentificationSequence;
         ReferencedPerformedProcedureStepSequence = copy.ReferencedPerformedProcedureStepSequence;
         RequestAttributesSequence = copy.RequestAttributesSequence;
         PerformedProcedureStepID = copy.PerformedProcedureStepID;
@@ -457,6 +537,7 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
+        UDISequence = copy.UDISequence;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -474,6 +555,7 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         ReferencedStructureSetSequence = copy.ReferencedStructureSetSequence;
         ReferencedDoseSequence = copy.ReferencedDoseSequence;
         ReferencedRTPlanSequence = copy.ReferencedRTPlanSequence;
+        FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix = copy.FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix;
         PrescriptionDescription = copy.PrescriptionDescription;
         DoseReferenceSequence = copy.DoseReferenceSequence;
         IonToleranceTableSequence = copy.IonToleranceTableSequence;
@@ -484,6 +566,12 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         ReviewDate = copy.ReviewDate;
         ReviewTime = copy.ReviewTime;
         ReviewerName = copy.ReviewerName;
+        ReferencedImageSequence = copy.ReferencedImageSequence;
+        ReferencedInstanceSequence = copy.ReferencedInstanceSequence;
+        DerivationDescription = copy.DerivationDescription;
+        DerivationCodeSequence = copy.DerivationCodeSequence;
+        SourceImageSequence = copy.SourceImageSequence;
+        SourceInstanceSequence = copy.SourceInstanceSequence;
         SOPClassUID = copy.SOPClassUID;
         SOPInstanceUID = copy.SOPInstanceUID;
         SpecificCharacterSet = copy.SpecificCharacterSet;
@@ -494,6 +582,8 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         RelatedGeneralSOPClassUID = copy.RelatedGeneralSOPClassUID;
         OriginalSpecializedSOPClassUID = copy.OriginalSpecializedSOPClassUID;
         CodingSchemeIdentificationSequence = copy.CodingSchemeIdentificationSequence;
+        ContextGroupIdentificationSequence = copy.ContextGroupIdentificationSequence;
+        MappingResourceIdentificationSequence = copy.MappingResourceIdentificationSequence;
         TimezoneOffsetFromUTC = copy.TimezoneOffsetFromUTC;
         ContributingEquipmentSequence = copy.ContributingEquipmentSequence;
         SOPInstanceStatus = copy.SOPInstanceStatus;
@@ -525,6 +615,9 @@ void DRTIonPlanIOD::clear()
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
     PatientBirthDate.clear();
+    PatientBirthDateInAlternativeCalendar.clear();
+    PatientDeathDateInAlternativeCalendar.clear();
+    PatientAlternativeCalendar.clear();
     PatientSex.clear();
     ReferencedPatientPhotoSequence.clear();
     QualityControlSubject.clear();
@@ -540,12 +633,19 @@ void DRTIonPlanIOD::clear()
     PatientBreedDescription.clear();
     PatientBreedCodeSequence.clear();
     BreedRegistrationSequence.clear();
+    StrainDescription.clear();
+    StrainNomenclature.clear();
+    StrainCodeSequence.clear();
+    StrainAdditionalInformation.clear();
+    StrainStockSequence.clear();
     ResponsiblePerson.clear();
     ResponsiblePersonRole.clear();
     ResponsibleOrganization.clear();
     PatientIdentityRemoved.clear();
     DeidentificationMethod.clear();
     DeidentificationMethodCodeSequence.clear();
+    SourcePatientGroupIdentificationSequence.clear();
+    GroupOfPatientsIdentificationSequence.clear();
     ClinicalTrialSponsorName.clear();
     ClinicalTrialProtocolID.clear();
     ClinicalTrialProtocolName.clear();
@@ -579,7 +679,16 @@ void DRTIonPlanIOD::clear()
     PatientAge.clear();
     PatientSize.clear();
     PatientWeight.clear();
+    PatientBodyMassIndex.clear();
+    MeasuredAPDimension.clear();
+    MeasuredLateralDimension.clear();
     PatientSizeCodeSequence.clear();
+    MedicalAlerts.clear();
+    Allergies.clear();
+    SmokingStatus.clear();
+    PregnancyStatus.clear();
+    LastMenstrualDate.clear();
+    PatientState.clear();
     Occupation.clear();
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
@@ -599,6 +708,7 @@ void DRTIonPlanIOD::clear()
     SeriesDescription.clear();
     SeriesDescriptionCodeSequence.clear();
     OperatorsName.clear();
+    OperatorIdentificationSequence.clear();
     ReferencedPerformedProcedureStepSequence.clear();
     RequestAttributesSequence.clear();
     PerformedProcedureStepID.clear();
@@ -623,6 +733,7 @@ void DRTIonPlanIOD::clear()
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
+    UDISequence.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -640,6 +751,7 @@ void DRTIonPlanIOD::clear()
     ReferencedStructureSetSequence.clear();
     ReferencedDoseSequence.clear();
     ReferencedRTPlanSequence.clear();
+    FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix.clear();
     PrescriptionDescription.clear();
     DoseReferenceSequence.clear();
     IonToleranceTableSequence.clear();
@@ -650,6 +762,12 @@ void DRTIonPlanIOD::clear()
     ReviewDate.clear();
     ReviewTime.clear();
     ReviewerName.clear();
+    ReferencedImageSequence.clear();
+    ReferencedInstanceSequence.clear();
+    DerivationDescription.clear();
+    DerivationCodeSequence.clear();
+    SourceImageSequence.clear();
+    SourceInstanceSequence.clear();
     SOPClassUID.clear();
     SOPInstanceUID.clear();
     SpecificCharacterSet.clear();
@@ -660,6 +778,8 @@ void DRTIonPlanIOD::clear()
     RelatedGeneralSOPClassUID.clear();
     OriginalSpecializedSOPClassUID.clear();
     CodingSchemeIdentificationSequence.clear();
+    ContextGroupIdentificationSequence.clear();
+    MappingResourceIdentificationSequence.clear();
     TimezoneOffsetFromUTC.clear();
     ContributingEquipmentSequence.clear();
     SOPInstanceStatus.clear();
@@ -739,6 +859,7 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
+        UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -758,6 +879,7 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset)
         ReferencedStructureSetSequence.read(dataset, "1-n", "1C", "RTGeneralPlanModule");
         ReferencedDoseSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule");
         ReferencedRTPlanSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule");
+        getAndCheckElementFromDataset(dataset, FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix, "16", "3", "RTGeneralPlanModule");
 
         // --- RTPrescriptionModule (U) ---
         getAndCheckElementFromDataset(dataset, PrescriptionDescription, "1", "3", "RTPrescriptionModule");
@@ -796,6 +918,14 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset)
             getAndCheckElementFromDataset(dataset, ReviewerName, "1", "2C", "ApprovalModule");
         }
 
+        // --- GeneralReferenceModule (U) ---
+        ReferencedImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        ReferencedInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        getAndCheckElementFromDataset(dataset, DerivationDescription, "1", "3", "GeneralReferenceModule");
+        DerivationCodeSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+
         // --- SOPCommonModule (M) ---
         getAndCheckElementFromDataset(dataset, SOPClassUID, "1", "1", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, SOPInstanceUID, "1", "1", "SOPCommonModule");
@@ -807,6 +937,8 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, RelatedGeneralSOPClassUID, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, OriginalSpecializedSOPClassUID, "1", "3", "SOPCommonModule");
         CodingSchemeIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        ContextGroupIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        MappingResourceIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, TimezoneOffsetFromUTC, "1", "3", "SOPCommonModule");
         ContributingEquipmentSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         // getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "3", "SOPCommonModule");
@@ -843,6 +975,9 @@ OFCondition DRTIonPlanIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientAlternativeCalendar, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientSex, "1", "2", "PatientModule");
     ReferencedPatientPhotoSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, QualityControlSubject, "1", "3", "PatientModule");
@@ -858,12 +993,19 @@ OFCondition DRTIonPlanIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientBreedDescription, "1", "2C", "PatientModule");
     PatientBreedCodeSequence.read(dataset, "1-n", "2C", "PatientModule");
     BreedRegistrationSequence.read(dataset, "1-n", "2C", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainDescription, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainNomenclature, "1", "3", "PatientModule");
+    StrainCodeSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainAdditionalInformation, "1", "3", "PatientModule");
+    StrainStockSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePerson, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePersonRole, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsibleOrganization, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientIdentityRemoved, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, DeidentificationMethod, "1-n", "1C", "PatientModule");
     DeidentificationMethodCodeSequence.read(dataset, "1-n", "1C", "PatientModule");
+    SourcePatientGroupIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
+    GroupOfPatientsIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
 
     // --- ClinicalTrialSubjectModule (U) ---
     if (dataset.tagExists(DCM_ClinicalTrialSponsorName) ||
@@ -919,7 +1061,16 @@ OFCondition DRTIonPlanIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PatientAge, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientSize, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientWeight, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientBodyMassIndex, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredAPDimension, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredLateralDimension, "1", "3", "PatientStudyModule");
         PatientSizeCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MedicalAlerts, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, Allergies, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, SmokingStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PregnancyStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, LastMenstrualDate, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientState, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, Occupation, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
@@ -956,6 +1107,7 @@ OFCondition DRTIonPlanIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, SeriesDescription, "1", "3", "RTSeriesModule");
         SeriesDescriptionCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, OperatorsName, "1-n", "2", "RTSeriesModule");
+        OperatorIdentificationSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         ReferencedPerformedProcedureStepSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         RequestAttributesSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepID, "1", "3", "RTSeriesModule");
@@ -994,6 +1146,9 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(PatientAlternativeCalendar), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientSex), "1", "2", "PatientModule");
         if (result.good()) result = ReferencedPatientPhotoSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(QualityControlSubject), "1", "3", "PatientModule");
@@ -1009,12 +1164,19 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientBreedDescription), "1", "2C", "PatientModule");
         if (result.good()) result = PatientBreedCodeSequence.write(dataset, "1-n" ,"2C", "PatientModule");
         if (result.good()) result = BreedRegistrationSequence.write(dataset, "1-n" ,"2C", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedCharacters(StrainDescription), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(StrainNomenclature), "1", "3", "PatientModule");
+        if (result.good()) result = StrainCodeSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedText(StrainAdditionalInformation), "1", "3", "PatientModule");
+        if (result.good()) result = StrainStockSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmPersonName(ResponsiblePerson), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(ResponsiblePersonRole), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(ResponsibleOrganization), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientIdentityRemoved), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(DeidentificationMethod), "1-n", "1C", "PatientModule");
         if (result.good()) result = DeidentificationMethodCodeSequence.write(dataset, "1-n" ,"1C", "PatientModule");
+        if (result.good()) result = SourcePatientGroupIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        if (result.good()) result = GroupOfPatientsIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
 
         // --- ClinicalTrialSubjectModule (U) ---
         if (isClinicalTrialSubjectModulePresent(OFFalse /*complete*/))
@@ -1059,7 +1221,16 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmAgeString(PatientAge), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientSize), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientWeight), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(PatientBodyMassIndex), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredAPDimension), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredLateralDimension), "1", "3", "PatientStudyModule");
             if (result.good()) result = PatientSizeCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(MedicalAlerts), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(Allergies), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmCodeString(SmokingStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnsignedShort(PregnancyStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDate(LastMenstrualDate), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(PatientState), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmShortString(Occupation), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
@@ -1087,6 +1258,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(SeriesDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = SeriesDescriptionCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmPersonName(OperatorsName), "1-n", "2", "RTSeriesModule");
+        if (result.good()) result = OperatorIdentificationSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = ReferencedPerformedProcedureStepSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = RequestAttributesSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortString(PerformedProcedureStepID), "1", "3", "RTSeriesModule");
@@ -1120,6 +1292,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1139,6 +1312,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         if (result.good()) result = ReferencedStructureSetSequence.write(dataset, "1-n" ,"1C", "RTGeneralPlanModule");
         if (result.good()) result = ReferencedDoseSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule");
         if (result.good()) result = ReferencedRTPlanSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule");
+        addElementToDataset(result, dataset, new DcmFloatingPointDouble(FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix), "16", "3", "RTGeneralPlanModule");
 
         // --- RTPrescriptionModule (U) ---
         if (isRTPrescriptionModulePresent(OFFalse /*complete*/))
@@ -1180,6 +1354,17 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmPersonName(ReviewerName), "1", "2C", "ApprovalModule");
         }
 
+        // --- GeneralReferenceModule (U) ---
+        if (isGeneralReferenceModulePresent(OFFalse /*complete*/))
+        {
+            if (result.good()) result = ReferencedImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = ReferencedInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            addElementToDataset(result, dataset, new DcmShortText(DerivationDescription), "1", "3", "GeneralReferenceModule");
+            if (result.good()) result = DerivationCodeSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+        }
+
         // --- SOPCommonModule (M) ---
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPClassUID), "1", "1", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPInstanceUID), "1", "1", "SOPCommonModule");
@@ -1191,6 +1376,8 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(RelatedGeneralSOPClassUID), "1-n", "3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(OriginalSpecializedSOPClassUID), "1", "3", "SOPCommonModule");
         if (result.good()) result = CodingSchemeIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = ContextGroupIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = MappingResourceIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmShortString(TimezoneOffsetFromUTC), "1", "3", "SOPCommonModule");
         if (result.good()) result = ContributingEquipmentSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         // addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "3", "SOPCommonModule");
@@ -1251,7 +1438,16 @@ OFBool DRTIonPlanIOD::isPatientStudyModulePresent(const OFBool /*complete*/)
            !PatientAge.isEmpty() ||
            !PatientSize.isEmpty() ||
            !PatientWeight.isEmpty() ||
+           !PatientBodyMassIndex.isEmpty() ||
+           !MeasuredAPDimension.isEmpty() ||
+           !MeasuredLateralDimension.isEmpty() ||
            !PatientSizeCodeSequence.isEmpty() ||
+           !MedicalAlerts.isEmpty() ||
+           !Allergies.isEmpty() ||
+           !SmokingStatus.isEmpty() ||
+           !PregnancyStatus.isEmpty() ||
+           !LastMenstrualDate.isEmpty() ||
+           !PatientState.isEmpty() ||
            !Occupation.isEmpty() ||
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
@@ -1333,6 +1529,18 @@ OFBool DRTIonPlanIOD::isApprovalModulePresent(const OFBool complete)
 }
 
 
+OFBool DRTIonPlanIOD::isGeneralReferenceModulePresent(const OFBool /*complete*/)
+{
+    /* check whether at least one attribute is present */
+    return !ReferencedImageSequence.isEmpty() ||
+           !ReferencedInstanceSequence.isEmpty() ||
+           !DerivationDescription.isEmpty() ||
+           !DerivationCodeSequence.isEmpty() ||
+           !SourceImageSequence.isEmpty() ||
+           !SourceInstanceSequence.isEmpty();
+}
+
+
 OFBool DRTIonPlanIOD::isCommonInstanceReferenceModulePresent(const OFBool /*complete*/)
 {
     /* check whether at least one attribute is present */
@@ -1365,6 +1573,12 @@ OFCondition DRTIonPlanIOD::getAdmittingDiagnosesDescription(OFString &value, con
 }
 
 
+OFCondition DRTIonPlanIOD::getAllergies(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(Allergies, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getApprovalStatus(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ApprovalStatus, value, pos);
@@ -1491,6 +1705,12 @@ OFCondition DRTIonPlanIOD::getDeidentificationMethod(OFString &value, const sign
 }
 
 
+OFCondition DRTIonPlanIOD::getDerivationDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DerivationDescription, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getDeviceSerialNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(DeviceSerialNumber, value, pos);
@@ -1503,6 +1723,12 @@ OFCondition DRTIonPlanIOD::getEthnicGroup(OFString &value, const signed long pos
 }
 
 
+OFCondition DRTIonPlanIOD::getFrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmFloatingPointDouble &, FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix).getFloat64(value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getFrameOfReferenceUID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(FrameOfReferenceUID, value, pos);
@@ -1575,6 +1801,12 @@ OFCondition DRTIonPlanIOD::getIssuerOfPatientID(OFString &value, const signed lo
 }
 
 
+OFCondition DRTIonPlanIOD::getLastMenstrualDate(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(LastMenstrualDate, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getLongitudinalTemporalInformationModified(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(LongitudinalTemporalInformationModified, value, pos);
@@ -1593,6 +1825,36 @@ OFCondition DRTIonPlanIOD::getManufacturerModelName(OFString &value, const signe
 }
 
 
+OFCondition DRTIonPlanIOD::getMeasuredAPDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredAPDimension, value, pos);
+}
+
+
+OFCondition DRTIonPlanIOD::getMeasuredAPDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredAPDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTIonPlanIOD::getMeasuredLateralDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredLateralDimension, value, pos);
+}
+
+
+OFCondition DRTIonPlanIOD::getMeasuredLateralDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredLateralDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTIonPlanIOD::getMedicalAlerts(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MedicalAlerts, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getModality(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(Modality, value, pos);
@@ -1641,18 +1903,42 @@ OFCondition DRTIonPlanIOD::getPatientAge(OFString &value, const signed long pos)
 }
 
 
+OFCondition DRTIonPlanIOD::getPatientAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getPatientBirthDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthDate, value, pos);
 }
 
 
+OFCondition DRTIonPlanIOD::getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBirthDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getPatientBirthTime(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthTime, value, pos);
 }
 
 
+OFCondition DRTIonPlanIOD::getPatientBodyMassIndex(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBodyMassIndex, value, pos);
+}
+
+
+OFCondition DRTIonPlanIOD::getPatientBodyMassIndex(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, PatientBodyMassIndex).getFloat64(value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getPatientBreedDescription(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBreedDescription, value, pos);
@@ -1665,6 +1951,12 @@ OFCondition DRTIonPlanIOD::getPatientComments(OFString &value, const signed long
 }
 
 
+OFCondition DRTIonPlanIOD::getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientDeathDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getPatientID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientID, value, pos);
@@ -1713,6 +2005,12 @@ OFCondition DRTIonPlanIOD::getPatientSpeciesDescription(OFString &value, const s
 }
 
 
+OFCondition DRTIonPlanIOD::getPatientState(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientState, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getPatientWeight(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientWeight, value, pos);
@@ -1785,6 +2083,12 @@ OFCondition DRTIonPlanIOD::getPositionReferenceIndicator(OFString &value, const
 }
 
 
+OFCondition DRTIonPlanIOD::getPregnancyStatus(Uint16 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmUnsignedShort &, PregnancyStatus).getUint16(value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getPrescriptionDescription(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PrescriptionDescription, value, pos);
@@ -1965,6 +2269,12 @@ OFCondition DRTIonPlanIOD::getServiceEpisodeID(OFString &value, const signed lon
 }
 
 
+OFCondition DRTIonPlanIOD::getSmokingStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(SmokingStatus, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getSoftwareVersions(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(SoftwareVersions, value, pos);
@@ -1995,6 +2305,24 @@ OFCondition DRTIonPlanIOD::getStationName(OFString &value, const signed long pos
 }
 
 
+OFCondition DRTIonPlanIOD::getStrainAdditionalInformation(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainAdditionalInformation, value, pos);
+}
+
+
+OFCondition DRTIonPlanIOD::getStrainDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainDescription, value, pos);
+}
+
+
+OFCondition DRTIonPlanIOD::getStrainNomenclature(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainNomenclature, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getStudyDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StudyDate, value, pos);
@@ -2085,6 +2413,15 @@ OFCondition DRTIonPlanIOD::setAdmittingDiagnosesDescription(const OFString &valu
 }
 
 
+OFCondition DRTIonPlanIOD::setAllergies(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = Allergies.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setApprovalStatus(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2274,6 +2611,15 @@ OFCondition DRTIonPlanIOD::setDeidentificationMethod(const OFString &value, cons
 }
 
 
+OFCondition DRTIonPlanIOD::setDerivationDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = DerivationDescription.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setDeviceSerialNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2292,6 +2638,12 @@ OFCondition DRTIonPlanIOD::setEthnicGroup(const OFString &value, const OFBool ch
 }
 
 
+OFCondition DRTIonPlanIOD::setFrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(const Float64 value, const unsigned long pos)
+{
+    return FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix.putFloat64(value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::setFrameOfReferenceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
@@ -2391,6 +2743,15 @@ OFCondition DRTIonPlanIOD::setIssuerOfPatientID(const OFString &value, const OFB
 }
 
 
+OFCondition DRTIonPlanIOD::setLastMenstrualDate(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = LastMenstrualDate.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setLongitudinalTemporalInformationModified(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2418,6 +2779,33 @@ OFCondition DRTIonPlanIOD::setManufacturerModelName(const OFString &value, const
 }
 
 
+OFCondition DRTIonPlanIOD::setMeasuredAPDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredAPDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTIonPlanIOD::setMeasuredLateralDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredLateralDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTIonPlanIOD::setMedicalAlerts(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = MedicalAlerts.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setModality(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2490,6 +2878,15 @@ OFCondition DRTIonPlanIOD::setPatientAge(const OFString &value, const OFBool che
 }
 
 
+OFCondition DRTIonPlanIOD::setPatientAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setPatientBirthDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -2499,6 +2896,15 @@ OFCondition DRTIonPlanIOD::setPatientBirthDate(const OFString &value, const OFBo
 }
 
 
+OFCondition DRTIonPlanIOD::setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBirthDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setPatientBirthTime(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
@@ -2508,6 +2914,15 @@ OFCondition DRTIonPlanIOD::setPatientBirthTime(const OFString &value, const OFBo
 }
 
 
+OFCondition DRTIonPlanIOD::setPatientBodyMassIndex(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBodyMassIndex.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setPatientBreedDescription(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2526,6 +2941,15 @@ OFCondition DRTIonPlanIOD::setPatientComments(const OFString &value, const OFBoo
 }
 
 
+OFCondition DRTIonPlanIOD::setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientDeathDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2589,6 +3013,15 @@ OFCondition DRTIonPlanIOD::setPatientSpeciesDescription(const OFString &value, c
 }
 
 
+OFCondition DRTIonPlanIOD::setPatientState(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientState.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setPatientWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -2685,6 +3118,12 @@ OFCondition DRTIonPlanIOD::setPositionReferenceIndicator(const OFString &value,
 }
 
 
+OFCondition DRTIonPlanIOD::setPregnancyStatus(const Uint16 value, const unsigned long pos)
+{
+    return PregnancyStatus.putUint16(value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::setPrescriptionDescription(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
@@ -2946,6 +3385,15 @@ OFCondition DRTIonPlanIOD::setServiceEpisodeID(const OFString &value, const OFBo
 }
 
 
+OFCondition DRTIonPlanIOD::setSmokingStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = SmokingStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setSoftwareVersions(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
@@ -2982,6 +3430,33 @@ OFCondition DRTIonPlanIOD::setStationName(const OFString &value, const OFBool ch
 }
 
 
+OFCondition DRTIonPlanIOD::setStrainAdditionalInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = StrainAdditionalInformation.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTIonPlanIOD::setStrainDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainDescription.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTIonPlanIOD::setStrainNomenclature(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainNomenclature.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setStudyDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drtiontr.cc b/dcmrt/libsrc/drtiontr.cc
index ec5bf4d..138cc96 100644
--- a/dcmrt/libsrc/drtiontr.cc
+++ b/dcmrt/libsrc/drtiontr.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamsTreatmentRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -23,6 +23,9 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
     PatientBirthDate(DCM_PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(DCM_PatientAlternativeCalendar),
     PatientSex(DCM_PatientSex),
     ReferencedPatientPhotoSequence(),
     QualityControlSubject(DCM_QualityControlSubject),
@@ -38,12 +41,19 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     PatientBreedDescription(DCM_PatientBreedDescription),
     PatientBreedCodeSequence(),
     BreedRegistrationSequence(),
+    StrainDescription(DCM_StrainDescription),
+    StrainNomenclature(DCM_StrainNomenclature),
+    StrainCodeSequence(),
+    StrainAdditionalInformation(DCM_StrainAdditionalInformation),
+    StrainStockSequence(),
     ResponsiblePerson(DCM_ResponsiblePerson),
     ResponsiblePersonRole(DCM_ResponsiblePersonRole),
     ResponsibleOrganization(DCM_ResponsibleOrganization),
     PatientIdentityRemoved(DCM_PatientIdentityRemoved),
     DeidentificationMethod(DCM_DeidentificationMethod),
     DeidentificationMethodCodeSequence(),
+    SourcePatientGroupIdentificationSequence(),
+    GroupOfPatientsIdentificationSequence(),
     ClinicalTrialSponsorName(DCM_ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(DCM_ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(DCM_ClinicalTrialProtocolName),
@@ -80,7 +90,16 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     PatientAge(DCM_PatientAge),
     PatientSize(DCM_PatientSize),
     PatientWeight(DCM_PatientWeight),
+    PatientBodyMassIndex(DCM_PatientBodyMassIndex),
+    MeasuredAPDimension(DCM_MeasuredAPDimension),
+    MeasuredLateralDimension(DCM_MeasuredLateralDimension),
     PatientSizeCodeSequence(),
+    MedicalAlerts(DCM_MedicalAlerts),
+    Allergies(DCM_Allergies),
+    SmokingStatus(DCM_SmokingStatus),
+    PregnancyStatus(DCM_PregnancyStatus),
+    LastMenstrualDate(DCM_LastMenstrualDate),
+    PatientState(DCM_PatientState),
     Occupation(DCM_Occupation),
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
@@ -97,6 +116,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     SeriesDescription(DCM_SeriesDescription),
     SeriesDescriptionCodeSequence(),
     OperatorsName(DCM_OperatorsName),
+    OperatorIdentificationSequence(),
     ReferencedPerformedProcedureStepSequence(),
     RequestAttributesSequence(),
     PerformedProcedureStepID(DCM_PerformedProcedureStepID),
@@ -119,6 +139,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
+    UDISequence(),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -143,6 +164,12 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     FractionGroupSummarySequence(),
     TreatmentSummaryMeasuredDoseReferenceSequence(),
     TreatmentSummaryCalculatedDoseReferenceSequence(),
+    ReferencedImageSequence(),
+    ReferencedInstanceSequence(),
+    DerivationDescription(DCM_DerivationDescription),
+    DerivationCodeSequence(),
+    SourceImageSequence(),
+    SourceInstanceSequence(),
     SOPClassUID(DCM_SOPClassUID),
     SOPInstanceUID(DCM_SOPInstanceUID),
     SpecificCharacterSet(DCM_SpecificCharacterSet),
@@ -153,6 +180,8 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     RelatedGeneralSOPClassUID(DCM_RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(DCM_OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(),
+    ContextGroupIdentificationSequence(),
+    MappingResourceIdentificationSequence(),
     TimezoneOffsetFromUTC(DCM_TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(),
     SOPInstanceStatus(DCM_SOPInstanceStatus),
@@ -183,6 +212,9 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
     PatientBirthDate(copy.PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(copy.PatientAlternativeCalendar),
     PatientSex(copy.PatientSex),
     ReferencedPatientPhotoSequence(copy.ReferencedPatientPhotoSequence),
     QualityControlSubject(copy.QualityControlSubject),
@@ -198,12 +230,19 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     PatientBreedDescription(copy.PatientBreedDescription),
     PatientBreedCodeSequence(copy.PatientBreedCodeSequence),
     BreedRegistrationSequence(copy.BreedRegistrationSequence),
+    StrainDescription(copy.StrainDescription),
+    StrainNomenclature(copy.StrainNomenclature),
+    StrainCodeSequence(copy.StrainCodeSequence),
+    StrainAdditionalInformation(copy.StrainAdditionalInformation),
+    StrainStockSequence(copy.StrainStockSequence),
     ResponsiblePerson(copy.ResponsiblePerson),
     ResponsiblePersonRole(copy.ResponsiblePersonRole),
     ResponsibleOrganization(copy.ResponsibleOrganization),
     PatientIdentityRemoved(copy.PatientIdentityRemoved),
     DeidentificationMethod(copy.DeidentificationMethod),
     DeidentificationMethodCodeSequence(copy.DeidentificationMethodCodeSequence),
+    SourcePatientGroupIdentificationSequence(copy.SourcePatientGroupIdentificationSequence),
+    GroupOfPatientsIdentificationSequence(copy.GroupOfPatientsIdentificationSequence),
     ClinicalTrialSponsorName(copy.ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(copy.ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(copy.ClinicalTrialProtocolName),
@@ -240,7 +279,16 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     PatientAge(copy.PatientAge),
     PatientSize(copy.PatientSize),
     PatientWeight(copy.PatientWeight),
+    PatientBodyMassIndex(copy.PatientBodyMassIndex),
+    MeasuredAPDimension(copy.MeasuredAPDimension),
+    MeasuredLateralDimension(copy.MeasuredLateralDimension),
     PatientSizeCodeSequence(copy.PatientSizeCodeSequence),
+    MedicalAlerts(copy.MedicalAlerts),
+    Allergies(copy.Allergies),
+    SmokingStatus(copy.SmokingStatus),
+    PregnancyStatus(copy.PregnancyStatus),
+    LastMenstrualDate(copy.LastMenstrualDate),
+    PatientState(copy.PatientState),
     Occupation(copy.Occupation),
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
@@ -257,6 +305,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     SeriesDescription(copy.SeriesDescription),
     SeriesDescriptionCodeSequence(copy.SeriesDescriptionCodeSequence),
     OperatorsName(copy.OperatorsName),
+    OperatorIdentificationSequence(copy.OperatorIdentificationSequence),
     ReferencedPerformedProcedureStepSequence(copy.ReferencedPerformedProcedureStepSequence),
     RequestAttributesSequence(copy.RequestAttributesSequence),
     PerformedProcedureStepID(copy.PerformedProcedureStepID),
@@ -279,6 +328,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
+    UDISequence(copy.UDISequence),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -303,6 +353,12 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     FractionGroupSummarySequence(copy.FractionGroupSummarySequence),
     TreatmentSummaryMeasuredDoseReferenceSequence(copy.TreatmentSummaryMeasuredDoseReferenceSequence),
     TreatmentSummaryCalculatedDoseReferenceSequence(copy.TreatmentSummaryCalculatedDoseReferenceSequence),
+    ReferencedImageSequence(copy.ReferencedImageSequence),
+    ReferencedInstanceSequence(copy.ReferencedInstanceSequence),
+    DerivationDescription(copy.DerivationDescription),
+    DerivationCodeSequence(copy.DerivationCodeSequence),
+    SourceImageSequence(copy.SourceImageSequence),
+    SourceInstanceSequence(copy.SourceInstanceSequence),
     SOPClassUID(copy.SOPClassUID),
     SOPInstanceUID(copy.SOPInstanceUID),
     SpecificCharacterSet(copy.SpecificCharacterSet),
@@ -313,6 +369,8 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     RelatedGeneralSOPClassUID(copy.RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(copy.OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(copy.CodingSchemeIdentificationSequence),
+    ContextGroupIdentificationSequence(copy.ContextGroupIdentificationSequence),
+    MappingResourceIdentificationSequence(copy.MappingResourceIdentificationSequence),
     TimezoneOffsetFromUTC(copy.TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(copy.ContributingEquipmentSequence),
     SOPInstanceStatus(copy.SOPInstanceStatus),
@@ -349,6 +407,9 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
         PatientBirthDate = copy.PatientBirthDate;
+        PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
+        PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
+        PatientAlternativeCalendar = copy.PatientAlternativeCalendar;
         PatientSex = copy.PatientSex;
         ReferencedPatientPhotoSequence = copy.ReferencedPatientPhotoSequence;
         QualityControlSubject = copy.QualityControlSubject;
@@ -364,12 +425,19 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         PatientBreedDescription = copy.PatientBreedDescription;
         PatientBreedCodeSequence = copy.PatientBreedCodeSequence;
         BreedRegistrationSequence = copy.BreedRegistrationSequence;
+        StrainDescription = copy.StrainDescription;
+        StrainNomenclature = copy.StrainNomenclature;
+        StrainCodeSequence = copy.StrainCodeSequence;
+        StrainAdditionalInformation = copy.StrainAdditionalInformation;
+        StrainStockSequence = copy.StrainStockSequence;
         ResponsiblePerson = copy.ResponsiblePerson;
         ResponsiblePersonRole = copy.ResponsiblePersonRole;
         ResponsibleOrganization = copy.ResponsibleOrganization;
         PatientIdentityRemoved = copy.PatientIdentityRemoved;
         DeidentificationMethod = copy.DeidentificationMethod;
         DeidentificationMethodCodeSequence = copy.DeidentificationMethodCodeSequence;
+        SourcePatientGroupIdentificationSequence = copy.SourcePatientGroupIdentificationSequence;
+        GroupOfPatientsIdentificationSequence = copy.GroupOfPatientsIdentificationSequence;
         ClinicalTrialSponsorName = copy.ClinicalTrialSponsorName;
         ClinicalTrialProtocolID = copy.ClinicalTrialProtocolID;
         ClinicalTrialProtocolName = copy.ClinicalTrialProtocolName;
@@ -406,7 +474,16 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         PatientAge = copy.PatientAge;
         PatientSize = copy.PatientSize;
         PatientWeight = copy.PatientWeight;
+        PatientBodyMassIndex = copy.PatientBodyMassIndex;
+        MeasuredAPDimension = copy.MeasuredAPDimension;
+        MeasuredLateralDimension = copy.MeasuredLateralDimension;
         PatientSizeCodeSequence = copy.PatientSizeCodeSequence;
+        MedicalAlerts = copy.MedicalAlerts;
+        Allergies = copy.Allergies;
+        SmokingStatus = copy.SmokingStatus;
+        PregnancyStatus = copy.PregnancyStatus;
+        LastMenstrualDate = copy.LastMenstrualDate;
+        PatientState = copy.PatientState;
         Occupation = copy.Occupation;
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
@@ -423,6 +500,7 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         SeriesDescription = copy.SeriesDescription;
         SeriesDescriptionCodeSequence = copy.SeriesDescriptionCodeSequence;
         OperatorsName = copy.OperatorsName;
+        OperatorIdentificationSequence = copy.OperatorIdentificationSequence;
         ReferencedPerformedProcedureStepSequence = copy.ReferencedPerformedProcedureStepSequence;
         RequestAttributesSequence = copy.RequestAttributesSequence;
         PerformedProcedureStepID = copy.PerformedProcedureStepID;
@@ -445,6 +523,7 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
+        UDISequence = copy.UDISequence;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -469,6 +548,12 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         FractionGroupSummarySequence = copy.FractionGroupSummarySequence;
         TreatmentSummaryMeasuredDoseReferenceSequence = copy.TreatmentSummaryMeasuredDoseReferenceSequence;
         TreatmentSummaryCalculatedDoseReferenceSequence = copy.TreatmentSummaryCalculatedDoseReferenceSequence;
+        ReferencedImageSequence = copy.ReferencedImageSequence;
+        ReferencedInstanceSequence = copy.ReferencedInstanceSequence;
+        DerivationDescription = copy.DerivationDescription;
+        DerivationCodeSequence = copy.DerivationCodeSequence;
+        SourceImageSequence = copy.SourceImageSequence;
+        SourceInstanceSequence = copy.SourceInstanceSequence;
         SOPClassUID = copy.SOPClassUID;
         SOPInstanceUID = copy.SOPInstanceUID;
         SpecificCharacterSet = copy.SpecificCharacterSet;
@@ -479,6 +564,8 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         RelatedGeneralSOPClassUID = copy.RelatedGeneralSOPClassUID;
         OriginalSpecializedSOPClassUID = copy.OriginalSpecializedSOPClassUID;
         CodingSchemeIdentificationSequence = copy.CodingSchemeIdentificationSequence;
+        ContextGroupIdentificationSequence = copy.ContextGroupIdentificationSequence;
+        MappingResourceIdentificationSequence = copy.MappingResourceIdentificationSequence;
         TimezoneOffsetFromUTC = copy.TimezoneOffsetFromUTC;
         ContributingEquipmentSequence = copy.ContributingEquipmentSequence;
         SOPInstanceStatus = copy.SOPInstanceStatus;
@@ -510,6 +597,9 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
     PatientBirthDate.clear();
+    PatientBirthDateInAlternativeCalendar.clear();
+    PatientDeathDateInAlternativeCalendar.clear();
+    PatientAlternativeCalendar.clear();
     PatientSex.clear();
     ReferencedPatientPhotoSequence.clear();
     QualityControlSubject.clear();
@@ -525,12 +615,19 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     PatientBreedDescription.clear();
     PatientBreedCodeSequence.clear();
     BreedRegistrationSequence.clear();
+    StrainDescription.clear();
+    StrainNomenclature.clear();
+    StrainCodeSequence.clear();
+    StrainAdditionalInformation.clear();
+    StrainStockSequence.clear();
     ResponsiblePerson.clear();
     ResponsiblePersonRole.clear();
     ResponsibleOrganization.clear();
     PatientIdentityRemoved.clear();
     DeidentificationMethod.clear();
     DeidentificationMethodCodeSequence.clear();
+    SourcePatientGroupIdentificationSequence.clear();
+    GroupOfPatientsIdentificationSequence.clear();
     ClinicalTrialSponsorName.clear();
     ClinicalTrialProtocolID.clear();
     ClinicalTrialProtocolName.clear();
@@ -567,7 +664,16 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     PatientAge.clear();
     PatientSize.clear();
     PatientWeight.clear();
+    PatientBodyMassIndex.clear();
+    MeasuredAPDimension.clear();
+    MeasuredLateralDimension.clear();
     PatientSizeCodeSequence.clear();
+    MedicalAlerts.clear();
+    Allergies.clear();
+    SmokingStatus.clear();
+    PregnancyStatus.clear();
+    LastMenstrualDate.clear();
+    PatientState.clear();
     Occupation.clear();
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
@@ -584,6 +690,7 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     SeriesDescription.clear();
     SeriesDescriptionCodeSequence.clear();
     OperatorsName.clear();
+    OperatorIdentificationSequence.clear();
     ReferencedPerformedProcedureStepSequence.clear();
     RequestAttributesSequence.clear();
     PerformedProcedureStepID.clear();
@@ -606,6 +713,7 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
+    UDISequence.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -630,6 +738,12 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     FractionGroupSummarySequence.clear();
     TreatmentSummaryMeasuredDoseReferenceSequence.clear();
     TreatmentSummaryCalculatedDoseReferenceSequence.clear();
+    ReferencedImageSequence.clear();
+    ReferencedInstanceSequence.clear();
+    DerivationDescription.clear();
+    DerivationCodeSequence.clear();
+    SourceImageSequence.clear();
+    SourceInstanceSequence.clear();
     SOPClassUID.clear();
     SOPInstanceUID.clear();
     SpecificCharacterSet.clear();
@@ -640,6 +754,8 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     RelatedGeneralSOPClassUID.clear();
     OriginalSpecializedSOPClassUID.clear();
     CodingSchemeIdentificationSequence.clear();
+    ContextGroupIdentificationSequence.clear();
+    MappingResourceIdentificationSequence.clear();
     TimezoneOffsetFromUTC.clear();
     ContributingEquipmentSequence.clear();
     SOPInstanceStatus.clear();
@@ -715,6 +831,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
+        UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -768,6 +885,14 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::read(DcmItem &dataset)
             TreatmentSummaryCalculatedDoseReferenceSequence.read(dataset, "1-n", "3", "RTTreatmentSummaryRecordModule");
         }
 
+        // --- GeneralReferenceModule (U) ---
+        ReferencedImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        ReferencedInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        getAndCheckElementFromDataset(dataset, DerivationDescription, "1", "3", "GeneralReferenceModule");
+        DerivationCodeSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+
         // --- SOPCommonModule (M) ---
         getAndCheckElementFromDataset(dataset, SOPClassUID, "1", "1", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, SOPInstanceUID, "1", "1", "SOPCommonModule");
@@ -779,6 +904,8 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, RelatedGeneralSOPClassUID, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, OriginalSpecializedSOPClassUID, "1", "3", "SOPCommonModule");
         CodingSchemeIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        ContextGroupIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        MappingResourceIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, TimezoneOffsetFromUTC, "1", "3", "SOPCommonModule");
         ContributingEquipmentSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         // getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "3", "SOPCommonModule");
@@ -815,6 +942,9 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientAlternativeCalendar, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientSex, "1", "2", "PatientModule");
     ReferencedPatientPhotoSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, QualityControlSubject, "1", "3", "PatientModule");
@@ -830,12 +960,19 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientBreedDescription, "1", "2C", "PatientModule");
     PatientBreedCodeSequence.read(dataset, "1-n", "2C", "PatientModule");
     BreedRegistrationSequence.read(dataset, "1-n", "2C", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainDescription, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainNomenclature, "1", "3", "PatientModule");
+    StrainCodeSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainAdditionalInformation, "1", "3", "PatientModule");
+    StrainStockSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePerson, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePersonRole, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsibleOrganization, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientIdentityRemoved, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, DeidentificationMethod, "1-n", "1C", "PatientModule");
     DeidentificationMethodCodeSequence.read(dataset, "1-n", "1C", "PatientModule");
+    SourcePatientGroupIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
+    GroupOfPatientsIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
 
     // --- ClinicalTrialSubjectModule (U) ---
     if (dataset.tagExists(DCM_ClinicalTrialSponsorName) ||
@@ -899,7 +1036,16 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PatientAge, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientSize, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientWeight, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientBodyMassIndex, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredAPDimension, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredLateralDimension, "1", "3", "PatientStudyModule");
         PatientSizeCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MedicalAlerts, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, Allergies, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, SmokingStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PregnancyStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, LastMenstrualDate, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientState, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, Occupation, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
@@ -928,6 +1074,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, SeriesDescription, "1", "3", "RTSeriesModule");
         SeriesDescriptionCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, OperatorsName, "1-n", "2", "RTSeriesModule");
+        OperatorIdentificationSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         ReferencedPerformedProcedureStepSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         RequestAttributesSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepID, "1", "3", "RTSeriesModule");
@@ -966,6 +1113,9 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(PatientAlternativeCalendar), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientSex), "1", "2", "PatientModule");
         if (result.good()) result = ReferencedPatientPhotoSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(QualityControlSubject), "1", "3", "PatientModule");
@@ -981,12 +1131,19 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientBreedDescription), "1", "2C", "PatientModule");
         if (result.good()) result = PatientBreedCodeSequence.write(dataset, "1-n" ,"2C", "PatientModule");
         if (result.good()) result = BreedRegistrationSequence.write(dataset, "1-n" ,"2C", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedCharacters(StrainDescription), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(StrainNomenclature), "1", "3", "PatientModule");
+        if (result.good()) result = StrainCodeSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedText(StrainAdditionalInformation), "1", "3", "PatientModule");
+        if (result.good()) result = StrainStockSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmPersonName(ResponsiblePerson), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(ResponsiblePersonRole), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(ResponsibleOrganization), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientIdentityRemoved), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(DeidentificationMethod), "1-n", "1C", "PatientModule");
         if (result.good()) result = DeidentificationMethodCodeSequence.write(dataset, "1-n" ,"1C", "PatientModule");
+        if (result.good()) result = SourcePatientGroupIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        if (result.good()) result = GroupOfPatientsIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
 
         // --- ClinicalTrialSubjectModule (U) ---
         if (isClinicalTrialSubjectModulePresent(OFFalse /*complete*/))
@@ -1039,7 +1196,16 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmAgeString(PatientAge), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientSize), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientWeight), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(PatientBodyMassIndex), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredAPDimension), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredLateralDimension), "1", "3", "PatientStudyModule");
             if (result.good()) result = PatientSizeCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(MedicalAlerts), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(Allergies), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmCodeString(SmokingStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnsignedShort(PregnancyStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDate(LastMenstrualDate), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(PatientState), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmShortString(Occupation), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
@@ -1059,6 +1225,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(SeriesDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = SeriesDescriptionCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmPersonName(OperatorsName), "1-n", "2", "RTSeriesModule");
+        if (result.good()) result = OperatorIdentificationSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = ReferencedPerformedProcedureStepSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = RequestAttributesSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortString(PerformedProcedureStepID), "1", "3", "RTSeriesModule");
@@ -1088,6 +1255,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1139,6 +1307,17 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
             if (result.good()) result = TreatmentSummaryCalculatedDoseReferenceSequence.write(dataset, "1-n" ,"3", "RTTreatmentSummaryRecordModule");
         }
 
+        // --- GeneralReferenceModule (U) ---
+        if (isGeneralReferenceModulePresent(OFFalse /*complete*/))
+        {
+            if (result.good()) result = ReferencedImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = ReferencedInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            addElementToDataset(result, dataset, new DcmShortText(DerivationDescription), "1", "3", "GeneralReferenceModule");
+            if (result.good()) result = DerivationCodeSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+        }
+
         // --- SOPCommonModule (M) ---
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPClassUID), "1", "1", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPInstanceUID), "1", "1", "SOPCommonModule");
@@ -1150,6 +1329,8 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(RelatedGeneralSOPClassUID), "1-n", "3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(OriginalSpecializedSOPClassUID), "1", "3", "SOPCommonModule");
         if (result.good()) result = CodingSchemeIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = ContextGroupIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = MappingResourceIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmShortString(TimezoneOffsetFromUTC), "1", "3", "SOPCommonModule");
         if (result.good()) result = ContributingEquipmentSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         // addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "3", "SOPCommonModule");
@@ -1219,7 +1400,16 @@ OFBool DRTIonBeamsTreatmentRecordIOD::isPatientStudyModulePresent(const OFBool /
            !PatientAge.isEmpty() ||
            !PatientSize.isEmpty() ||
            !PatientWeight.isEmpty() ||
+           !PatientBodyMassIndex.isEmpty() ||
+           !MeasuredAPDimension.isEmpty() ||
+           !MeasuredLateralDimension.isEmpty() ||
            !PatientSizeCodeSequence.isEmpty() ||
+           !MedicalAlerts.isEmpty() ||
+           !Allergies.isEmpty() ||
+           !SmokingStatus.isEmpty() ||
+           !PregnancyStatus.isEmpty() ||
+           !LastMenstrualDate.isEmpty() ||
+           !PatientState.isEmpty() ||
            !Occupation.isEmpty() ||
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
@@ -1280,6 +1470,18 @@ OFBool DRTIonBeamsTreatmentRecordIOD::isRTTreatmentSummaryRecordModulePresent(co
 }
 
 
+OFBool DRTIonBeamsTreatmentRecordIOD::isGeneralReferenceModulePresent(const OFBool /*complete*/)
+{
+    /* check whether at least one attribute is present */
+    return !ReferencedImageSequence.isEmpty() ||
+           !ReferencedInstanceSequence.isEmpty() ||
+           !DerivationDescription.isEmpty() ||
+           !DerivationCodeSequence.isEmpty() ||
+           !SourceImageSequence.isEmpty() ||
+           !SourceInstanceSequence.isEmpty();
+}
+
+
 OFBool DRTIonBeamsTreatmentRecordIOD::isCommonInstanceReferenceModulePresent(const OFBool /*complete*/)
 {
     /* check whether at least one attribute is present */
@@ -1312,6 +1514,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getAdmittingDiagnosesDescription(OFSt
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getAllergies(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(Allergies, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(AuthorizationEquipmentCertificationNumber, value, pos);
@@ -1438,6 +1646,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getDeidentificationMethod(OFString &v
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getDerivationDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DerivationDescription, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getDeviceSerialNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(DeviceSerialNumber, value, pos);
@@ -1522,6 +1736,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getIssuerOfPatientID(OFString &value,
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getLastMenstrualDate(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(LastMenstrualDate, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getLongitudinalTemporalInformationModified(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(LongitudinalTemporalInformationModified, value, pos);
@@ -1540,6 +1760,36 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getManufacturerModelName(OFString &va
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getMeasuredAPDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredAPDimension, value, pos);
+}
+
+
+OFCondition DRTIonBeamsTreatmentRecordIOD::getMeasuredAPDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredAPDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTIonBeamsTreatmentRecordIOD::getMeasuredLateralDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredLateralDimension, value, pos);
+}
+
+
+OFCondition DRTIonBeamsTreatmentRecordIOD::getMeasuredLateralDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredLateralDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTIonBeamsTreatmentRecordIOD::getMedicalAlerts(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MedicalAlerts, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getModality(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(Modality, value, pos);
@@ -1606,18 +1856,42 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientAge(OFString &value, const
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientBirthDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthDate, value, pos);
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBirthDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientBirthTime(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthTime, value, pos);
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientBodyMassIndex(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBodyMassIndex, value, pos);
+}
+
+
+OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientBodyMassIndex(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, PatientBodyMassIndex).getFloat64(value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientBreedDescription(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBreedDescription, value, pos);
@@ -1630,6 +1904,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientComments(OFString &value, c
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientDeathDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientID, value, pos);
@@ -1678,6 +1958,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientSpeciesDescription(OFString
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientState(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientState, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getPatientWeight(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientWeight, value, pos);
@@ -1738,6 +2024,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getPixelPaddingValue(Uint16 &value, c
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getPregnancyStatus(Uint16 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmUnsignedShort &, PregnancyStatus).getUint16(value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getPrimaryDosimeterUnit(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PrimaryDosimeterUnit, value, pos);
@@ -1876,6 +2168,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getServiceEpisodeID(OFString &value,
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getSmokingStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(SmokingStatus, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getSoftwareVersions(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(SoftwareVersions, value, pos);
@@ -1906,6 +2204,24 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getStationName(OFString &value, const
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getStrainAdditionalInformation(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainAdditionalInformation, value, pos);
+}
+
+
+OFCondition DRTIonBeamsTreatmentRecordIOD::getStrainDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainDescription, value, pos);
+}
+
+
+OFCondition DRTIonBeamsTreatmentRecordIOD::getStrainNomenclature(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainNomenclature, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getStudyDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StudyDate, value, pos);
@@ -2002,6 +2318,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setAdmittingDiagnosesDescription(cons
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setAllergies(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = Allergies.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2191,6 +2516,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setDeidentificationMethod(const OFStr
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setDerivationDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = DerivationDescription.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setDeviceSerialNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2308,6 +2642,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setIssuerOfPatientID(const OFString &
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setLastMenstrualDate(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = LastMenstrualDate.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setLongitudinalTemporalInformationModified(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2335,6 +2678,33 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setManufacturerModelName(const OFStri
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setMeasuredAPDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredAPDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTIonBeamsTreatmentRecordIOD::setMeasuredLateralDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredLateralDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTIonBeamsTreatmentRecordIOD::setMedicalAlerts(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = MedicalAlerts.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setModality(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2425,6 +2795,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientAge(const OFString &value,
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientBirthDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -2434,6 +2813,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientBirthDate(const OFString &v
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBirthDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientBirthTime(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
@@ -2443,6 +2831,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientBirthTime(const OFString &v
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientBodyMassIndex(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBodyMassIndex.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientBreedDescription(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2461,6 +2858,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientComments(const OFString &va
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientDeathDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2524,6 +2930,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientSpeciesDescription(const OF
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientState(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientState.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setPatientWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -2602,6 +3017,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setPixelPaddingValue(const Uint16 val
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setPregnancyStatus(const Uint16 value, const unsigned long pos)
+{
+    return PregnancyStatus.putUint16(value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setPrimaryDosimeterUnit(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2791,6 +3212,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setServiceEpisodeID(const OFString &v
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setSmokingStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = SmokingStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setSoftwareVersions(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
@@ -2827,6 +3257,33 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setStationName(const OFString &value,
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setStrainAdditionalInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = StrainAdditionalInformation.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTIonBeamsTreatmentRecordIOD::setStrainDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainDescription.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTIonBeamsTreatmentRecordIOD::setStrainNomenclature(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainNomenclature.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setStudyDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drtipiqs.cc b/dcmrt/libsrc/drtipiqs.cc
index 25a3869..a8f70b0 100644
--- a/dcmrt/libsrc/drtipiqs.cc
+++ b/dcmrt/libsrc/drtipiqs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfPatientIDQualifiersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -301,7 +301,7 @@ OFBool DRTIssuerOfPatientIDQualifiersSequence::isValid() const
 }
 
 
-unsigned long DRTIssuerOfPatientIDQualifiersSequence::getNumberOfItems() const
+size_t DRTIssuerOfPatientIDQualifiersSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -331,12 +331,12 @@ OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -351,12 +351,12 @@ OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -371,7 +371,7 @@ OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoItem(const unsigned long num)
+OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -407,7 +407,7 @@ const DRTIssuerOfPatientIDQualifiersSequence::Item &DRTIssuerOfPatientIDQualifie
 }
 
 
-OFCondition DRTIssuerOfPatientIDQualifiersSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIssuerOfPatientIDQualifiersSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -417,7 +417,7 @@ OFCondition DRTIssuerOfPatientIDQualifiersSequence::getItem(const unsigned long
 }
 
 
-DRTIssuerOfPatientIDQualifiersSequence::Item &DRTIssuerOfPatientIDQualifiersSequence::getItem(const unsigned long num)
+DRTIssuerOfPatientIDQualifiersSequence::Item &DRTIssuerOfPatientIDQualifiersSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -427,7 +427,7 @@ DRTIssuerOfPatientIDQualifiersSequence::Item &DRTIssuerOfPatientIDQualifiersSequ
 }
 
 
-const DRTIssuerOfPatientIDQualifiersSequence::Item &DRTIssuerOfPatientIDQualifiersSequence::getItem(const unsigned long num) const
+const DRTIssuerOfPatientIDQualifiersSequence::Item &DRTIssuerOfPatientIDQualifiersSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -437,13 +437,13 @@ const DRTIssuerOfPatientIDQualifiersSequence::Item &DRTIssuerOfPatientIDQualifie
 }
 
 
-DRTIssuerOfPatientIDQualifiersSequence::Item &DRTIssuerOfPatientIDQualifiersSequence::operator[](const unsigned long num)
+DRTIssuerOfPatientIDQualifiersSequence::Item &DRTIssuerOfPatientIDQualifiersSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIssuerOfPatientIDQualifiersSequence::Item &DRTIssuerOfPatientIDQualifiersSequence::operator[](const unsigned long num) const
+const DRTIssuerOfPatientIDQualifiersSequence::Item &DRTIssuerOfPatientIDQualifiersSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -466,7 +466,7 @@ OFCondition DRTIssuerOfPatientIDQualifiersSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIssuerOfPatientIDQualifiersSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIssuerOfPatientIDQualifiersSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -489,7 +489,7 @@ OFCondition DRTIssuerOfPatientIDQualifiersSequence::insertItem(const unsigned lo
 }
 
 
-OFCondition DRTIssuerOfPatientIDQualifiersSequence::removeItem(const unsigned long pos)
+OFCondition DRTIssuerOfPatientIDQualifiersSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtircs.cc b/dcmrt/libsrc/drtircs.cc
index e79d28c..b8d7dbf 100644
--- a/dcmrt/libsrc/drtircs.cc
+++ b/dcmrt/libsrc/drtircs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonRangeCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -747,7 +747,7 @@ OFBool DRTIonRangeCompensatorSequence::isValid() const
 }
 
 
-unsigned long DRTIonRangeCompensatorSequence::getNumberOfItems() const
+size_t DRTIonRangeCompensatorSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -777,12 +777,12 @@ OFCondition DRTIonRangeCompensatorSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIonRangeCompensatorSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIonRangeCompensatorSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -797,12 +797,12 @@ OFCondition DRTIonRangeCompensatorSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTIonRangeCompensatorSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIonRangeCompensatorSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -817,7 +817,7 @@ OFCondition DRTIonRangeCompensatorSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTIonRangeCompensatorSequence::gotoItem(const unsigned long num)
+OFCondition DRTIonRangeCompensatorSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -853,7 +853,7 @@ const DRTIonRangeCompensatorSequence::Item &DRTIonRangeCompensatorSequence::getC
 }
 
 
-OFCondition DRTIonRangeCompensatorSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIonRangeCompensatorSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -863,7 +863,7 @@ OFCondition DRTIonRangeCompensatorSequence::getItem(const unsigned long num, Ite
 }
 
 
-DRTIonRangeCompensatorSequence::Item &DRTIonRangeCompensatorSequence::getItem(const unsigned long num)
+DRTIonRangeCompensatorSequence::Item &DRTIonRangeCompensatorSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -873,7 +873,7 @@ DRTIonRangeCompensatorSequence::Item &DRTIonRangeCompensatorSequence::getItem(co
 }
 
 
-const DRTIonRangeCompensatorSequence::Item &DRTIonRangeCompensatorSequence::getItem(const unsigned long num) const
+const DRTIonRangeCompensatorSequence::Item &DRTIonRangeCompensatorSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -883,13 +883,13 @@ const DRTIonRangeCompensatorSequence::Item &DRTIonRangeCompensatorSequence::getI
 }
 
 
-DRTIonRangeCompensatorSequence::Item &DRTIonRangeCompensatorSequence::operator[](const unsigned long num)
+DRTIonRangeCompensatorSequence::Item &DRTIonRangeCompensatorSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIonRangeCompensatorSequence::Item &DRTIonRangeCompensatorSequence::operator[](const unsigned long num) const
+const DRTIonRangeCompensatorSequence::Item &DRTIonRangeCompensatorSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -912,7 +912,7 @@ OFCondition DRTIonRangeCompensatorSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIonRangeCompensatorSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIonRangeCompensatorSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -935,7 +935,7 @@ OFCondition DRTIonRangeCompensatorSequence::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTIonRangeCompensatorSequence::removeItem(const unsigned long pos)
+OFCondition DRTIonRangeCompensatorSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtiseis.cc b/dcmrt/libsrc/drtiseis.cc
index eb40d2e..371e991 100644
--- a/dcmrt/libsrc/drtiseis.cc
+++ b/dcmrt/libsrc/drtiseis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfServiceEpisodeIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -280,7 +280,7 @@ OFBool DRTIssuerOfServiceEpisodeIDSequence::isValid() const
 }
 
 
-unsigned long DRTIssuerOfServiceEpisodeIDSequence::getNumberOfItems() const
+size_t DRTIssuerOfServiceEpisodeIDSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -310,12 +310,12 @@ OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,12 +330,12 @@ OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoItem(const unsigned long nu
 }
 
 
-OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -350,7 +350,7 @@ OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoItem(const unsigned long nu
 }
 
 
-OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoItem(const unsigned long num)
+OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -386,7 +386,7 @@ const DRTIssuerOfServiceEpisodeIDSequence::Item &DRTIssuerOfServiceEpisodeIDSequ
 }
 
 
-OFCondition DRTIssuerOfServiceEpisodeIDSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIssuerOfServiceEpisodeIDSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -396,7 +396,7 @@ OFCondition DRTIssuerOfServiceEpisodeIDSequence::getItem(const unsigned long num
 }
 
 
-DRTIssuerOfServiceEpisodeIDSequence::Item &DRTIssuerOfServiceEpisodeIDSequence::getItem(const unsigned long num)
+DRTIssuerOfServiceEpisodeIDSequence::Item &DRTIssuerOfServiceEpisodeIDSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -406,7 +406,7 @@ DRTIssuerOfServiceEpisodeIDSequence::Item &DRTIssuerOfServiceEpisodeIDSequence::
 }
 
 
-const DRTIssuerOfServiceEpisodeIDSequence::Item &DRTIssuerOfServiceEpisodeIDSequence::getItem(const unsigned long num) const
+const DRTIssuerOfServiceEpisodeIDSequence::Item &DRTIssuerOfServiceEpisodeIDSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -416,13 +416,13 @@ const DRTIssuerOfServiceEpisodeIDSequence::Item &DRTIssuerOfServiceEpisodeIDSequ
 }
 
 
-DRTIssuerOfServiceEpisodeIDSequence::Item &DRTIssuerOfServiceEpisodeIDSequence::operator[](const unsigned long num)
+DRTIssuerOfServiceEpisodeIDSequence::Item &DRTIssuerOfServiceEpisodeIDSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIssuerOfServiceEpisodeIDSequence::Item &DRTIssuerOfServiceEpisodeIDSequence::operator[](const unsigned long num) const
+const DRTIssuerOfServiceEpisodeIDSequence::Item &DRTIssuerOfServiceEpisodeIDSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -445,7 +445,7 @@ OFCondition DRTIssuerOfServiceEpisodeIDSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIssuerOfServiceEpisodeIDSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIssuerOfServiceEpisodeIDSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -468,7 +468,7 @@ OFCondition DRTIssuerOfServiceEpisodeIDSequence::insertItem(const unsigned long
 }
 
 
-OFCondition DRTIssuerOfServiceEpisodeIDSequence::removeItem(const unsigned long pos)
+OFCondition DRTIssuerOfServiceEpisodeIDSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtitts.cc b/dcmrt/libsrc/drtitts.cc
index 32d02c1..ed232a7 100644
--- a/dcmrt/libsrc/drtitts.cc
+++ b/dcmrt/libsrc/drtitts.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -23,7 +23,11 @@ DRTIonToleranceTableSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     BeamLimitingDeviceAngleTolerance(DCM_BeamLimitingDeviceAngleTolerance),
     BeamLimitingDeviceToleranceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ChairHeadFramePositionTolerance(DCM_ChairHeadFramePositionTolerance),
+    FixationLightAzimuthalAngleTolerance(DCM_FixationLightAzimuthalAngleTolerance),
+    FixationLightPolarAngleTolerance(DCM_FixationLightPolarAngleTolerance),
     GantryAngleTolerance(DCM_GantryAngleTolerance),
+    HeadFixationAngleTolerance(DCM_HeadFixationAngleTolerance),
     PatientSupportAngleTolerance(DCM_PatientSupportAngleTolerance),
     SnoutPositionTolerance(DCM_SnoutPositionTolerance),
     TableTopLateralPositionTolerance(DCM_TableTopLateralPositionTolerance),
@@ -41,7 +45,11 @@ DRTIonToleranceTableSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     BeamLimitingDeviceAngleTolerance(copy.BeamLimitingDeviceAngleTolerance),
     BeamLimitingDeviceToleranceSequence(copy.BeamLimitingDeviceToleranceSequence),
+    ChairHeadFramePositionTolerance(copy.ChairHeadFramePositionTolerance),
+    FixationLightAzimuthalAngleTolerance(copy.FixationLightAzimuthalAngleTolerance),
+    FixationLightPolarAngleTolerance(copy.FixationLightPolarAngleTolerance),
     GantryAngleTolerance(copy.GantryAngleTolerance),
+    HeadFixationAngleTolerance(copy.HeadFixationAngleTolerance),
     PatientSupportAngleTolerance(copy.PatientSupportAngleTolerance),
     SnoutPositionTolerance(copy.SnoutPositionTolerance),
     TableTopLateralPositionTolerance(copy.TableTopLateralPositionTolerance),
@@ -67,7 +75,11 @@ DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::Item::operator
         EmptyDefaultItem = copy.EmptyDefaultItem;
         BeamLimitingDeviceAngleTolerance = copy.BeamLimitingDeviceAngleTolerance;
         BeamLimitingDeviceToleranceSequence = copy.BeamLimitingDeviceToleranceSequence;
+        ChairHeadFramePositionTolerance = copy.ChairHeadFramePositionTolerance;
+        FixationLightAzimuthalAngleTolerance = copy.FixationLightAzimuthalAngleTolerance;
+        FixationLightPolarAngleTolerance = copy.FixationLightPolarAngleTolerance;
         GantryAngleTolerance = copy.GantryAngleTolerance;
+        HeadFixationAngleTolerance = copy.HeadFixationAngleTolerance;
         PatientSupportAngleTolerance = copy.PatientSupportAngleTolerance;
         SnoutPositionTolerance = copy.SnoutPositionTolerance;
         TableTopLateralPositionTolerance = copy.TableTopLateralPositionTolerance;
@@ -99,6 +111,10 @@ void DRTIonToleranceTableSequence::Item::clear()
         TableTopPitchAngleTolerance.clear();
         TableTopRollAngleTolerance.clear();
         SnoutPositionTolerance.clear();
+        HeadFixationAngleTolerance.clear();
+        ChairHeadFramePositionTolerance.clear();
+        FixationLightAzimuthalAngleTolerance.clear();
+        FixationLightPolarAngleTolerance.clear();
     }
 }
 
@@ -116,7 +132,11 @@ OFBool DRTIonToleranceTableSequence::Item::isEmpty()
            TableTopLateralPositionTolerance.isEmpty() &&
            TableTopPitchAngleTolerance.isEmpty() &&
            TableTopRollAngleTolerance.isEmpty() &&
-           SnoutPositionTolerance.isEmpty();
+           SnoutPositionTolerance.isEmpty() &&
+           HeadFixationAngleTolerance.isEmpty() &&
+           ChairHeadFramePositionTolerance.isEmpty() &&
+           FixationLightAzimuthalAngleTolerance.isEmpty() &&
+           FixationLightPolarAngleTolerance.isEmpty();
 }
 
 
@@ -145,6 +165,10 @@ OFCondition DRTIonToleranceTableSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, TableTopPitchAngleTolerance, "1", "3", "IonToleranceTableSequence");
         getAndCheckElementFromDataset(item, TableTopRollAngleTolerance, "1", "3", "IonToleranceTableSequence");
         getAndCheckElementFromDataset(item, SnoutPositionTolerance, "1", "3", "IonToleranceTableSequence");
+        getAndCheckElementFromDataset(item, HeadFixationAngleTolerance, "1", "3", "IonToleranceTableSequence");
+        getAndCheckElementFromDataset(item, ChairHeadFramePositionTolerance, "1", "3", "IonToleranceTableSequence");
+        getAndCheckElementFromDataset(item, FixationLightAzimuthalAngleTolerance, "1", "3", "IonToleranceTableSequence");
+        getAndCheckElementFromDataset(item, FixationLightPolarAngleTolerance, "1", "3", "IonToleranceTableSequence");
         result = EC_Normal;
     }
     return result;
@@ -169,6 +193,10 @@ OFCondition DRTIonToleranceTableSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmFloatingPointSingle(TableTopPitchAngleTolerance), "1", "3", "IonToleranceTableSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(TableTopRollAngleTolerance), "1", "3", "IonToleranceTableSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(SnoutPositionTolerance), "1", "3", "IonToleranceTableSequence");
+        addElementToDataset(result, item, new DcmDecimalString(HeadFixationAngleTolerance), "1", "3", "IonToleranceTableSequence");
+        addElementToDataset(result, item, new DcmDecimalString(ChairHeadFramePositionTolerance), "1", "3", "IonToleranceTableSequence");
+        addElementToDataset(result, item, new DcmDecimalString(FixationLightAzimuthalAngleTolerance), "1", "3", "IonToleranceTableSequence");
+        addElementToDataset(result, item, new DcmDecimalString(FixationLightPolarAngleTolerance), "1", "3", "IonToleranceTableSequence");
     }
     return result;
 }
@@ -192,6 +220,60 @@ OFCondition DRTIonToleranceTableSequence::Item::getBeamLimitingDeviceAngleTolera
 }
 
 
+OFCondition DRTIonToleranceTableSequence::Item::getChairHeadFramePositionTolerance(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ChairHeadFramePositionTolerance, value, pos);
+}
+
+
+OFCondition DRTIonToleranceTableSequence::Item::getChairHeadFramePositionTolerance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, ChairHeadFramePositionTolerance).getFloat64(value, pos);
+}
+
+
+OFCondition DRTIonToleranceTableSequence::Item::getFixationLightAzimuthalAngleTolerance(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(FixationLightAzimuthalAngleTolerance, value, pos);
+}
+
+
+OFCondition DRTIonToleranceTableSequence::Item::getFixationLightAzimuthalAngleTolerance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, FixationLightAzimuthalAngleTolerance).getFloat64(value, pos);
+}
+
+
+OFCondition DRTIonToleranceTableSequence::Item::getFixationLightPolarAngleTolerance(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(FixationLightPolarAngleTolerance, value, pos);
+}
+
+
+OFCondition DRTIonToleranceTableSequence::Item::getFixationLightPolarAngleTolerance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, FixationLightPolarAngleTolerance).getFloat64(value, pos);
+}
+
+
 OFCondition DRTIonToleranceTableSequence::Item::getGantryAngleTolerance(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -210,6 +292,24 @@ OFCondition DRTIonToleranceTableSequence::Item::getGantryAngleTolerance(Float64
 }
 
 
+OFCondition DRTIonToleranceTableSequence::Item::getHeadFixationAngleTolerance(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(HeadFixationAngleTolerance, value, pos);
+}
+
+
+OFCondition DRTIonToleranceTableSequence::Item::getHeadFixationAngleTolerance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, HeadFixationAngleTolerance).getFloat64(value, pos);
+}
+
+
 OFCondition DRTIonToleranceTableSequence::Item::getPatientSupportAngleTolerance(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -349,6 +449,45 @@ OFCondition DRTIonToleranceTableSequence::Item::setBeamLimitingDeviceAngleTolera
 }
 
 
+OFCondition DRTIonToleranceTableSequence::Item::setChairHeadFramePositionTolerance(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ChairHeadFramePositionTolerance.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTIonToleranceTableSequence::Item::setFixationLightAzimuthalAngleTolerance(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = FixationLightAzimuthalAngleTolerance.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTIonToleranceTableSequence::Item::setFixationLightPolarAngleTolerance(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = FixationLightPolarAngleTolerance.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTIonToleranceTableSequence::Item::setGantryAngleTolerance(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -362,6 +501,19 @@ OFCondition DRTIonToleranceTableSequence::Item::setGantryAngleTolerance(const OF
 }
 
 
+OFCondition DRTIonToleranceTableSequence::Item::setHeadFixationAngleTolerance(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = HeadFixationAngleTolerance.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTIonToleranceTableSequence::Item::setPatientSupportAngleTolerance(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -570,7 +722,7 @@ OFBool DRTIonToleranceTableSequence::isValid() const
 }
 
 
-unsigned long DRTIonToleranceTableSequence::getNumberOfItems() const
+size_t DRTIonToleranceTableSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -600,12 +752,12 @@ OFCondition DRTIonToleranceTableSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIonToleranceTableSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIonToleranceTableSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -620,12 +772,12 @@ OFCondition DRTIonToleranceTableSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTIonToleranceTableSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIonToleranceTableSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -640,7 +792,7 @@ OFCondition DRTIonToleranceTableSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTIonToleranceTableSequence::gotoItem(const unsigned long num)
+OFCondition DRTIonToleranceTableSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -676,7 +828,7 @@ const DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::getCurre
 }
 
 
-OFCondition DRTIonToleranceTableSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIonToleranceTableSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -686,7 +838,7 @@ OFCondition DRTIonToleranceTableSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::getItem(const unsigned long num)
+DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -696,7 +848,7 @@ DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::getItem(const
 }
 
 
-const DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::getItem(const unsigned long num) const
+const DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -706,13 +858,13 @@ const DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::getItem(
 }
 
 
-DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::operator[](const unsigned long num)
+DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::operator[](const unsigned long num) const
+const DRTIonToleranceTableSequence::Item &DRTIonToleranceTableSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -735,7 +887,7 @@ OFCondition DRTIonToleranceTableSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIonToleranceTableSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIonToleranceTableSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -758,7 +910,7 @@ OFCondition DRTIonToleranceTableSequence::insertItem(const unsigned long pos, It
 }
 
 
-OFCondition DRTIonToleranceTableSequence::removeItem(const unsigned long pos)
+OFCondition DRTIonToleranceTableSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtiwps.cc b/dcmrt/libsrc/drtiwps.cc
index 0501b4b..ae30e17 100644
--- a/dcmrt/libsrc/drtiwps.cc
+++ b/dcmrt/libsrc/drtiwps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -285,7 +285,7 @@ OFBool DRTIonWedgePositionSequence::isValid() const
 }
 
 
-unsigned long DRTIonWedgePositionSequence::getNumberOfItems() const
+size_t DRTIonWedgePositionSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -315,12 +315,12 @@ OFCondition DRTIonWedgePositionSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIonWedgePositionSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIonWedgePositionSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -335,12 +335,12 @@ OFCondition DRTIonWedgePositionSequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTIonWedgePositionSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIonWedgePositionSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -355,7 +355,7 @@ OFCondition DRTIonWedgePositionSequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTIonWedgePositionSequence::gotoItem(const unsigned long num)
+OFCondition DRTIonWedgePositionSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -391,7 +391,7 @@ const DRTIonWedgePositionSequence::Item &DRTIonWedgePositionSequence::getCurrent
 }
 
 
-OFCondition DRTIonWedgePositionSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIonWedgePositionSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -401,7 +401,7 @@ OFCondition DRTIonWedgePositionSequence::getItem(const unsigned long num, Item *
 }
 
 
-DRTIonWedgePositionSequence::Item &DRTIonWedgePositionSequence::getItem(const unsigned long num)
+DRTIonWedgePositionSequence::Item &DRTIonWedgePositionSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -411,7 +411,7 @@ DRTIonWedgePositionSequence::Item &DRTIonWedgePositionSequence::getItem(const un
 }
 
 
-const DRTIonWedgePositionSequence::Item &DRTIonWedgePositionSequence::getItem(const unsigned long num) const
+const DRTIonWedgePositionSequence::Item &DRTIonWedgePositionSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -421,13 +421,13 @@ const DRTIonWedgePositionSequence::Item &DRTIonWedgePositionSequence::getItem(co
 }
 
 
-DRTIonWedgePositionSequence::Item &DRTIonWedgePositionSequence::operator[](const unsigned long num)
+DRTIonWedgePositionSequence::Item &DRTIonWedgePositionSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIonWedgePositionSequence::Item &DRTIonWedgePositionSequence::operator[](const unsigned long num) const
+const DRTIonWedgePositionSequence::Item &DRTIonWedgePositionSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -450,7 +450,7 @@ OFCondition DRTIonWedgePositionSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIonWedgePositionSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIonWedgePositionSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -473,7 +473,7 @@ OFCondition DRTIonWedgePositionSequence::insertItem(const unsigned long pos, Ite
 }
 
 
-OFCondition DRTIonWedgePositionSequence::removeItem(const unsigned long pos)
+OFCondition DRTIonWedgePositionSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtiws.cc b/dcmrt/libsrc/drtiws.cc
index 66ec2a8..cc2af36 100644
--- a/dcmrt/libsrc/drtiws.cc
+++ b/dcmrt/libsrc/drtiws.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -419,7 +419,7 @@ OFBool DRTIonWedgeSequence::isValid() const
 }
 
 
-unsigned long DRTIonWedgeSequence::getNumberOfItems() const
+size_t DRTIonWedgeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -449,12 +449,12 @@ OFCondition DRTIonWedgeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTIonWedgeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTIonWedgeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -469,12 +469,12 @@ OFCondition DRTIonWedgeSequence::gotoItem(const unsigned long num, OFListIterato
 }
 
 
-OFCondition DRTIonWedgeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTIonWedgeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -489,7 +489,7 @@ OFCondition DRTIonWedgeSequence::gotoItem(const unsigned long num, OFListConstIt
 }
 
 
-OFCondition DRTIonWedgeSequence::gotoItem(const unsigned long num)
+OFCondition DRTIonWedgeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -525,7 +525,7 @@ const DRTIonWedgeSequence::Item &DRTIonWedgeSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTIonWedgeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTIonWedgeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -535,7 +535,7 @@ OFCondition DRTIonWedgeSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTIonWedgeSequence::Item &DRTIonWedgeSequence::getItem(const unsigned long num)
+DRTIonWedgeSequence::Item &DRTIonWedgeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -545,7 +545,7 @@ DRTIonWedgeSequence::Item &DRTIonWedgeSequence::getItem(const unsigned long num)
 }
 
 
-const DRTIonWedgeSequence::Item &DRTIonWedgeSequence::getItem(const unsigned long num) const
+const DRTIonWedgeSequence::Item &DRTIonWedgeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -555,13 +555,13 @@ const DRTIonWedgeSequence::Item &DRTIonWedgeSequence::getItem(const unsigned lon
 }
 
 
-DRTIonWedgeSequence::Item &DRTIonWedgeSequence::operator[](const unsigned long num)
+DRTIonWedgeSequence::Item &DRTIonWedgeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTIonWedgeSequence::Item &DRTIonWedgeSequence::operator[](const unsigned long num) const
+const DRTIonWedgeSequence::Item &DRTIonWedgeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -584,7 +584,7 @@ OFCondition DRTIonWedgeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTIonWedgeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTIonWedgeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -607,7 +607,7 @@ OFCondition DRTIonWedgeSequence::insertItem(const unsigned long pos, Item *&item
 }
 
 
-OFCondition DRTIonWedgeSequence::removeItem(const unsigned long pos)
+OFCondition DRTIonWedgeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtlsds.cc b/dcmrt/libsrc/drtlsds.cc
index c6ee742..36bf35d 100644
--- a/dcmrt/libsrc/drtlsds.cc
+++ b/dcmrt/libsrc/drtlsds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -347,7 +347,7 @@ OFBool DRTLateralSpreadingDeviceSequence::isValid() const
 }
 
 
-unsigned long DRTLateralSpreadingDeviceSequence::getNumberOfItems() const
+size_t DRTLateralSpreadingDeviceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -377,12 +377,12 @@ OFCondition DRTLateralSpreadingDeviceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTLateralSpreadingDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -397,12 +397,12 @@ OFCondition DRTLateralSpreadingDeviceSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTLateralSpreadingDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -417,7 +417,7 @@ OFCondition DRTLateralSpreadingDeviceSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSequence::gotoItem(const unsigned long num)
+OFCondition DRTLateralSpreadingDeviceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -453,7 +453,7 @@ const DRTLateralSpreadingDeviceSequence::Item &DRTLateralSpreadingDeviceSequence
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTLateralSpreadingDeviceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -463,7 +463,7 @@ OFCondition DRTLateralSpreadingDeviceSequence::getItem(const unsigned long num,
 }
 
 
-DRTLateralSpreadingDeviceSequence::Item &DRTLateralSpreadingDeviceSequence::getItem(const unsigned long num)
+DRTLateralSpreadingDeviceSequence::Item &DRTLateralSpreadingDeviceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -473,7 +473,7 @@ DRTLateralSpreadingDeviceSequence::Item &DRTLateralSpreadingDeviceSequence::getI
 }
 
 
-const DRTLateralSpreadingDeviceSequence::Item &DRTLateralSpreadingDeviceSequence::getItem(const unsigned long num) const
+const DRTLateralSpreadingDeviceSequence::Item &DRTLateralSpreadingDeviceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -483,13 +483,13 @@ const DRTLateralSpreadingDeviceSequence::Item &DRTLateralSpreadingDeviceSequence
 }
 
 
-DRTLateralSpreadingDeviceSequence::Item &DRTLateralSpreadingDeviceSequence::operator[](const unsigned long num)
+DRTLateralSpreadingDeviceSequence::Item &DRTLateralSpreadingDeviceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTLateralSpreadingDeviceSequence::Item &DRTLateralSpreadingDeviceSequence::operator[](const unsigned long num) const
+const DRTLateralSpreadingDeviceSequence::Item &DRTLateralSpreadingDeviceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -512,7 +512,7 @@ OFCondition DRTLateralSpreadingDeviceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTLateralSpreadingDeviceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -535,7 +535,7 @@ OFCondition DRTLateralSpreadingDeviceSequence::insertItem(const unsigned long po
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSequence::removeItem(const unsigned long pos)
+OFCondition DRTLateralSpreadingDeviceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtlsds6.cc b/dcmrt/libsrc/drtlsds6.cc
index 77f8ba1..24019c5 100644
--- a/dcmrt/libsrc/drtlsds6.cc
+++ b/dcmrt/libsrc/drtlsds6.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -310,7 +310,7 @@ OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::isValid() co
 }
 
 
-unsigned long DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
+size_t DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -340,12 +340,12 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoNex
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -360,12 +360,12 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoIte
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -380,7 +380,7 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoIte
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -416,7 +416,7 @@ const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLate
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -426,7 +426,7 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem
 }
 
 
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const unsigned long num)
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -436,7 +436,7 @@ DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpr
 }
 
 
-const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const unsigned long num) const
+const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -446,13 +446,13 @@ const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLate
 }
 
 
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const unsigned long num)
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const unsigned long num) const
+const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -475,7 +475,7 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::addItem
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -498,7 +498,7 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::insertI
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtlsds7.cc b/dcmrt/libsrc/drtlsds7.cc
index 6d236c5..845ceef 100644
--- a/dcmrt/libsrc/drtlsds7.cc
+++ b/dcmrt/libsrc/drtlsds7.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -260,7 +260,7 @@ OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule:
 }
 
 
-unsigned long DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
+size_t DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -290,12 +290,12 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordMo
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -310,12 +310,12 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordMo
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,7 +330,7 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordMo
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num)
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -366,7 +366,7 @@ const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -376,7 +376,7 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordMo
 }
 
 
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num)
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -386,7 +386,7 @@ DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &
 }
 
 
-const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num) const
+const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -396,13 +396,13 @@ const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::
 }
 
 
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const unsigned long num)
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const unsigned long num) const
+const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -425,7 +425,7 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordMo
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -448,7 +448,7 @@ OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordMo
 }
 
 
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const unsigned long pos)
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtmacds.cc b/dcmrt/libsrc/drtmacds.cc
index ddbda95..879117f 100644
--- a/dcmrt/libsrc/drtmacds.cc
+++ b/dcmrt/libsrc/drtmacds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMultiplexedAudioChannelsDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -267,7 +267,7 @@ OFBool DRTMultiplexedAudioChannelsDescriptionCodeSequence::isValid() const
 }
 
 
-unsigned long DRTMultiplexedAudioChannelsDescriptionCodeSequence::getNumberOfItems() const
+size_t DRTMultiplexedAudioChannelsDescriptionCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -297,12 +297,12 @@ OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -317,12 +317,12 @@ OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoItem(const u
 }
 
 
-OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -337,7 +337,7 @@ OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoItem(const u
 }
 
 
-OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -373,7 +373,7 @@ const DRTMultiplexedAudioChannelsDescriptionCodeSequence::Item &DRTMultiplexedAu
 }
 
 
-OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -383,7 +383,7 @@ OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::getItem(const un
 }
 
 
-DRTMultiplexedAudioChannelsDescriptionCodeSequence::Item &DRTMultiplexedAudioChannelsDescriptionCodeSequence::getItem(const unsigned long num)
+DRTMultiplexedAudioChannelsDescriptionCodeSequence::Item &DRTMultiplexedAudioChannelsDescriptionCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -393,7 +393,7 @@ DRTMultiplexedAudioChannelsDescriptionCodeSequence::Item &DRTMultiplexedAudioCha
 }
 
 
-const DRTMultiplexedAudioChannelsDescriptionCodeSequence::Item &DRTMultiplexedAudioChannelsDescriptionCodeSequence::getItem(const unsigned long num) const
+const DRTMultiplexedAudioChannelsDescriptionCodeSequence::Item &DRTMultiplexedAudioChannelsDescriptionCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -403,13 +403,13 @@ const DRTMultiplexedAudioChannelsDescriptionCodeSequence::Item &DRTMultiplexedAu
 }
 
 
-DRTMultiplexedAudioChannelsDescriptionCodeSequence::Item &DRTMultiplexedAudioChannelsDescriptionCodeSequence::operator[](const unsigned long num)
+DRTMultiplexedAudioChannelsDescriptionCodeSequence::Item &DRTMultiplexedAudioChannelsDescriptionCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTMultiplexedAudioChannelsDescriptionCodeSequence::Item &DRTMultiplexedAudioChannelsDescriptionCodeSequence::operator[](const unsigned long num) const
+const DRTMultiplexedAudioChannelsDescriptionCodeSequence::Item &DRTMultiplexedAudioChannelsDescriptionCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -432,7 +432,7 @@ OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::addItem(Item *&i
 }
 
 
-OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -455,7 +455,7 @@ OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::insertItem(const
 }
 
 
-OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtmas.cc b/dcmrt/libsrc/drtmas.cc
index 369b0c6..cff79f8 100644
--- a/dcmrt/libsrc/drtmas.cc
+++ b/dcmrt/libsrc/drtmas.cc
@@ -1,14 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTModifiedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
- *  Last modified on 2016-02-05 by Riesmeier
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -68,27 +67,29 @@ OFBool DRTModifiedAttributesSequence::Item::isValid() const
 }
 
 
-OFCondition DRTModifiedAttributesSequence::Item::read(DcmItem & /*item*/)
+OFCondition DRTModifiedAttributesSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        /* manual comment: nothing to do */
-        result = EC_Normal;
+        /* avoid compiler warning on unused parameter */
+        (void)item;
+        result = EC_NotYetImplemented;
     }
     return result;
 }
 
 
-OFCondition DRTModifiedAttributesSequence::Item::write(DcmItem & /*item*/)
+OFCondition DRTModifiedAttributesSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        /* manual comment: nothing to do */
-        result = EC_Normal;
+        /* avoid compiler warning on unused parameter */
+        (void)item;
+        result = EC_NotYetImplemented;
     }
     return result;
 }
@@ -197,7 +198,7 @@ OFBool DRTModifiedAttributesSequence::isValid() const
 }
 
 
-unsigned long DRTModifiedAttributesSequence::getNumberOfItems() const
+size_t DRTModifiedAttributesSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -227,12 +228,12 @@ OFCondition DRTModifiedAttributesSequence::gotoNextItem()
 }
 
 
-OFCondition DRTModifiedAttributesSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTModifiedAttributesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -247,12 +248,12 @@ OFCondition DRTModifiedAttributesSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTModifiedAttributesSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTModifiedAttributesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -267,7 +268,7 @@ OFCondition DRTModifiedAttributesSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTModifiedAttributesSequence::gotoItem(const unsigned long num)
+OFCondition DRTModifiedAttributesSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -303,7 +304,7 @@ const DRTModifiedAttributesSequence::Item &DRTModifiedAttributesSequence::getCur
 }
 
 
-OFCondition DRTModifiedAttributesSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTModifiedAttributesSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -313,7 +314,7 @@ OFCondition DRTModifiedAttributesSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTModifiedAttributesSequence::Item &DRTModifiedAttributesSequence::getItem(const unsigned long num)
+DRTModifiedAttributesSequence::Item &DRTModifiedAttributesSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -323,7 +324,7 @@ DRTModifiedAttributesSequence::Item &DRTModifiedAttributesSequence::getItem(cons
 }
 
 
-const DRTModifiedAttributesSequence::Item &DRTModifiedAttributesSequence::getItem(const unsigned long num) const
+const DRTModifiedAttributesSequence::Item &DRTModifiedAttributesSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -333,13 +334,13 @@ const DRTModifiedAttributesSequence::Item &DRTModifiedAttributesSequence::getIte
 }
 
 
-DRTModifiedAttributesSequence::Item &DRTModifiedAttributesSequence::operator[](const unsigned long num)
+DRTModifiedAttributesSequence::Item &DRTModifiedAttributesSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTModifiedAttributesSequence::Item &DRTModifiedAttributesSequence::operator[](const unsigned long num) const
+const DRTModifiedAttributesSequence::Item &DRTModifiedAttributesSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -362,7 +363,7 @@ OFCondition DRTModifiedAttributesSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTModifiedAttributesSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTModifiedAttributesSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -385,7 +386,7 @@ OFCondition DRTModifiedAttributesSequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTModifiedAttributesSequence::removeItem(const unsigned long pos)
+OFCondition DRTModifiedAttributesSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtmdrs.cc b/dcmrt/libsrc/drtmdrs.cc
index bac8e3d..14c54da 100644
--- a/dcmrt/libsrc/drtmdrs.cc
+++ b/dcmrt/libsrc/drtmdrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -394,7 +394,7 @@ OFBool DRTMeasuredDoseReferenceSequence::isValid() const
 }
 
 
-unsigned long DRTMeasuredDoseReferenceSequence::getNumberOfItems() const
+size_t DRTMeasuredDoseReferenceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -424,12 +424,12 @@ OFCondition DRTMeasuredDoseReferenceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTMeasuredDoseReferenceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTMeasuredDoseReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -444,12 +444,12 @@ OFCondition DRTMeasuredDoseReferenceSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTMeasuredDoseReferenceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTMeasuredDoseReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -464,7 +464,7 @@ OFCondition DRTMeasuredDoseReferenceSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTMeasuredDoseReferenceSequence::gotoItem(const unsigned long num)
+OFCondition DRTMeasuredDoseReferenceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -500,7 +500,7 @@ const DRTMeasuredDoseReferenceSequence::Item &DRTMeasuredDoseReferenceSequence::
 }
 
 
-OFCondition DRTMeasuredDoseReferenceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTMeasuredDoseReferenceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -510,7 +510,7 @@ OFCondition DRTMeasuredDoseReferenceSequence::getItem(const unsigned long num, I
 }
 
 
-DRTMeasuredDoseReferenceSequence::Item &DRTMeasuredDoseReferenceSequence::getItem(const unsigned long num)
+DRTMeasuredDoseReferenceSequence::Item &DRTMeasuredDoseReferenceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -520,7 +520,7 @@ DRTMeasuredDoseReferenceSequence::Item &DRTMeasuredDoseReferenceSequence::getIte
 }
 
 
-const DRTMeasuredDoseReferenceSequence::Item &DRTMeasuredDoseReferenceSequence::getItem(const unsigned long num) const
+const DRTMeasuredDoseReferenceSequence::Item &DRTMeasuredDoseReferenceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -530,13 +530,13 @@ const DRTMeasuredDoseReferenceSequence::Item &DRTMeasuredDoseReferenceSequence::
 }
 
 
-DRTMeasuredDoseReferenceSequence::Item &DRTMeasuredDoseReferenceSequence::operator[](const unsigned long num)
+DRTMeasuredDoseReferenceSequence::Item &DRTMeasuredDoseReferenceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTMeasuredDoseReferenceSequence::Item &DRTMeasuredDoseReferenceSequence::operator[](const unsigned long num) const
+const DRTMeasuredDoseReferenceSequence::Item &DRTMeasuredDoseReferenceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -559,7 +559,7 @@ OFCondition DRTMeasuredDoseReferenceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTMeasuredDoseReferenceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTMeasuredDoseReferenceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -582,7 +582,7 @@ OFCondition DRTMeasuredDoseReferenceSequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTMeasuredDoseReferenceSequence::removeItem(const unsigned long pos)
+OFCondition DRTMeasuredDoseReferenceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtmls.cc b/dcmrt/libsrc/drtmls.cc
index af627b0..c5c6047 100644
--- a/dcmrt/libsrc/drtmls.cc
+++ b/dcmrt/libsrc/drtmls.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTModalityLUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -93,10 +93,10 @@ OFCondition DRTModalityLUTSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, LUTDescriptor, "3", "1C", "ModalityLUTSequence");
+        getAndCheckElementFromDataset(item, LUTDescriptor, "3", "1", "ModalityLUTSequence");
         getAndCheckElementFromDataset(item, LUTExplanation, "1", "3", "ModalityLUTSequence");
-        getAndCheckElementFromDataset(item, ModalityLUTType, "1", "1C", "ModalityLUTSequence");
-        getAndCheckElementFromDataset(item, LUTData, "1-n", "1C", "ModalityLUTSequence");
+        getAndCheckElementFromDataset(item, ModalityLUTType, "1", "1", "ModalityLUTSequence");
+        getAndCheckElementFromDataset(item, LUTData, "1-n", "1", "ModalityLUTSequence");
         result = EC_Normal;
     }
     return result;
@@ -109,10 +109,10 @@ OFCondition DRTModalityLUTSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmUnsignedShort(LUTDescriptor), "3", "1C", "ModalityLUTSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(LUTDescriptor), "3", "1", "ModalityLUTSequence");
         addElementToDataset(result, item, new DcmLongString(LUTExplanation), "1", "3", "ModalityLUTSequence");
-        addElementToDataset(result, item, new DcmLongString(ModalityLUTType), "1", "1C", "ModalityLUTSequence");
-        addElementToDataset(result, item, new DcmOtherByteOtherWord(LUTData), "1-n", "1C", "ModalityLUTSequence");
+        addElementToDataset(result, item, new DcmLongString(ModalityLUTType), "1", "1", "ModalityLUTSequence");
+        addElementToDataset(result, item, new DcmOtherByteOtherWord(LUTData), "1-n", "1", "ModalityLUTSequence");
     }
     return result;
 }
@@ -311,7 +311,7 @@ OFBool DRTModalityLUTSequence::isValid() const
 }
 
 
-unsigned long DRTModalityLUTSequence::getNumberOfItems() const
+size_t DRTModalityLUTSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -341,12 +341,12 @@ OFCondition DRTModalityLUTSequence::gotoNextItem()
 }
 
 
-OFCondition DRTModalityLUTSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTModalityLUTSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -361,12 +361,12 @@ OFCondition DRTModalityLUTSequence::gotoItem(const unsigned long num, OFListIter
 }
 
 
-OFCondition DRTModalityLUTSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTModalityLUTSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -381,7 +381,7 @@ OFCondition DRTModalityLUTSequence::gotoItem(const unsigned long num, OFListCons
 }
 
 
-OFCondition DRTModalityLUTSequence::gotoItem(const unsigned long num)
+OFCondition DRTModalityLUTSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -417,7 +417,7 @@ const DRTModalityLUTSequence::Item &DRTModalityLUTSequence::getCurrentItem() con
 }
 
 
-OFCondition DRTModalityLUTSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTModalityLUTSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -427,7 +427,7 @@ OFCondition DRTModalityLUTSequence::getItem(const unsigned long num, Item *&item
 }
 
 
-DRTModalityLUTSequence::Item &DRTModalityLUTSequence::getItem(const unsigned long num)
+DRTModalityLUTSequence::Item &DRTModalityLUTSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -437,7 +437,7 @@ DRTModalityLUTSequence::Item &DRTModalityLUTSequence::getItem(const unsigned lon
 }
 
 
-const DRTModalityLUTSequence::Item &DRTModalityLUTSequence::getItem(const unsigned long num) const
+const DRTModalityLUTSequence::Item &DRTModalityLUTSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -447,13 +447,13 @@ const DRTModalityLUTSequence::Item &DRTModalityLUTSequence::getItem(const unsign
 }
 
 
-DRTModalityLUTSequence::Item &DRTModalityLUTSequence::operator[](const unsigned long num)
+DRTModalityLUTSequence::Item &DRTModalityLUTSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTModalityLUTSequence::Item &DRTModalityLUTSequence::operator[](const unsigned long num) const
+const DRTModalityLUTSequence::Item &DRTModalityLUTSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -476,7 +476,7 @@ OFCondition DRTModalityLUTSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTModalityLUTSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTModalityLUTSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -499,7 +499,7 @@ OFCondition DRTModalityLUTSequence::insertItem(const unsigned long pos, Item *&i
 }
 
 
-OFCondition DRTModalityLUTSequence::removeItem(const unsigned long pos)
+OFCondition DRTModalityLUTSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtmps.cc b/dcmrt/libsrc/drtmps.cc
index b48bfaa..aefaf15 100644
--- a/dcmrt/libsrc/drtmps.cc
+++ b/dcmrt/libsrc/drtmps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMACParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -305,7 +305,7 @@ OFBool DRTMACParametersSequence::isValid() const
 }
 
 
-unsigned long DRTMACParametersSequence::getNumberOfItems() const
+size_t DRTMACParametersSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -335,12 +335,12 @@ OFCondition DRTMACParametersSequence::gotoNextItem()
 }
 
 
-OFCondition DRTMACParametersSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTMACParametersSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -355,12 +355,12 @@ OFCondition DRTMACParametersSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTMACParametersSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTMACParametersSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -375,7 +375,7 @@ OFCondition DRTMACParametersSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTMACParametersSequence::gotoItem(const unsigned long num)
+OFCondition DRTMACParametersSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -411,7 +411,7 @@ const DRTMACParametersSequence::Item &DRTMACParametersSequence::getCurrentItem()
 }
 
 
-OFCondition DRTMACParametersSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTMACParametersSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -421,7 +421,7 @@ OFCondition DRTMACParametersSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTMACParametersSequence::Item &DRTMACParametersSequence::getItem(const unsigned long num)
+DRTMACParametersSequence::Item &DRTMACParametersSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -431,7 +431,7 @@ DRTMACParametersSequence::Item &DRTMACParametersSequence::getItem(const unsigned
 }
 
 
-const DRTMACParametersSequence::Item &DRTMACParametersSequence::getItem(const unsigned long num) const
+const DRTMACParametersSequence::Item &DRTMACParametersSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -441,13 +441,13 @@ const DRTMACParametersSequence::Item &DRTMACParametersSequence::getItem(const un
 }
 
 
-DRTMACParametersSequence::Item &DRTMACParametersSequence::operator[](const unsigned long num)
+DRTMACParametersSequence::Item &DRTMACParametersSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTMACParametersSequence::Item &DRTMACParametersSequence::operator[](const unsigned long num) const
+const DRTMACParametersSequence::Item &DRTMACParametersSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -470,7 +470,7 @@ OFCondition DRTMACParametersSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTMACParametersSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTMACParametersSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -493,7 +493,7 @@ OFCondition DRTMACParametersSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTMACParametersSequence::removeItem(const unsigned long pos)
+OFCondition DRTMACParametersSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrsrs.cc b/dcmrt/libsrc/drtmris.cc
similarity index 64%
copy from dcmrt/libsrc/drtrsrs.cc
copy to dcmrt/libsrc/drtmris.cc
index a36e5c1..e12c40b 100644
--- a/dcmrt/libsrc/drtrsrs.cc
+++ b/dcmrt/libsrc/drtmris.cc
@@ -1,148 +1,177 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTReferencedSpatialRegistrationSequence
+ *  Source file for class DRTMappingResourceIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtrsrs.h"
+#include "dcmtk/dcmrt/seq/drtmris.h"
 
 
 // --- item class ---
 
-DRTReferencedSpatialRegistrationSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTMappingResourceIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID)
 {
 }
 
 
-DRTReferencedSpatialRegistrationSequence::Item::Item(const Item &copy)
+DRTMappingResourceIdentificationSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID)
 {
 }
 
 
-DRTReferencedSpatialRegistrationSequence::Item::~Item()
+DRTMappingResourceIdentificationSequence::Item::~Item()
 {
 }
 
 
-DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::Item::operator=(const Item &copy)
+DRTMappingResourceIdentificationSequence::Item &DRTMappingResourceIdentificationSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
-        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
     }
     return *this;
 }
 
 
-void DRTReferencedSpatialRegistrationSequence::Item::clear()
+void DRTMappingResourceIdentificationSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
-        ReferencedSOPClassUID.clear();
-        ReferencedSOPInstanceUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
     }
 }
 
 
-OFBool DRTReferencedSpatialRegistrationSequence::Item::isEmpty()
+OFBool DRTMappingResourceIdentificationSequence::Item::isEmpty()
 {
-    return ReferencedSOPClassUID.isEmpty() &&
-           ReferencedSOPInstanceUID.isEmpty();
+    return MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty();
 }
 
 
-OFBool DRTReferencedSpatialRegistrationSequence::Item::isValid() const
+OFBool DRTMappingResourceIdentificationSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::Item::read(DcmItem &item)
+OFCondition DRTMappingResourceIdentificationSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedSpatialRegistrationSequence");
-        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedSpatialRegistrationSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1", "MappingResourceIdentificationSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "MappingResourceIdentificationSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "MappingResourceIdentificationSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::Item::write(DcmItem &item)
+OFCondition DRTMappingResourceIdentificationSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedSpatialRegistrationSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedSpatialRegistrationSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1", "MappingResourceIdentificationSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "MappingResourceIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "MappingResourceIdentificationSequence");
     }
     return result;
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+OFCondition DRTMappingResourceIdentificationSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+        return getStringValueFromElement(MappingResource, value, pos);
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+OFCondition DRTMappingResourceIdentificationSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+        return getStringValueFromElement(MappingResourceName, value, pos);
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+OFCondition DRTMappingResourceIdentificationSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTMappingResourceIdentificationSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMappingResourceIdentificationSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = ReferencedSOPClassUID.putOFStringArray(value);
+            result = MappingResourceName.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+OFCondition DRTMappingResourceIdentificationSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+            result = MappingResourceUID.putOFStringArray(value);
     }
     return result;
 }
@@ -150,7 +179,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::Item::setReferencedSOPInst
 
 // --- sequence class ---
 
-DRTReferencedSpatialRegistrationSequence::DRTReferencedSpatialRegistrationSequence(const OFBool emptyDefaultSequence)
+DRTMappingResourceIdentificationSequence::DRTMappingResourceIdentificationSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -160,7 +189,7 @@ DRTReferencedSpatialRegistrationSequence::DRTReferencedSpatialRegistrationSequen
 }
 
 
-DRTReferencedSpatialRegistrationSequence::DRTReferencedSpatialRegistrationSequence(const DRTReferencedSpatialRegistrationSequence &copy)
+DRTMappingResourceIdentificationSequence::DRTMappingResourceIdentificationSequence(const DRTMappingResourceIdentificationSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -186,7 +215,7 @@ DRTReferencedSpatialRegistrationSequence::DRTReferencedSpatialRegistrationSequen
 }
 
 
-DRTReferencedSpatialRegistrationSequence &DRTReferencedSpatialRegistrationSequence::operator=(const DRTReferencedSpatialRegistrationSequence &copy)
+DRTMappingResourceIdentificationSequence &DRTMappingResourceIdentificationSequence::operator=(const DRTMappingResourceIdentificationSequence &copy)
 {
     if (this != &copy)
     {
@@ -214,13 +243,13 @@ DRTReferencedSpatialRegistrationSequence &DRTReferencedSpatialRegistrationSequen
 }
 
 
-DRTReferencedSpatialRegistrationSequence::~DRTReferencedSpatialRegistrationSequence()
+DRTMappingResourceIdentificationSequence::~DRTMappingResourceIdentificationSequence()
 {
     clear();
 }
 
 
-void DRTReferencedSpatialRegistrationSequence::clear()
+void DRTMappingResourceIdentificationSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -239,25 +268,25 @@ void DRTReferencedSpatialRegistrationSequence::clear()
 }
 
 
-OFBool DRTReferencedSpatialRegistrationSequence::isEmpty()
+OFBool DRTMappingResourceIdentificationSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTReferencedSpatialRegistrationSequence::isValid() const
+OFBool DRTMappingResourceIdentificationSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTReferencedSpatialRegistrationSequence::getNumberOfItems() const
+size_t DRTMappingResourceIdentificationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::gotoFirstItem()
+OFCondition DRTMappingResourceIdentificationSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -269,7 +298,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::gotoNextItem()
+OFCondition DRTMappingResourceIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -281,12 +310,12 @@ OFCondition DRTReferencedSpatialRegistrationSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTMappingResourceIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +330,12 @@ OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const unsigned lo
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTMappingResourceIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,13 +350,13 @@ OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const unsigned lo
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const unsigned long num)
+OFCondition DRTMappingResourceIdentificationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::getCurrentItem(Item *&item) const
+OFCondition DRTMappingResourceIdentificationSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -339,7 +368,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::getCurrentItem(Item *&item
 }
 
 
-DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::getCurrentItem()
+DRTMappingResourceIdentificationSequence::Item &DRTMappingResourceIdentificationSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -348,7 +377,7 @@ DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistration
 }
 
 
-const DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::getCurrentItem() const
+const DRTMappingResourceIdentificationSequence::Item &DRTMappingResourceIdentificationSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -357,7 +386,7 @@ const DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegist
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTMappingResourceIdentificationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +396,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::getItem(const unsigned lon
 }
 
 
-DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::getItem(const unsigned long num)
+DRTMappingResourceIdentificationSequence::Item &DRTMappingResourceIdentificationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +406,7 @@ DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistration
 }
 
 
-const DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::getItem(const unsigned long num) const
+const DRTMappingResourceIdentificationSequence::Item &DRTMappingResourceIdentificationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,19 +416,19 @@ const DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegist
 }
 
 
-DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::operator[](const unsigned long num)
+DRTMappingResourceIdentificationSequence::Item &DRTMappingResourceIdentificationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::operator[](const unsigned long num) const
+const DRTMappingResourceIdentificationSequence::Item &DRTMappingResourceIdentificationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::addItem(Item *&item)
+OFCondition DRTMappingResourceIdentificationSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -416,7 +445,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTMappingResourceIdentificationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +468,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::insertItem(const unsigned
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::removeItem(const unsigned long pos)
+OFCondition DRTMappingResourceIdentificationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -457,7 +486,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::removeItem(const unsigned
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::read(DcmItem &dataset,
+OFCondition DRTMappingResourceIdentificationSequence::read(DcmItem &dataset,
                                                            const OFString &card,
                                                            const OFString &type,
                                                            const char *moduleName)
@@ -469,7 +498,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedSpatialRegistrationSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_MappingResourceIdentificationSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -499,7 +528,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_ReferencedSpatialRegistrationSequence);
+            DcmSequenceOfItems element(DCM_MappingResourceIdentificationSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -507,7 +536,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::write(DcmItem &dataset,
+OFCondition DRTMappingResourceIdentificationSequence::write(DcmItem &dataset,
                                                             const OFString &card,
                                                             const OFString &type,
                                                             const char *moduleName)
@@ -516,7 +545,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::write(DcmItem &dataset,
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedSpatialRegistrationSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_MappingResourceIdentificationSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtmss.cc b/dcmrt/libsrc/drtmss.cc
index 8879fa6..3e0bcd5 100644
--- a/dcmrt/libsrc/drtmss.cc
+++ b/dcmrt/libsrc/drtmss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMotionSynchronizationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -309,7 +309,7 @@ OFBool DRTMotionSynchronizationSequence::isValid() const
 }
 
 
-unsigned long DRTMotionSynchronizationSequence::getNumberOfItems() const
+size_t DRTMotionSynchronizationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -339,12 +339,12 @@ OFCondition DRTMotionSynchronizationSequence::gotoNextItem()
 }
 
 
-OFCondition DRTMotionSynchronizationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTMotionSynchronizationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -359,12 +359,12 @@ OFCondition DRTMotionSynchronizationSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTMotionSynchronizationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTMotionSynchronizationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -379,7 +379,7 @@ OFCondition DRTMotionSynchronizationSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTMotionSynchronizationSequence::gotoItem(const unsigned long num)
+OFCondition DRTMotionSynchronizationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -415,7 +415,7 @@ const DRTMotionSynchronizationSequence::Item &DRTMotionSynchronizationSequence::
 }
 
 
-OFCondition DRTMotionSynchronizationSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTMotionSynchronizationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -425,7 +425,7 @@ OFCondition DRTMotionSynchronizationSequence::getItem(const unsigned long num, I
 }
 
 
-DRTMotionSynchronizationSequence::Item &DRTMotionSynchronizationSequence::getItem(const unsigned long num)
+DRTMotionSynchronizationSequence::Item &DRTMotionSynchronizationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -435,7 +435,7 @@ DRTMotionSynchronizationSequence::Item &DRTMotionSynchronizationSequence::getIte
 }
 
 
-const DRTMotionSynchronizationSequence::Item &DRTMotionSynchronizationSequence::getItem(const unsigned long num) const
+const DRTMotionSynchronizationSequence::Item &DRTMotionSynchronizationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -445,13 +445,13 @@ const DRTMotionSynchronizationSequence::Item &DRTMotionSynchronizationSequence::
 }
 
 
-DRTMotionSynchronizationSequence::Item &DRTMotionSynchronizationSequence::operator[](const unsigned long num)
+DRTMotionSynchronizationSequence::Item &DRTMotionSynchronizationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTMotionSynchronizationSequence::Item &DRTMotionSynchronizationSequence::operator[](const unsigned long num) const
+const DRTMotionSynchronizationSequence::Item &DRTMotionSynchronizationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -474,7 +474,7 @@ OFCondition DRTMotionSynchronizationSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTMotionSynchronizationSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTMotionSynchronizationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -497,7 +497,7 @@ OFCondition DRTMotionSynchronizationSequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTMotionSynchronizationSequence::removeItem(const unsigned long pos)
+OFCondition DRTMotionSynchronizationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtmucs.cc b/dcmrt/libsrc/drtmucs.cc
index b995faa..772158e 100644
--- a/dcmrt/libsrc/drtmucs.cc
+++ b/dcmrt/libsrc/drtmucs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMeasurementUnitsCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTMeasurementUnitsCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTMeasurementUnitsCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::Item::op
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTMeasurementUnitsCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTMeasurementUnitsCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "MeasurementUnitsCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "MeasurementUnitsCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "MeasurementUnitsCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "MeasurementUnitsCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::getMappingResource(OFString &
 }
 
 
+OFCondition DRTMeasurementUnitsCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTMeasurementUnitsCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::setMappingResource(const OFSt
 }
 
 
+OFCondition DRTMeasurementUnitsCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTMeasurementUnitsCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTMeasurementUnitsCodeSequence::isValid() const
 }
 
 
-unsigned long DRTMeasurementUnitsCodeSequence::getNumberOfItems() const
+size_t DRTMeasurementUnitsCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTMeasurementUnitsCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTMeasurementUnitsCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTMeasurementUnitsCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTMeasurementUnitsCodeSequence::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTMeasurementUnitsCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTMeasurementUnitsCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTMeasurementUnitsCodeSequence::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTMeasurementUnitsCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTMeasurementUnitsCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::ge
 }
 
 
-OFCondition DRTMeasurementUnitsCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTMeasurementUnitsCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTMeasurementUnitsCodeSequence::getItem(const unsigned long num, It
 }
 
 
-DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::getItem(const unsigned long num)
+DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::getItem(
 }
 
 
-const DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::getItem(const unsigned long num) const
+const DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::ge
 }
 
 
-DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::operator[](const unsigned long num)
+DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::operator[](const unsigned long num) const
+const DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTMeasurementUnitsCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTMeasurementUnitsCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTMeasurementUnitsCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTMeasurementUnitsCodeSequence::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTMeasurementUnitsCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTMeasurementUnitsCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtoas.cc b/dcmrt/libsrc/drtoas.cc
index 0685b2f..8faeeed 100644
--- a/dcmrt/libsrc/drtoas.cc
+++ b/dcmrt/libsrc/drtoas.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOriginalAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -316,7 +316,7 @@ OFBool DRTOriginalAttributesSequence::isValid() const
 }
 
 
-unsigned long DRTOriginalAttributesSequence::getNumberOfItems() const
+size_t DRTOriginalAttributesSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -346,12 +346,12 @@ OFCondition DRTOriginalAttributesSequence::gotoNextItem()
 }
 
 
-OFCondition DRTOriginalAttributesSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTOriginalAttributesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -366,12 +366,12 @@ OFCondition DRTOriginalAttributesSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTOriginalAttributesSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTOriginalAttributesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -386,7 +386,7 @@ OFCondition DRTOriginalAttributesSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTOriginalAttributesSequence::gotoItem(const unsigned long num)
+OFCondition DRTOriginalAttributesSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -422,7 +422,7 @@ const DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::getCur
 }
 
 
-OFCondition DRTOriginalAttributesSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTOriginalAttributesSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -432,7 +432,7 @@ OFCondition DRTOriginalAttributesSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::getItem(const unsigned long num)
+DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -442,7 +442,7 @@ DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::getItem(cons
 }
 
 
-const DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::getItem(const unsigned long num) const
+const DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -452,13 +452,13 @@ const DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::getIte
 }
 
 
-DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::operator[](const unsigned long num)
+DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::operator[](const unsigned long num) const
+const DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -481,7 +481,7 @@ OFCondition DRTOriginalAttributesSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTOriginalAttributesSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTOriginalAttributesSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -504,7 +504,7 @@ OFCondition DRTOriginalAttributesSequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTOriginalAttributesSequence::removeItem(const unsigned long pos)
+OFCondition DRTOriginalAttributesSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtois.cc b/dcmrt/libsrc/drtois.cc
index 43e4ce2..8a12fc4 100644
--- a/dcmrt/libsrc/drtois.cc
+++ b/dcmrt/libsrc/drtois.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOperatorIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -352,7 +352,7 @@ OFBool DRTOperatorIdentificationSequence::isValid() const
 }
 
 
-unsigned long DRTOperatorIdentificationSequence::getNumberOfItems() const
+size_t DRTOperatorIdentificationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -382,12 +382,12 @@ OFCondition DRTOperatorIdentificationSequence::gotoNextItem()
 }
 
 
-OFCondition DRTOperatorIdentificationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTOperatorIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -402,12 +402,12 @@ OFCondition DRTOperatorIdentificationSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTOperatorIdentificationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTOperatorIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -422,7 +422,7 @@ OFCondition DRTOperatorIdentificationSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTOperatorIdentificationSequence::gotoItem(const unsigned long num)
+OFCondition DRTOperatorIdentificationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -458,7 +458,7 @@ const DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence
 }
 
 
-OFCondition DRTOperatorIdentificationSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTOperatorIdentificationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -468,7 +468,7 @@ OFCondition DRTOperatorIdentificationSequence::getItem(const unsigned long num,
 }
 
 
-DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::getItem(const unsigned long num)
+DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -478,7 +478,7 @@ DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::getI
 }
 
 
-const DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::getItem(const unsigned long num) const
+const DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -488,13 +488,13 @@ const DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence
 }
 
 
-DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::operator[](const unsigned long num)
+DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::operator[](const unsigned long num) const
+const DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -517,7 +517,7 @@ OFCondition DRTOperatorIdentificationSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTOperatorIdentificationSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTOperatorIdentificationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -540,7 +540,7 @@ OFCondition DRTOperatorIdentificationSequence::insertItem(const unsigned long po
 }
 
 
-OFCondition DRTOperatorIdentificationSequence::removeItem(const unsigned long pos)
+OFCondition DRTOperatorIdentificationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtopis.cc b/dcmrt/libsrc/drtopis.cc
index a47bd1e..2469939 100644
--- a/dcmrt/libsrc/drtopis.cc
+++ b/dcmrt/libsrc/drtopis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOtherPatientIDsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -287,7 +287,7 @@ OFBool DRTOtherPatientIDsSequence::isValid() const
 }
 
 
-unsigned long DRTOtherPatientIDsSequence::getNumberOfItems() const
+size_t DRTOtherPatientIDsSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -317,12 +317,12 @@ OFCondition DRTOtherPatientIDsSequence::gotoNextItem()
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTOtherPatientIDsSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -337,12 +337,12 @@ OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTOtherPatientIDsSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -357,7 +357,7 @@ OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num)
+OFCondition DRTOtherPatientIDsSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -393,7 +393,7 @@ const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getCurrentIt
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTOtherPatientIDsSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -403,7 +403,7 @@ OFCondition DRTOtherPatientIDsSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(const unsigned long num)
+DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -413,7 +413,7 @@ DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(const unsi
 }
 
 
-const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(const unsigned long num) const
+const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -423,13 +423,13 @@ const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(cons
 }
 
 
-DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::operator[](const unsigned long num)
+DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::operator[](const unsigned long num) const
+const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -452,7 +452,7 @@ OFCondition DRTOtherPatientIDsSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTOtherPatientIDsSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -475,7 +475,7 @@ OFCondition DRTOtherPatientIDsSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::removeItem(const unsigned long pos)
+OFCondition DRTOtherPatientIDsSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtos.cc b/dcmrt/libsrc/drtos.cc
index 81ccc2e..7220b37 100644
--- a/dcmrt/libsrc/drtos.cc
+++ b/dcmrt/libsrc/drtos.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOverrideSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -21,22 +21,26 @@
 
 DRTOverrideSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
+    OperatorIdentificationSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     OperatorsName(DCM_OperatorsName),
     OverrideParameterPointer(DCM_OverrideParameterPointer),
     OverrideReason(DCM_OverrideReason),
     ParameterItemIndex(DCM_ParameterItemIndex),
-    ParameterSequencePointer(DCM_ParameterSequencePointer)
+    ParameterSequencePointer(DCM_ParameterSequencePointer),
+    ParameterValueNumber(DCM_ParameterValueNumber)
 {
 }
 
 
 DRTOverrideSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
+    OperatorIdentificationSequence(copy.OperatorIdentificationSequence),
     OperatorsName(copy.OperatorsName),
     OverrideParameterPointer(copy.OverrideParameterPointer),
     OverrideReason(copy.OverrideReason),
     ParameterItemIndex(copy.ParameterItemIndex),
-    ParameterSequencePointer(copy.ParameterSequencePointer)
+    ParameterSequencePointer(copy.ParameterSequencePointer),
+    ParameterValueNumber(copy.ParameterValueNumber)
 {
 }
 
@@ -51,11 +55,13 @@ DRTOverrideSequence::Item &DRTOverrideSequence::Item::operator=(const Item &copy
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
+        OperatorIdentificationSequence = copy.OperatorIdentificationSequence;
         OperatorsName = copy.OperatorsName;
         OverrideParameterPointer = copy.OverrideParameterPointer;
         OverrideReason = copy.OverrideReason;
         ParameterItemIndex = copy.ParameterItemIndex;
         ParameterSequencePointer = copy.ParameterSequencePointer;
+        ParameterValueNumber = copy.ParameterValueNumber;
     }
     return *this;
 }
@@ -69,7 +75,9 @@ void DRTOverrideSequence::Item::clear()
         ParameterSequencePointer.clear();
         OverrideParameterPointer.clear();
         ParameterItemIndex.clear();
+        ParameterValueNumber.clear();
         OperatorsName.clear();
+        OperatorIdentificationSequence.clear();
         OverrideReason.clear();
     }
 }
@@ -80,7 +88,9 @@ OFBool DRTOverrideSequence::Item::isEmpty()
     return ParameterSequencePointer.isEmpty() &&
            OverrideParameterPointer.isEmpty() &&
            ParameterItemIndex.isEmpty() &&
+           ParameterValueNumber.isEmpty() &&
            OperatorsName.isEmpty() &&
+           OperatorIdentificationSequence.isEmpty() &&
            OverrideReason.isEmpty();
 }
 
@@ -101,7 +111,9 @@ OFCondition DRTOverrideSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ParameterSequencePointer, "1", "1", "OverrideSequence");
         getAndCheckElementFromDataset(item, OverrideParameterPointer, "1", "1", "OverrideSequence");
         getAndCheckElementFromDataset(item, ParameterItemIndex, "1", "1", "OverrideSequence");
+        getAndCheckElementFromDataset(item, ParameterValueNumber, "1", "3", "OverrideSequence");
         getAndCheckElementFromDataset(item, OperatorsName, "1-n", "2", "OverrideSequence");
+        OperatorIdentificationSequence.read(item, "1-n", "3", "OverrideSequence");
         getAndCheckElementFromDataset(item, OverrideReason, "1", "3", "OverrideSequence");
         result = EC_Normal;
     }
@@ -118,7 +130,9 @@ OFCondition DRTOverrideSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmAttributeTag(ParameterSequencePointer), "1", "1", "OverrideSequence");
         addElementToDataset(result, item, new DcmAttributeTag(OverrideParameterPointer), "1", "1", "OverrideSequence");
         addElementToDataset(result, item, new DcmIntegerString(ParameterItemIndex), "1", "1", "OverrideSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(ParameterValueNumber), "1", "3", "OverrideSequence");
         addElementToDataset(result, item, new DcmPersonName(OperatorsName), "1-n", "2", "OverrideSequence");
+        if (result.good()) result = OperatorIdentificationSequence.write(item, "1-n", "3", "OverrideSequence");
         addElementToDataset(result, item, new DcmShortText(OverrideReason), "1", "3", "OverrideSequence");
     }
     return result;
@@ -179,6 +193,15 @@ OFCondition DRTOverrideSequence::Item::getParameterSequencePointer(OFString &val
 }
 
 
+OFCondition DRTOverrideSequence::Item::getParameterValueNumber(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, ParameterValueNumber).getUint16(value, pos);
+}
+
+
 OFCondition DRTOverrideSequence::Item::setOperatorsName(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -244,6 +267,15 @@ OFCondition DRTOverrideSequence::Item::setParameterSequencePointer(const OFStrin
 }
 
 
+OFCondition DRTOverrideSequence::Item::setParameterValueNumber(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ParameterValueNumber.putUint16(value, pos);
+}
+
+
 // --- sequence class ---
 
 DRTOverrideSequence::DRTOverrideSequence(const OFBool emptyDefaultSequence)
@@ -347,7 +379,7 @@ OFBool DRTOverrideSequence::isValid() const
 }
 
 
-unsigned long DRTOverrideSequence::getNumberOfItems() const
+size_t DRTOverrideSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -377,12 +409,12 @@ OFCondition DRTOverrideSequence::gotoNextItem()
 }
 
 
-OFCondition DRTOverrideSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTOverrideSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -397,12 +429,12 @@ OFCondition DRTOverrideSequence::gotoItem(const unsigned long num, OFListIterato
 }
 
 
-OFCondition DRTOverrideSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTOverrideSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -417,7 +449,7 @@ OFCondition DRTOverrideSequence::gotoItem(const unsigned long num, OFListConstIt
 }
 
 
-OFCondition DRTOverrideSequence::gotoItem(const unsigned long num)
+OFCondition DRTOverrideSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -453,7 +485,7 @@ const DRTOverrideSequence::Item &DRTOverrideSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTOverrideSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTOverrideSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -463,7 +495,7 @@ OFCondition DRTOverrideSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTOverrideSequence::Item &DRTOverrideSequence::getItem(const unsigned long num)
+DRTOverrideSequence::Item &DRTOverrideSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -473,7 +505,7 @@ DRTOverrideSequence::Item &DRTOverrideSequence::getItem(const unsigned long num)
 }
 
 
-const DRTOverrideSequence::Item &DRTOverrideSequence::getItem(const unsigned long num) const
+const DRTOverrideSequence::Item &DRTOverrideSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -483,13 +515,13 @@ const DRTOverrideSequence::Item &DRTOverrideSequence::getItem(const unsigned lon
 }
 
 
-DRTOverrideSequence::Item &DRTOverrideSequence::operator[](const unsigned long num)
+DRTOverrideSequence::Item &DRTOverrideSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTOverrideSequence::Item &DRTOverrideSequence::operator[](const unsigned long num) const
+const DRTOverrideSequence::Item &DRTOverrideSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -512,7 +544,7 @@ OFCondition DRTOverrideSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTOverrideSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTOverrideSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -535,7 +567,7 @@ OFCondition DRTOverrideSequence::insertItem(const unsigned long pos, Item *&item
 }
 
 
-OFCondition DRTOverrideSequence::removeItem(const unsigned long pos)
+OFCondition DRTOverrideSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpbcs.cc b/dcmrt/libsrc/drtpbcs.cc
index 2f41032..97bb0e1 100644
--- a/dcmrt/libsrc/drtpbcs.cc
+++ b/dcmrt/libsrc/drtpbcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientBreedCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTPatientBreedCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTPatientBreedCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::Item::operator=(
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTPatientBreedCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTPatientBreedCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTPatientBreedCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PatientBreedCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PatientBreedCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTPatientBreedCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PatientBreedCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PatientBreedCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTPatientBreedCodeSequence::Item::getMappingResource(OFString &valu
 }
 
 
+OFCondition DRTPatientBreedCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTPatientBreedCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTPatientBreedCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTPatientBreedCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPatientBreedCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTPatientBreedCodeSequence::isValid() const
 }
 
 
-unsigned long DRTPatientBreedCodeSequence::getNumberOfItems() const
+size_t DRTPatientBreedCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTPatientBreedCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPatientBreedCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPatientBreedCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTPatientBreedCodeSequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTPatientBreedCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPatientBreedCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTPatientBreedCodeSequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTPatientBreedCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTPatientBreedCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::getCurrent
 }
 
 
-OFCondition DRTPatientBreedCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPatientBreedCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTPatientBreedCodeSequence::getItem(const unsigned long num, Item *
 }
 
 
-DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::getItem(const unsigned long num)
+DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::getItem(const un
 }
 
 
-const DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::getItem(const unsigned long num) const
+const DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::getItem(co
 }
 
 
-DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::operator[](const unsigned long num)
+DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::operator[](const unsigned long num) const
+const DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTPatientBreedCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPatientBreedCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPatientBreedCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTPatientBreedCodeSequence::insertItem(const unsigned long pos, Ite
 }
 
 
-OFCondition DRTPatientBreedCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTPatientBreedCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpcs.cc b/dcmrt/libsrc/drtpcs.cc
index d210544..964aa26 100644
--- a/dcmrt/libsrc/drtpcs.cc
+++ b/dcmrt/libsrc/drtpcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTProcedureCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTProcedureCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::Item::operator=(const
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTProcedureCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTProcedureCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTProcedureCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ProcedureCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTProcedureCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ProcedureCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTProcedureCodeSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTProcedureCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTProcedureCodeSequence::Item::setMappingResource(const OFString &v
 }
 
 
+OFCondition DRTProcedureCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTProcedureCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTProcedureCodeSequence::isValid() const
 }
 
 
-unsigned long DRTProcedureCodeSequence::getNumberOfItems() const
+size_t DRTProcedureCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTProcedureCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTProcedureCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTProcedureCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTProcedureCodeSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTProcedureCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTProcedureCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTProcedureCodeSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTProcedureCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTProcedureCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::getCurrentItem()
 }
 
 
-OFCondition DRTProcedureCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTProcedureCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTProcedureCodeSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::getItem(const unsigned long num)
+DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::getItem(const unsigned
 }
 
 
-const DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::getItem(const unsigned long num) const
+const DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::getItem(const un
 }
 
 
-DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::operator[](const unsigned long num)
+DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::operator[](const unsigned long num) const
+const DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTProcedureCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTProcedureCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTProcedureCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTProcedureCodeSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTProcedureCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTProcedureCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpcxs.cc b/dcmrt/libsrc/drtpcxs.cc
index b95cebd..3ae55f5 100644
--- a/dcmrt/libsrc/drtpcxs.cc
+++ b/dcmrt/libsrc/drtpcxs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTProtocolContextSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -553,7 +553,7 @@ OFBool DRTProtocolContextSequence::isValid() const
 }
 
 
-unsigned long DRTProtocolContextSequence::getNumberOfItems() const
+size_t DRTProtocolContextSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -583,12 +583,12 @@ OFCondition DRTProtocolContextSequence::gotoNextItem()
 }
 
 
-OFCondition DRTProtocolContextSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTProtocolContextSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -603,12 +603,12 @@ OFCondition DRTProtocolContextSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTProtocolContextSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTProtocolContextSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -623,7 +623,7 @@ OFCondition DRTProtocolContextSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTProtocolContextSequence::gotoItem(const unsigned long num)
+OFCondition DRTProtocolContextSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -659,7 +659,7 @@ const DRTProtocolContextSequence::Item &DRTProtocolContextSequence::getCurrentIt
 }
 
 
-OFCondition DRTProtocolContextSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTProtocolContextSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -669,7 +669,7 @@ OFCondition DRTProtocolContextSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTProtocolContextSequence::Item &DRTProtocolContextSequence::getItem(const unsigned long num)
+DRTProtocolContextSequence::Item &DRTProtocolContextSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -679,7 +679,7 @@ DRTProtocolContextSequence::Item &DRTProtocolContextSequence::getItem(const unsi
 }
 
 
-const DRTProtocolContextSequence::Item &DRTProtocolContextSequence::getItem(const unsigned long num) const
+const DRTProtocolContextSequence::Item &DRTProtocolContextSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -689,13 +689,13 @@ const DRTProtocolContextSequence::Item &DRTProtocolContextSequence::getItem(cons
 }
 
 
-DRTProtocolContextSequence::Item &DRTProtocolContextSequence::operator[](const unsigned long num)
+DRTProtocolContextSequence::Item &DRTProtocolContextSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTProtocolContextSequence::Item &DRTProtocolContextSequence::operator[](const unsigned long num) const
+const DRTProtocolContextSequence::Item &DRTProtocolContextSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -718,7 +718,7 @@ OFCondition DRTProtocolContextSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTProtocolContextSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTProtocolContextSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -741,7 +741,7 @@ OFCondition DRTProtocolContextSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTProtocolContextSequence::removeItem(const unsigned long pos)
+OFCondition DRTProtocolContextSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpdecs.cc b/dcmrt/libsrc/drtpdecs.cc
index 0238804..a919aa9 100644
--- a/dcmrt/libsrc/drtpdecs.cc
+++ b/dcmrt/libsrc/drtpdecs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPrivateDataElementCharacteristicsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -25,6 +25,7 @@ DRTPrivateDataElementCharacteristicsSequence::Item::Item(const OFBool emptyDefau
     DeidentificationActionSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     NonidentifyingPrivateElements(DCM_NonidentifyingPrivateElements),
     PrivateCreatorReference(DCM_PrivateCreatorReference),
+    PrivateDataElementDefinitionSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PrivateGroupReference(DCM_PrivateGroupReference)
 {
 }
@@ -36,6 +37,7 @@ DRTPrivateDataElementCharacteristicsSequence::Item::Item(const Item &copy)
     DeidentificationActionSequence(copy.DeidentificationActionSequence),
     NonidentifyingPrivateElements(copy.NonidentifyingPrivateElements),
     PrivateCreatorReference(copy.PrivateCreatorReference),
+    PrivateDataElementDefinitionSequence(copy.PrivateDataElementDefinitionSequence),
     PrivateGroupReference(copy.PrivateGroupReference)
 {
 }
@@ -55,6 +57,7 @@ DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharact
         DeidentificationActionSequence = copy.DeidentificationActionSequence;
         NonidentifyingPrivateElements = copy.NonidentifyingPrivateElements;
         PrivateCreatorReference = copy.PrivateCreatorReference;
+        PrivateDataElementDefinitionSequence = copy.PrivateDataElementDefinitionSequence;
         PrivateGroupReference = copy.PrivateGroupReference;
     }
     return *this;
@@ -68,6 +71,7 @@ void DRTPrivateDataElementCharacteristicsSequence::Item::clear()
         /* clear all DICOM attributes */
         PrivateGroupReference.clear();
         PrivateCreatorReference.clear();
+        PrivateDataElementDefinitionSequence.clear();
         BlockIdentifyingInformationStatus.clear();
         NonidentifyingPrivateElements.clear();
         DeidentificationActionSequence.clear();
@@ -79,6 +83,7 @@ OFBool DRTPrivateDataElementCharacteristicsSequence::Item::isEmpty()
 {
     return PrivateGroupReference.isEmpty() &&
            PrivateCreatorReference.isEmpty() &&
+           PrivateDataElementDefinitionSequence.isEmpty() &&
            BlockIdentifyingInformationStatus.isEmpty() &&
            NonidentifyingPrivateElements.isEmpty() &&
            DeidentificationActionSequence.isEmpty();
@@ -100,6 +105,7 @@ OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::read(DcmItem &it
         clear();
         getAndCheckElementFromDataset(item, PrivateGroupReference, "1", "1", "PrivateDataElementCharacteristicsSequence");
         getAndCheckElementFromDataset(item, PrivateCreatorReference, "1", "1", "PrivateDataElementCharacteristicsSequence");
+        PrivateDataElementDefinitionSequence.read(item, "1-n", "3", "PrivateDataElementCharacteristicsSequence");
         getAndCheckElementFromDataset(item, BlockIdentifyingInformationStatus, "1", "1", "PrivateDataElementCharacteristicsSequence");
         getAndCheckElementFromDataset(item, NonidentifyingPrivateElements, "1-n", "1C", "PrivateDataElementCharacteristicsSequence");
         DeidentificationActionSequence.read(item, "1-n", "3", "PrivateDataElementCharacteristicsSequence");
@@ -117,6 +123,7 @@ OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::write(DcmItem &i
         result = EC_Normal;
         addElementToDataset(result, item, new DcmUnsignedShort(PrivateGroupReference), "1", "1", "PrivateDataElementCharacteristicsSequence");
         addElementToDataset(result, item, new DcmLongString(PrivateCreatorReference), "1", "1", "PrivateDataElementCharacteristicsSequence");
+        if (result.good()) result = PrivateDataElementDefinitionSequence.write(item, "1-n", "3", "PrivateDataElementCharacteristicsSequence");
         addElementToDataset(result, item, new DcmCodeString(BlockIdentifyingInformationStatus), "1", "1", "PrivateDataElementCharacteristicsSequence");
         addElementToDataset(result, item, new DcmUnsignedShort(NonidentifyingPrivateElements), "1-n", "1C", "PrivateDataElementCharacteristicsSequence");
         if (result.good()) result = DeidentificationActionSequence.write(item, "1-n", "3", "PrivateDataElementCharacteristicsSequence");
@@ -308,7 +315,7 @@ OFBool DRTPrivateDataElementCharacteristicsSequence::isValid() const
 }
 
 
-unsigned long DRTPrivateDataElementCharacteristicsSequence::getNumberOfItems() const
+size_t DRTPrivateDataElementCharacteristicsSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -338,12 +345,12 @@ OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -358,12 +365,12 @@ OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const unsigne
 }
 
 
-OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -378,7 +385,7 @@ OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const unsigne
 }
 
 
-OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const unsigned long num)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -414,7 +421,7 @@ const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementC
 }
 
 
-OFCondition DRTPrivateDataElementCharacteristicsSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -424,7 +431,7 @@ OFCondition DRTPrivateDataElementCharacteristicsSequence::getItem(const unsigned
 }
 
 
-DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getItem(const unsigned long num)
+DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -434,7 +441,7 @@ DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharact
 }
 
 
-const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getItem(const unsigned long num) const
+const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -444,13 +451,13 @@ const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementC
 }
 
 
-DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::operator[](const unsigned long num)
+DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::operator[](const unsigned long num) const
+const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -473,7 +480,7 @@ OFCondition DRTPrivateDataElementCharacteristicsSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPrivateDataElementCharacteristicsSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -496,7 +503,7 @@ OFCondition DRTPrivateDataElementCharacteristicsSequence::insertItem(const unsig
 }
 
 
-OFCondition DRTPrivateDataElementCharacteristicsSequence::removeItem(const unsigned long pos)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpdeds.cc b/dcmrt/libsrc/drtpdeds.cc
new file mode 100644
index 0000000..bad9daf
--- /dev/null
+++ b/dcmrt/libsrc/drtpdeds.cc
@@ -0,0 +1,764 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTPrivateDataElementDefinitionSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtpdeds.h"
+
+
+// --- item class ---
+
+DRTPrivateDataElementDefinitionSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    PrivateDataElement(DCM_PrivateDataElement),
+    PrivateDataElementDescription(DCM_PrivateDataElementDescription),
+    PrivateDataElementEncoding(DCM_PrivateDataElementEncoding),
+    PrivateDataElementKeyword(DCM_PrivateDataElementKeyword),
+    PrivateDataElementName(DCM_PrivateDataElementName),
+    PrivateDataElementNumberOfItems(DCM_PrivateDataElementNumberOfItems),
+    PrivateDataElementValueMultiplicity(DCM_PrivateDataElementValueMultiplicity),
+    PrivateDataElementValueRepresentation(DCM_PrivateDataElementValueRepresentation),
+    RetrieveURI(DCM_RetrieveURI)
+{
+}
+
+
+DRTPrivateDataElementDefinitionSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    PrivateDataElement(copy.PrivateDataElement),
+    PrivateDataElementDescription(copy.PrivateDataElementDescription),
+    PrivateDataElementEncoding(copy.PrivateDataElementEncoding),
+    PrivateDataElementKeyword(copy.PrivateDataElementKeyword),
+    PrivateDataElementName(copy.PrivateDataElementName),
+    PrivateDataElementNumberOfItems(copy.PrivateDataElementNumberOfItems),
+    PrivateDataElementValueMultiplicity(copy.PrivateDataElementValueMultiplicity),
+    PrivateDataElementValueRepresentation(copy.PrivateDataElementValueRepresentation),
+    RetrieveURI(copy.RetrieveURI)
+{
+}
+
+
+DRTPrivateDataElementDefinitionSequence::Item::~Item()
+{
+}
+
+
+DRTPrivateDataElementDefinitionSequence::Item &DRTPrivateDataElementDefinitionSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        PrivateDataElement = copy.PrivateDataElement;
+        PrivateDataElementDescription = copy.PrivateDataElementDescription;
+        PrivateDataElementEncoding = copy.PrivateDataElementEncoding;
+        PrivateDataElementKeyword = copy.PrivateDataElementKeyword;
+        PrivateDataElementName = copy.PrivateDataElementName;
+        PrivateDataElementNumberOfItems = copy.PrivateDataElementNumberOfItems;
+        PrivateDataElementValueMultiplicity = copy.PrivateDataElementValueMultiplicity;
+        PrivateDataElementValueRepresentation = copy.PrivateDataElementValueRepresentation;
+        RetrieveURI = copy.RetrieveURI;
+    }
+    return *this;
+}
+
+
+void DRTPrivateDataElementDefinitionSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        PrivateDataElement.clear();
+        PrivateDataElementValueMultiplicity.clear();
+        PrivateDataElementValueRepresentation.clear();
+        PrivateDataElementNumberOfItems.clear();
+        PrivateDataElementKeyword.clear();
+        PrivateDataElementName.clear();
+        PrivateDataElementDescription.clear();
+        PrivateDataElementEncoding.clear();
+        RetrieveURI.clear();
+    }
+}
+
+
+OFBool DRTPrivateDataElementDefinitionSequence::Item::isEmpty()
+{
+    return PrivateDataElement.isEmpty() &&
+           PrivateDataElementValueMultiplicity.isEmpty() &&
+           PrivateDataElementValueRepresentation.isEmpty() &&
+           PrivateDataElementNumberOfItems.isEmpty() &&
+           PrivateDataElementKeyword.isEmpty() &&
+           PrivateDataElementName.isEmpty() &&
+           PrivateDataElementDescription.isEmpty() &&
+           PrivateDataElementEncoding.isEmpty() &&
+           RetrieveURI.isEmpty();
+}
+
+
+OFBool DRTPrivateDataElementDefinitionSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, PrivateDataElement, "1", "1", "PrivateDataElementDefinitionSequence");
+        getAndCheckElementFromDataset(item, PrivateDataElementValueMultiplicity, "1-3", "1", "PrivateDataElementDefinitionSequence");
+        getAndCheckElementFromDataset(item, PrivateDataElementValueRepresentation, "1", "1", "PrivateDataElementDefinitionSequence");
+        getAndCheckElementFromDataset(item, PrivateDataElementNumberOfItems, "1-2", "1C", "PrivateDataElementDefinitionSequence");
+        getAndCheckElementFromDataset(item, PrivateDataElementKeyword, "1", "1", "PrivateDataElementDefinitionSequence");
+        getAndCheckElementFromDataset(item, PrivateDataElementName, "1", "1", "PrivateDataElementDefinitionSequence");
+        getAndCheckElementFromDataset(item, PrivateDataElementDescription, "1", "3", "PrivateDataElementDefinitionSequence");
+        getAndCheckElementFromDataset(item, PrivateDataElementEncoding, "1", "3", "PrivateDataElementDefinitionSequence");
+        getAndCheckElementFromDataset(item, RetrieveURI, "1", "3", "PrivateDataElementDefinitionSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUnsignedShort(PrivateDataElement), "1", "1", "PrivateDataElementDefinitionSequence");
+        addElementToDataset(result, item, new DcmUnsignedLong(PrivateDataElementValueMultiplicity), "1-3", "1", "PrivateDataElementDefinitionSequence");
+        addElementToDataset(result, item, new DcmCodeString(PrivateDataElementValueRepresentation), "1", "1", "PrivateDataElementDefinitionSequence");
+        addElementToDataset(result, item, new DcmUnsignedLong(PrivateDataElementNumberOfItems), "1-2", "1C", "PrivateDataElementDefinitionSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(PrivateDataElementKeyword), "1", "1", "PrivateDataElementDefinitionSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(PrivateDataElementName), "1", "1", "PrivateDataElementDefinitionSequence");
+        addElementToDataset(result, item, new DcmUnlimitedText(PrivateDataElementDescription), "1", "3", "PrivateDataElementDefinitionSequence");
+        addElementToDataset(result, item, new DcmUnlimitedText(PrivateDataElementEncoding), "1", "3", "PrivateDataElementDefinitionSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(RetrieveURI), "1", "3", "PrivateDataElementDefinitionSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::getPrivateDataElement(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, PrivateDataElement).getUint16(value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::getPrivateDataElementDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PrivateDataElementDescription, value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::getPrivateDataElementEncoding(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PrivateDataElementEncoding, value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::getPrivateDataElementKeyword(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PrivateDataElementKeyword, value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::getPrivateDataElementName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PrivateDataElementName, value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::getPrivateDataElementNumberOfItems(Uint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedLong &, PrivateDataElementNumberOfItems).getUint32(value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::getPrivateDataElementValueMultiplicity(Uint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedLong &, PrivateDataElementValueMultiplicity).getUint32(value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::getPrivateDataElementValueRepresentation(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PrivateDataElementValueRepresentation, value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::getRetrieveURI(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(RetrieveURI, value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::setPrivateDataElement(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return PrivateDataElement.putUint16(value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::setPrivateDataElementDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PrivateDataElementDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::setPrivateDataElementEncoding(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PrivateDataElementEncoding.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::setPrivateDataElementKeyword(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = PrivateDataElementKeyword.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::setPrivateDataElementName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = PrivateDataElementName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::setPrivateDataElementNumberOfItems(const Uint32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return PrivateDataElementNumberOfItems.putUint32(value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::setPrivateDataElementValueMultiplicity(const Uint32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return PrivateDataElementValueMultiplicity.putUint32(value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::setPrivateDataElementValueRepresentation(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = PrivateDataElementValueRepresentation.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::Item::setRetrieveURI(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = RetrieveURI.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTPrivateDataElementDefinitionSequence::DRTPrivateDataElementDefinitionSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTPrivateDataElementDefinitionSequence::DRTPrivateDataElementDefinitionSequence(const DRTPrivateDataElementDefinitionSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTPrivateDataElementDefinitionSequence &DRTPrivateDataElementDefinitionSequence::operator=(const DRTPrivateDataElementDefinitionSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTPrivateDataElementDefinitionSequence::~DRTPrivateDataElementDefinitionSequence()
+{
+    clear();
+}
+
+
+void DRTPrivateDataElementDefinitionSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTPrivateDataElementDefinitionSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTPrivateDataElementDefinitionSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTPrivateDataElementDefinitionSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        ++CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTPrivateDataElementDefinitionSequence::Item &DRTPrivateDataElementDefinitionSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPrivateDataElementDefinitionSequence::Item &DRTPrivateDataElementDefinitionSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTPrivateDataElementDefinitionSequence::Item &DRTPrivateDataElementDefinitionSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPrivateDataElementDefinitionSequence::Item &DRTPrivateDataElementDefinitionSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTPrivateDataElementDefinitionSequence::Item &DRTPrivateDataElementDefinitionSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTPrivateDataElementDefinitionSequence::Item &DRTPrivateDataElementDefinitionSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::read(DcmItem &dataset,
+                                                          const OFString &card,
+                                                          const OFString &type,
+                                                          const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_PrivateDataElementDefinitionSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_PrivateDataElementDefinitionSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementDefinitionSequence::write(DcmItem &dataset,
+                                                           const OFString &card,
+                                                           const OFString &type,
+                                                           const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PrivateDataElementDefinitionSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtpfms.cc b/dcmrt/libsrc/drtpfms.cc
index 0db5bd3..62ae998 100644
--- a/dcmrt/libsrc/drtpfms.cc
+++ b/dcmrt/libsrc/drtpfms.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPrimaryFluenceModeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTPrimaryFluenceModeSequence::isValid() const
 }
 
 
-unsigned long DRTPrimaryFluenceModeSequence::getNumberOfItems() const
+size_t DRTPrimaryFluenceModeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTPrimaryFluenceModeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPrimaryFluenceModeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPrimaryFluenceModeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTPrimaryFluenceModeSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTPrimaryFluenceModeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPrimaryFluenceModeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTPrimaryFluenceModeSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTPrimaryFluenceModeSequence::gotoItem(const unsigned long num)
+OFCondition DRTPrimaryFluenceModeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTPrimaryFluenceModeSequence::Item &DRTPrimaryFluenceModeSequence::getCur
 }
 
 
-OFCondition DRTPrimaryFluenceModeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPrimaryFluenceModeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTPrimaryFluenceModeSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTPrimaryFluenceModeSequence::Item &DRTPrimaryFluenceModeSequence::getItem(const unsigned long num)
+DRTPrimaryFluenceModeSequence::Item &DRTPrimaryFluenceModeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTPrimaryFluenceModeSequence::Item &DRTPrimaryFluenceModeSequence::getItem(cons
 }
 
 
-const DRTPrimaryFluenceModeSequence::Item &DRTPrimaryFluenceModeSequence::getItem(const unsigned long num) const
+const DRTPrimaryFluenceModeSequence::Item &DRTPrimaryFluenceModeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTPrimaryFluenceModeSequence::Item &DRTPrimaryFluenceModeSequence::getIte
 }
 
 
-DRTPrimaryFluenceModeSequence::Item &DRTPrimaryFluenceModeSequence::operator[](const unsigned long num)
+DRTPrimaryFluenceModeSequence::Item &DRTPrimaryFluenceModeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPrimaryFluenceModeSequence::Item &DRTPrimaryFluenceModeSequence::operator[](const unsigned long num) const
+const DRTPrimaryFluenceModeSequence::Item &DRTPrimaryFluenceModeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTPrimaryFluenceModeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPrimaryFluenceModeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPrimaryFluenceModeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTPrimaryFluenceModeSequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTPrimaryFluenceModeSequence::removeItem(const unsigned long pos)
+OFCondition DRTPrimaryFluenceModeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpics.cc b/dcmrt/libsrc/drtpics.cc
index 77b1ad8..18c9066 100644
--- a/dcmrt/libsrc/drtpics.cc
+++ b/dcmrt/libsrc/drtpics.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPersonIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTPersonIdentificationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTPersonIdentificationCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTPersonIdentificationCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTPersonIdentificationCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PersonIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PersonIdentificationCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PersonIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PersonIdentificationCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResource(OFStri
 }
 
 
+OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResource(const
 }
 
 
+OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTPersonIdentificationCodeSequence::isValid() const
 }
 
 
-unsigned long DRTPersonIdentificationCodeSequence::getNumberOfItems() const
+size_t DRTPersonIdentificationCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTPersonIdentificationCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const unsigned long nu
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const unsigned long nu
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequ
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPersonIdentificationCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTPersonIdentificationCodeSequence::getItem(const unsigned long num
 }
 
 
-DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::getItem(const unsigned long num)
+DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::
 }
 
 
-const DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::getItem(const unsigned long num) const
+const DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequ
 }
 
 
-DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::operator[](const unsigned long num)
+DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::operator[](const unsigned long num) const
+const DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTPersonIdentificationCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPersonIdentificationCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTPersonIdentificationCodeSequence::insertItem(const unsigned long
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTPersonIdentificationCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtplan.cc b/dcmrt/libsrc/drtplan.cc
index 63968f1..bb0e199 100644
--- a/dcmrt/libsrc/drtplan.cc
+++ b/dcmrt/libsrc/drtplan.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -23,6 +23,9 @@ DRTPlanIOD::DRTPlanIOD()
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
     PatientBirthDate(DCM_PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(DCM_PatientAlternativeCalendar),
     PatientSex(DCM_PatientSex),
     ReferencedPatientPhotoSequence(),
     QualityControlSubject(DCM_QualityControlSubject),
@@ -38,12 +41,19 @@ DRTPlanIOD::DRTPlanIOD()
     PatientBreedDescription(DCM_PatientBreedDescription),
     PatientBreedCodeSequence(),
     BreedRegistrationSequence(),
+    StrainDescription(DCM_StrainDescription),
+    StrainNomenclature(DCM_StrainNomenclature),
+    StrainCodeSequence(),
+    StrainAdditionalInformation(DCM_StrainAdditionalInformation),
+    StrainStockSequence(),
     ResponsiblePerson(DCM_ResponsiblePerson),
     ResponsiblePersonRole(DCM_ResponsiblePersonRole),
     ResponsibleOrganization(DCM_ResponsibleOrganization),
     PatientIdentityRemoved(DCM_PatientIdentityRemoved),
     DeidentificationMethod(DCM_DeidentificationMethod),
     DeidentificationMethodCodeSequence(),
+    SourcePatientGroupIdentificationSequence(),
+    GroupOfPatientsIdentificationSequence(),
     ClinicalTrialSponsorName(DCM_ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(DCM_ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(DCM_ClinicalTrialProtocolName),
@@ -77,7 +87,16 @@ DRTPlanIOD::DRTPlanIOD()
     PatientAge(DCM_PatientAge),
     PatientSize(DCM_PatientSize),
     PatientWeight(DCM_PatientWeight),
+    PatientBodyMassIndex(DCM_PatientBodyMassIndex),
+    MeasuredAPDimension(DCM_MeasuredAPDimension),
+    MeasuredLateralDimension(DCM_MeasuredLateralDimension),
     PatientSizeCodeSequence(),
+    MedicalAlerts(DCM_MedicalAlerts),
+    Allergies(DCM_Allergies),
+    SmokingStatus(DCM_SmokingStatus),
+    PregnancyStatus(DCM_PregnancyStatus),
+    LastMenstrualDate(DCM_LastMenstrualDate),
+    PatientState(DCM_PatientState),
     Occupation(DCM_Occupation),
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
@@ -97,6 +116,7 @@ DRTPlanIOD::DRTPlanIOD()
     SeriesDescription(DCM_SeriesDescription),
     SeriesDescriptionCodeSequence(),
     OperatorsName(DCM_OperatorsName),
+    OperatorIdentificationSequence(),
     ReferencedPerformedProcedureStepSequence(),
     RequestAttributesSequence(),
     PerformedProcedureStepID(DCM_PerformedProcedureStepID),
@@ -121,6 +141,7 @@ DRTPlanIOD::DRTPlanIOD()
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
+    UDISequence(),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -138,6 +159,7 @@ DRTPlanIOD::DRTPlanIOD()
     ReferencedStructureSetSequence(),
     ReferencedDoseSequence(),
     ReferencedRTPlanSequence(),
+    FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(DCM_FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix),
     PrescriptionDescription(DCM_PrescriptionDescription),
     DoseReferenceSequence(),
     ToleranceTableSequence(),
@@ -153,6 +175,12 @@ DRTPlanIOD::DRTPlanIOD()
     ReviewDate(DCM_ReviewDate),
     ReviewTime(DCM_ReviewTime),
     ReviewerName(DCM_ReviewerName),
+    ReferencedImageSequence(),
+    ReferencedInstanceSequence(),
+    DerivationDescription(DCM_DerivationDescription),
+    DerivationCodeSequence(),
+    SourceImageSequence(),
+    SourceInstanceSequence(),
     SOPClassUID(DCM_SOPClassUID),
     SOPInstanceUID(DCM_SOPInstanceUID),
     SpecificCharacterSet(DCM_SpecificCharacterSet),
@@ -163,6 +191,8 @@ DRTPlanIOD::DRTPlanIOD()
     RelatedGeneralSOPClassUID(DCM_RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(DCM_OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(),
+    ContextGroupIdentificationSequence(),
+    MappingResourceIdentificationSequence(),
     TimezoneOffsetFromUTC(DCM_TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(),
     SOPInstanceStatus(DCM_SOPInstanceStatus),
@@ -193,6 +223,9 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
     PatientBirthDate(copy.PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(copy.PatientAlternativeCalendar),
     PatientSex(copy.PatientSex),
     ReferencedPatientPhotoSequence(copy.ReferencedPatientPhotoSequence),
     QualityControlSubject(copy.QualityControlSubject),
@@ -208,12 +241,19 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     PatientBreedDescription(copy.PatientBreedDescription),
     PatientBreedCodeSequence(copy.PatientBreedCodeSequence),
     BreedRegistrationSequence(copy.BreedRegistrationSequence),
+    StrainDescription(copy.StrainDescription),
+    StrainNomenclature(copy.StrainNomenclature),
+    StrainCodeSequence(copy.StrainCodeSequence),
+    StrainAdditionalInformation(copy.StrainAdditionalInformation),
+    StrainStockSequence(copy.StrainStockSequence),
     ResponsiblePerson(copy.ResponsiblePerson),
     ResponsiblePersonRole(copy.ResponsiblePersonRole),
     ResponsibleOrganization(copy.ResponsibleOrganization),
     PatientIdentityRemoved(copy.PatientIdentityRemoved),
     DeidentificationMethod(copy.DeidentificationMethod),
     DeidentificationMethodCodeSequence(copy.DeidentificationMethodCodeSequence),
+    SourcePatientGroupIdentificationSequence(copy.SourcePatientGroupIdentificationSequence),
+    GroupOfPatientsIdentificationSequence(copy.GroupOfPatientsIdentificationSequence),
     ClinicalTrialSponsorName(copy.ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(copy.ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(copy.ClinicalTrialProtocolName),
@@ -247,7 +287,16 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     PatientAge(copy.PatientAge),
     PatientSize(copy.PatientSize),
     PatientWeight(copy.PatientWeight),
+    PatientBodyMassIndex(copy.PatientBodyMassIndex),
+    MeasuredAPDimension(copy.MeasuredAPDimension),
+    MeasuredLateralDimension(copy.MeasuredLateralDimension),
     PatientSizeCodeSequence(copy.PatientSizeCodeSequence),
+    MedicalAlerts(copy.MedicalAlerts),
+    Allergies(copy.Allergies),
+    SmokingStatus(copy.SmokingStatus),
+    PregnancyStatus(copy.PregnancyStatus),
+    LastMenstrualDate(copy.LastMenstrualDate),
+    PatientState(copy.PatientState),
     Occupation(copy.Occupation),
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
@@ -267,6 +316,7 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     SeriesDescription(copy.SeriesDescription),
     SeriesDescriptionCodeSequence(copy.SeriesDescriptionCodeSequence),
     OperatorsName(copy.OperatorsName),
+    OperatorIdentificationSequence(copy.OperatorIdentificationSequence),
     ReferencedPerformedProcedureStepSequence(copy.ReferencedPerformedProcedureStepSequence),
     RequestAttributesSequence(copy.RequestAttributesSequence),
     PerformedProcedureStepID(copy.PerformedProcedureStepID),
@@ -291,6 +341,7 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
+    UDISequence(copy.UDISequence),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -308,6 +359,7 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     ReferencedStructureSetSequence(copy.ReferencedStructureSetSequence),
     ReferencedDoseSequence(copy.ReferencedDoseSequence),
     ReferencedRTPlanSequence(copy.ReferencedRTPlanSequence),
+    FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(copy.FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix),
     PrescriptionDescription(copy.PrescriptionDescription),
     DoseReferenceSequence(copy.DoseReferenceSequence),
     ToleranceTableSequence(copy.ToleranceTableSequence),
@@ -323,6 +375,12 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     ReviewDate(copy.ReviewDate),
     ReviewTime(copy.ReviewTime),
     ReviewerName(copy.ReviewerName),
+    ReferencedImageSequence(copy.ReferencedImageSequence),
+    ReferencedInstanceSequence(copy.ReferencedInstanceSequence),
+    DerivationDescription(copy.DerivationDescription),
+    DerivationCodeSequence(copy.DerivationCodeSequence),
+    SourceImageSequence(copy.SourceImageSequence),
+    SourceInstanceSequence(copy.SourceInstanceSequence),
     SOPClassUID(copy.SOPClassUID),
     SOPInstanceUID(copy.SOPInstanceUID),
     SpecificCharacterSet(copy.SpecificCharacterSet),
@@ -333,6 +391,8 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     RelatedGeneralSOPClassUID(copy.RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(copy.OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(copy.CodingSchemeIdentificationSequence),
+    ContextGroupIdentificationSequence(copy.ContextGroupIdentificationSequence),
+    MappingResourceIdentificationSequence(copy.MappingResourceIdentificationSequence),
     TimezoneOffsetFromUTC(copy.TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(copy.ContributingEquipmentSequence),
     SOPInstanceStatus(copy.SOPInstanceStatus),
@@ -369,6 +429,9 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
         PatientBirthDate = copy.PatientBirthDate;
+        PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
+        PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
+        PatientAlternativeCalendar = copy.PatientAlternativeCalendar;
         PatientSex = copy.PatientSex;
         ReferencedPatientPhotoSequence = copy.ReferencedPatientPhotoSequence;
         QualityControlSubject = copy.QualityControlSubject;
@@ -384,12 +447,19 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         PatientBreedDescription = copy.PatientBreedDescription;
         PatientBreedCodeSequence = copy.PatientBreedCodeSequence;
         BreedRegistrationSequence = copy.BreedRegistrationSequence;
+        StrainDescription = copy.StrainDescription;
+        StrainNomenclature = copy.StrainNomenclature;
+        StrainCodeSequence = copy.StrainCodeSequence;
+        StrainAdditionalInformation = copy.StrainAdditionalInformation;
+        StrainStockSequence = copy.StrainStockSequence;
         ResponsiblePerson = copy.ResponsiblePerson;
         ResponsiblePersonRole = copy.ResponsiblePersonRole;
         ResponsibleOrganization = copy.ResponsibleOrganization;
         PatientIdentityRemoved = copy.PatientIdentityRemoved;
         DeidentificationMethod = copy.DeidentificationMethod;
         DeidentificationMethodCodeSequence = copy.DeidentificationMethodCodeSequence;
+        SourcePatientGroupIdentificationSequence = copy.SourcePatientGroupIdentificationSequence;
+        GroupOfPatientsIdentificationSequence = copy.GroupOfPatientsIdentificationSequence;
         ClinicalTrialSponsorName = copy.ClinicalTrialSponsorName;
         ClinicalTrialProtocolID = copy.ClinicalTrialProtocolID;
         ClinicalTrialProtocolName = copy.ClinicalTrialProtocolName;
@@ -423,7 +493,16 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         PatientAge = copy.PatientAge;
         PatientSize = copy.PatientSize;
         PatientWeight = copy.PatientWeight;
+        PatientBodyMassIndex = copy.PatientBodyMassIndex;
+        MeasuredAPDimension = copy.MeasuredAPDimension;
+        MeasuredLateralDimension = copy.MeasuredLateralDimension;
         PatientSizeCodeSequence = copy.PatientSizeCodeSequence;
+        MedicalAlerts = copy.MedicalAlerts;
+        Allergies = copy.Allergies;
+        SmokingStatus = copy.SmokingStatus;
+        PregnancyStatus = copy.PregnancyStatus;
+        LastMenstrualDate = copy.LastMenstrualDate;
+        PatientState = copy.PatientState;
         Occupation = copy.Occupation;
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
@@ -443,6 +522,7 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         SeriesDescription = copy.SeriesDescription;
         SeriesDescriptionCodeSequence = copy.SeriesDescriptionCodeSequence;
         OperatorsName = copy.OperatorsName;
+        OperatorIdentificationSequence = copy.OperatorIdentificationSequence;
         ReferencedPerformedProcedureStepSequence = copy.ReferencedPerformedProcedureStepSequence;
         RequestAttributesSequence = copy.RequestAttributesSequence;
         PerformedProcedureStepID = copy.PerformedProcedureStepID;
@@ -467,6 +547,7 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
+        UDISequence = copy.UDISequence;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -484,6 +565,7 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         ReferencedStructureSetSequence = copy.ReferencedStructureSetSequence;
         ReferencedDoseSequence = copy.ReferencedDoseSequence;
         ReferencedRTPlanSequence = copy.ReferencedRTPlanSequence;
+        FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix = copy.FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix;
         PrescriptionDescription = copy.PrescriptionDescription;
         DoseReferenceSequence = copy.DoseReferenceSequence;
         ToleranceTableSequence = copy.ToleranceTableSequence;
@@ -499,6 +581,12 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         ReviewDate = copy.ReviewDate;
         ReviewTime = copy.ReviewTime;
         ReviewerName = copy.ReviewerName;
+        ReferencedImageSequence = copy.ReferencedImageSequence;
+        ReferencedInstanceSequence = copy.ReferencedInstanceSequence;
+        DerivationDescription = copy.DerivationDescription;
+        DerivationCodeSequence = copy.DerivationCodeSequence;
+        SourceImageSequence = copy.SourceImageSequence;
+        SourceInstanceSequence = copy.SourceInstanceSequence;
         SOPClassUID = copy.SOPClassUID;
         SOPInstanceUID = copy.SOPInstanceUID;
         SpecificCharacterSet = copy.SpecificCharacterSet;
@@ -509,6 +597,8 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         RelatedGeneralSOPClassUID = copy.RelatedGeneralSOPClassUID;
         OriginalSpecializedSOPClassUID = copy.OriginalSpecializedSOPClassUID;
         CodingSchemeIdentificationSequence = copy.CodingSchemeIdentificationSequence;
+        ContextGroupIdentificationSequence = copy.ContextGroupIdentificationSequence;
+        MappingResourceIdentificationSequence = copy.MappingResourceIdentificationSequence;
         TimezoneOffsetFromUTC = copy.TimezoneOffsetFromUTC;
         ContributingEquipmentSequence = copy.ContributingEquipmentSequence;
         SOPInstanceStatus = copy.SOPInstanceStatus;
@@ -540,6 +630,9 @@ void DRTPlanIOD::clear()
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
     PatientBirthDate.clear();
+    PatientBirthDateInAlternativeCalendar.clear();
+    PatientDeathDateInAlternativeCalendar.clear();
+    PatientAlternativeCalendar.clear();
     PatientSex.clear();
     ReferencedPatientPhotoSequence.clear();
     QualityControlSubject.clear();
@@ -555,12 +648,19 @@ void DRTPlanIOD::clear()
     PatientBreedDescription.clear();
     PatientBreedCodeSequence.clear();
     BreedRegistrationSequence.clear();
+    StrainDescription.clear();
+    StrainNomenclature.clear();
+    StrainCodeSequence.clear();
+    StrainAdditionalInformation.clear();
+    StrainStockSequence.clear();
     ResponsiblePerson.clear();
     ResponsiblePersonRole.clear();
     ResponsibleOrganization.clear();
     PatientIdentityRemoved.clear();
     DeidentificationMethod.clear();
     DeidentificationMethodCodeSequence.clear();
+    SourcePatientGroupIdentificationSequence.clear();
+    GroupOfPatientsIdentificationSequence.clear();
     ClinicalTrialSponsorName.clear();
     ClinicalTrialProtocolID.clear();
     ClinicalTrialProtocolName.clear();
@@ -594,7 +694,16 @@ void DRTPlanIOD::clear()
     PatientAge.clear();
     PatientSize.clear();
     PatientWeight.clear();
+    PatientBodyMassIndex.clear();
+    MeasuredAPDimension.clear();
+    MeasuredLateralDimension.clear();
     PatientSizeCodeSequence.clear();
+    MedicalAlerts.clear();
+    Allergies.clear();
+    SmokingStatus.clear();
+    PregnancyStatus.clear();
+    LastMenstrualDate.clear();
+    PatientState.clear();
     Occupation.clear();
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
@@ -614,6 +723,7 @@ void DRTPlanIOD::clear()
     SeriesDescription.clear();
     SeriesDescriptionCodeSequence.clear();
     OperatorsName.clear();
+    OperatorIdentificationSequence.clear();
     ReferencedPerformedProcedureStepSequence.clear();
     RequestAttributesSequence.clear();
     PerformedProcedureStepID.clear();
@@ -638,6 +748,7 @@ void DRTPlanIOD::clear()
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
+    UDISequence.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -655,6 +766,7 @@ void DRTPlanIOD::clear()
     ReferencedStructureSetSequence.clear();
     ReferencedDoseSequence.clear();
     ReferencedRTPlanSequence.clear();
+    FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix.clear();
     PrescriptionDescription.clear();
     DoseReferenceSequence.clear();
     ToleranceTableSequence.clear();
@@ -670,6 +782,12 @@ void DRTPlanIOD::clear()
     ReviewDate.clear();
     ReviewTime.clear();
     ReviewerName.clear();
+    ReferencedImageSequence.clear();
+    ReferencedInstanceSequence.clear();
+    DerivationDescription.clear();
+    DerivationCodeSequence.clear();
+    SourceImageSequence.clear();
+    SourceInstanceSequence.clear();
     SOPClassUID.clear();
     SOPInstanceUID.clear();
     SpecificCharacterSet.clear();
@@ -680,6 +798,8 @@ void DRTPlanIOD::clear()
     RelatedGeneralSOPClassUID.clear();
     OriginalSpecializedSOPClassUID.clear();
     CodingSchemeIdentificationSequence.clear();
+    ContextGroupIdentificationSequence.clear();
+    MappingResourceIdentificationSequence.clear();
     TimezoneOffsetFromUTC.clear();
     ContributingEquipmentSequence.clear();
     SOPInstanceStatus.clear();
@@ -763,6 +883,7 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
+        UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -782,6 +903,7 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset)
         ReferencedStructureSetSequence.read(dataset, "1-n", "1C", "RTGeneralPlanModule");
         ReferencedDoseSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule");
         ReferencedRTPlanSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule");
+        getAndCheckElementFromDataset(dataset, FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix, "16", "3", "RTGeneralPlanModule");
 
         // --- RTPrescriptionModule (U) ---
         getAndCheckElementFromDataset(dataset, PrescriptionDescription, "1", "3", "RTPrescriptionModule");
@@ -831,6 +953,14 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset)
             getAndCheckElementFromDataset(dataset, ReviewerName, "1", "2C", "ApprovalModule");
         }
 
+        // --- GeneralReferenceModule (U) ---
+        ReferencedImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        ReferencedInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        getAndCheckElementFromDataset(dataset, DerivationDescription, "1", "3", "GeneralReferenceModule");
+        DerivationCodeSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+
         // --- SOPCommonModule (M) ---
         getAndCheckElementFromDataset(dataset, SOPClassUID, "1", "1", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, SOPInstanceUID, "1", "1", "SOPCommonModule");
@@ -842,6 +972,8 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, RelatedGeneralSOPClassUID, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, OriginalSpecializedSOPClassUID, "1", "3", "SOPCommonModule");
         CodingSchemeIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        ContextGroupIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        MappingResourceIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, TimezoneOffsetFromUTC, "1", "3", "SOPCommonModule");
         ContributingEquipmentSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         // getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "3", "SOPCommonModule");
@@ -878,6 +1010,9 @@ OFCondition DRTPlanIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientAlternativeCalendar, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientSex, "1", "2", "PatientModule");
     ReferencedPatientPhotoSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, QualityControlSubject, "1", "3", "PatientModule");
@@ -893,12 +1028,19 @@ OFCondition DRTPlanIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientBreedDescription, "1", "2C", "PatientModule");
     PatientBreedCodeSequence.read(dataset, "1-n", "2C", "PatientModule");
     BreedRegistrationSequence.read(dataset, "1-n", "2C", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainDescription, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainNomenclature, "1", "3", "PatientModule");
+    StrainCodeSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainAdditionalInformation, "1", "3", "PatientModule");
+    StrainStockSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePerson, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePersonRole, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsibleOrganization, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientIdentityRemoved, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, DeidentificationMethod, "1-n", "1C", "PatientModule");
     DeidentificationMethodCodeSequence.read(dataset, "1-n", "1C", "PatientModule");
+    SourcePatientGroupIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
+    GroupOfPatientsIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
 
     // --- ClinicalTrialSubjectModule (U) ---
     if (dataset.tagExists(DCM_ClinicalTrialSponsorName) ||
@@ -954,7 +1096,16 @@ OFCondition DRTPlanIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PatientAge, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientSize, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientWeight, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientBodyMassIndex, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredAPDimension, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredLateralDimension, "1", "3", "PatientStudyModule");
         PatientSizeCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MedicalAlerts, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, Allergies, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, SmokingStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PregnancyStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, LastMenstrualDate, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientState, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, Occupation, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
@@ -991,6 +1142,7 @@ OFCondition DRTPlanIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, SeriesDescription, "1", "3", "RTSeriesModule");
         SeriesDescriptionCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, OperatorsName, "1-n", "2", "RTSeriesModule");
+        OperatorIdentificationSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         ReferencedPerformedProcedureStepSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         RequestAttributesSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepID, "1", "3", "RTSeriesModule");
@@ -1029,6 +1181,9 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(PatientAlternativeCalendar), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientSex), "1", "2", "PatientModule");
         if (result.good()) result = ReferencedPatientPhotoSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(QualityControlSubject), "1", "3", "PatientModule");
@@ -1044,12 +1199,19 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientBreedDescription), "1", "2C", "PatientModule");
         if (result.good()) result = PatientBreedCodeSequence.write(dataset, "1-n" ,"2C", "PatientModule");
         if (result.good()) result = BreedRegistrationSequence.write(dataset, "1-n" ,"2C", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedCharacters(StrainDescription), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(StrainNomenclature), "1", "3", "PatientModule");
+        if (result.good()) result = StrainCodeSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedText(StrainAdditionalInformation), "1", "3", "PatientModule");
+        if (result.good()) result = StrainStockSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmPersonName(ResponsiblePerson), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(ResponsiblePersonRole), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(ResponsibleOrganization), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientIdentityRemoved), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(DeidentificationMethod), "1-n", "1C", "PatientModule");
         if (result.good()) result = DeidentificationMethodCodeSequence.write(dataset, "1-n" ,"1C", "PatientModule");
+        if (result.good()) result = SourcePatientGroupIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        if (result.good()) result = GroupOfPatientsIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
 
         // --- ClinicalTrialSubjectModule (U) ---
         if (isClinicalTrialSubjectModulePresent(OFFalse /*complete*/))
@@ -1094,7 +1256,16 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmAgeString(PatientAge), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientSize), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientWeight), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(PatientBodyMassIndex), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredAPDimension), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredLateralDimension), "1", "3", "PatientStudyModule");
             if (result.good()) result = PatientSizeCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(MedicalAlerts), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(Allergies), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmCodeString(SmokingStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnsignedShort(PregnancyStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDate(LastMenstrualDate), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(PatientState), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmShortString(Occupation), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
@@ -1122,6 +1293,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(SeriesDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = SeriesDescriptionCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmPersonName(OperatorsName), "1-n", "2", "RTSeriesModule");
+        if (result.good()) result = OperatorIdentificationSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = ReferencedPerformedProcedureStepSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = RequestAttributesSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortString(PerformedProcedureStepID), "1", "3", "RTSeriesModule");
@@ -1158,6 +1330,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1177,6 +1350,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         if (result.good()) result = ReferencedStructureSetSequence.write(dataset, "1-n" ,"1C", "RTGeneralPlanModule");
         if (result.good()) result = ReferencedDoseSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule");
         if (result.good()) result = ReferencedRTPlanSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule");
+        addElementToDataset(result, dataset, new DcmFloatingPointDouble(FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix), "16", "3", "RTGeneralPlanModule");
 
         // --- RTPrescriptionModule (U) ---
         if (isRTPrescriptionModulePresent(OFFalse /*complete*/))
@@ -1228,6 +1402,17 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmPersonName(ReviewerName), "1", "2C", "ApprovalModule");
         }
 
+        // --- GeneralReferenceModule (U) ---
+        if (isGeneralReferenceModulePresent(OFFalse /*complete*/))
+        {
+            if (result.good()) result = ReferencedImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = ReferencedInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            addElementToDataset(result, dataset, new DcmShortText(DerivationDescription), "1", "3", "GeneralReferenceModule");
+            if (result.good()) result = DerivationCodeSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+        }
+
         // --- SOPCommonModule (M) ---
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPClassUID), "1", "1", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPInstanceUID), "1", "1", "SOPCommonModule");
@@ -1239,6 +1424,8 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(RelatedGeneralSOPClassUID), "1-n", "3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(OriginalSpecializedSOPClassUID), "1", "3", "SOPCommonModule");
         if (result.good()) result = CodingSchemeIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = ContextGroupIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = MappingResourceIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmShortString(TimezoneOffsetFromUTC), "1", "3", "SOPCommonModule");
         if (result.good()) result = ContributingEquipmentSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         // addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "3", "SOPCommonModule");
@@ -1299,7 +1486,16 @@ OFBool DRTPlanIOD::isPatientStudyModulePresent(const OFBool /*complete*/)
            !PatientAge.isEmpty() ||
            !PatientSize.isEmpty() ||
            !PatientWeight.isEmpty() ||
+           !PatientBodyMassIndex.isEmpty() ||
+           !MeasuredAPDimension.isEmpty() ||
+           !MeasuredLateralDimension.isEmpty() ||
            !PatientSizeCodeSequence.isEmpty() ||
+           !MedicalAlerts.isEmpty() ||
+           !Allergies.isEmpty() ||
+           !SmokingStatus.isEmpty() ||
+           !PregnancyStatus.isEmpty() ||
+           !LastMenstrualDate.isEmpty() ||
+           !PatientState.isEmpty() ||
            !Occupation.isEmpty() ||
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
@@ -1416,6 +1612,18 @@ OFBool DRTPlanIOD::isApprovalModulePresent(const OFBool complete)
 }
 
 
+OFBool DRTPlanIOD::isGeneralReferenceModulePresent(const OFBool /*complete*/)
+{
+    /* check whether at least one attribute is present */
+    return !ReferencedImageSequence.isEmpty() ||
+           !ReferencedInstanceSequence.isEmpty() ||
+           !DerivationDescription.isEmpty() ||
+           !DerivationCodeSequence.isEmpty() ||
+           !SourceImageSequence.isEmpty() ||
+           !SourceInstanceSequence.isEmpty();
+}
+
+
 OFBool DRTPlanIOD::isCommonInstanceReferenceModulePresent(const OFBool /*complete*/)
 {
     /* check whether at least one attribute is present */
@@ -1448,6 +1656,12 @@ OFCondition DRTPlanIOD::getAdmittingDiagnosesDescription(OFString &value, const
 }
 
 
+OFCondition DRTPlanIOD::getAllergies(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(Allergies, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getApprovalStatus(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ApprovalStatus, value, pos);
@@ -1586,6 +1800,12 @@ OFCondition DRTPlanIOD::getDeidentificationMethod(OFString &value, const signed
 }
 
 
+OFCondition DRTPlanIOD::getDerivationDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DerivationDescription, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getDeviceSerialNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(DeviceSerialNumber, value, pos);
@@ -1598,6 +1818,12 @@ OFCondition DRTPlanIOD::getEthnicGroup(OFString &value, const signed long pos) c
 }
 
 
+OFCondition DRTPlanIOD::getFrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmFloatingPointDouble &, FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix).getFloat64(value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getFrameOfReferenceUID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(FrameOfReferenceUID, value, pos);
@@ -1670,6 +1896,12 @@ OFCondition DRTPlanIOD::getIssuerOfPatientID(OFString &value, const signed long
 }
 
 
+OFCondition DRTPlanIOD::getLastMenstrualDate(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(LastMenstrualDate, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getLongitudinalTemporalInformationModified(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(LongitudinalTemporalInformationModified, value, pos);
@@ -1688,6 +1920,36 @@ OFCondition DRTPlanIOD::getManufacturerModelName(OFString &value, const signed l
 }
 
 
+OFCondition DRTPlanIOD::getMeasuredAPDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredAPDimension, value, pos);
+}
+
+
+OFCondition DRTPlanIOD::getMeasuredAPDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredAPDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTPlanIOD::getMeasuredLateralDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredLateralDimension, value, pos);
+}
+
+
+OFCondition DRTPlanIOD::getMeasuredLateralDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredLateralDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTPlanIOD::getMedicalAlerts(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MedicalAlerts, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getModality(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(Modality, value, pos);
@@ -1736,18 +1998,42 @@ OFCondition DRTPlanIOD::getPatientAge(OFString &value, const signed long pos) co
 }
 
 
+OFCondition DRTPlanIOD::getPatientAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getPatientBirthDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthDate, value, pos);
 }
 
 
+OFCondition DRTPlanIOD::getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBirthDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getPatientBirthTime(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthTime, value, pos);
 }
 
 
+OFCondition DRTPlanIOD::getPatientBodyMassIndex(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBodyMassIndex, value, pos);
+}
+
+
+OFCondition DRTPlanIOD::getPatientBodyMassIndex(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, PatientBodyMassIndex).getFloat64(value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getPatientBreedDescription(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBreedDescription, value, pos);
@@ -1760,6 +2046,12 @@ OFCondition DRTPlanIOD::getPatientComments(OFString &value, const signed long po
 }
 
 
+OFCondition DRTPlanIOD::getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientDeathDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getPatientID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientID, value, pos);
@@ -1808,6 +2100,12 @@ OFCondition DRTPlanIOD::getPatientSpeciesDescription(OFString &value, const sign
 }
 
 
+OFCondition DRTPlanIOD::getPatientState(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientState, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getPatientWeight(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientWeight, value, pos);
@@ -1880,6 +2178,12 @@ OFCondition DRTPlanIOD::getPositionReferenceIndicator(OFString &value, const sig
 }
 
 
+OFCondition DRTPlanIOD::getPregnancyStatus(Uint16 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmUnsignedShort &, PregnancyStatus).getUint16(value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getPrescriptionDescription(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PrescriptionDescription, value, pos);
@@ -2060,6 +2364,12 @@ OFCondition DRTPlanIOD::getServiceEpisodeID(OFString &value, const signed long p
 }
 
 
+OFCondition DRTPlanIOD::getSmokingStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(SmokingStatus, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getSoftwareVersions(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(SoftwareVersions, value, pos);
@@ -2090,6 +2400,24 @@ OFCondition DRTPlanIOD::getStationName(OFString &value, const signed long pos) c
 }
 
 
+OFCondition DRTPlanIOD::getStrainAdditionalInformation(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainAdditionalInformation, value, pos);
+}
+
+
+OFCondition DRTPlanIOD::getStrainDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainDescription, value, pos);
+}
+
+
+OFCondition DRTPlanIOD::getStrainNomenclature(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainNomenclature, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getStudyDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StudyDate, value, pos);
@@ -2180,6 +2508,15 @@ OFCondition DRTPlanIOD::setAdmittingDiagnosesDescription(const OFString &value,
 }
 
 
+OFCondition DRTPlanIOD::setAllergies(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = Allergies.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setApprovalStatus(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2387,6 +2724,15 @@ OFCondition DRTPlanIOD::setDeidentificationMethod(const OFString &value, const O
 }
 
 
+OFCondition DRTPlanIOD::setDerivationDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = DerivationDescription.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setDeviceSerialNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2405,6 +2751,12 @@ OFCondition DRTPlanIOD::setEthnicGroup(const OFString &value, const OFBool check
 }
 
 
+OFCondition DRTPlanIOD::setFrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix(const Float64 value, const unsigned long pos)
+{
+    return FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix.putFloat64(value, pos);
+}
+
+
 OFCondition DRTPlanIOD::setFrameOfReferenceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
@@ -2504,6 +2856,15 @@ OFCondition DRTPlanIOD::setIssuerOfPatientID(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTPlanIOD::setLastMenstrualDate(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = LastMenstrualDate.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setLongitudinalTemporalInformationModified(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2531,6 +2892,33 @@ OFCondition DRTPlanIOD::setManufacturerModelName(const OFString &value, const OF
 }
 
 
+OFCondition DRTPlanIOD::setMeasuredAPDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredAPDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTPlanIOD::setMeasuredLateralDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredLateralDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTPlanIOD::setMedicalAlerts(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = MedicalAlerts.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setModality(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2603,6 +2991,15 @@ OFCondition DRTPlanIOD::setPatientAge(const OFString &value, const OFBool check)
 }
 
 
+OFCondition DRTPlanIOD::setPatientAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setPatientBirthDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -2612,6 +3009,15 @@ OFCondition DRTPlanIOD::setPatientBirthDate(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTPlanIOD::setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBirthDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setPatientBirthTime(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
@@ -2621,6 +3027,15 @@ OFCondition DRTPlanIOD::setPatientBirthTime(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTPlanIOD::setPatientBodyMassIndex(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBodyMassIndex.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setPatientBreedDescription(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2639,6 +3054,15 @@ OFCondition DRTPlanIOD::setPatientComments(const OFString &value, const OFBool c
 }
 
 
+OFCondition DRTPlanIOD::setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientDeathDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2702,6 +3126,15 @@ OFCondition DRTPlanIOD::setPatientSpeciesDescription(const OFString &value, cons
 }
 
 
+OFCondition DRTPlanIOD::setPatientState(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientState.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setPatientWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -2798,6 +3231,12 @@ OFCondition DRTPlanIOD::setPositionReferenceIndicator(const OFString &value, con
 }
 
 
+OFCondition DRTPlanIOD::setPregnancyStatus(const Uint16 value, const unsigned long pos)
+{
+    return PregnancyStatus.putUint16(value, pos);
+}
+
+
 OFCondition DRTPlanIOD::setPrescriptionDescription(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
@@ -3059,6 +3498,15 @@ OFCondition DRTPlanIOD::setServiceEpisodeID(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTPlanIOD::setSmokingStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = SmokingStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setSoftwareVersions(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
@@ -3095,6 +3543,33 @@ OFCondition DRTPlanIOD::setStationName(const OFString &value, const OFBool check
 }
 
 
+OFCondition DRTPlanIOD::setStrainAdditionalInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = StrainAdditionalInformation.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTPlanIOD::setStrainDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainDescription.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTPlanIOD::setStrainNomenclature(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainNomenclature.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setStudyDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drtporcs.cc b/dcmrt/libsrc/drtporcs.cc
index 7543d60..78ec4b1 100644
--- a/dcmrt/libsrc/drtporcs.cc
+++ b/dcmrt/libsrc/drtporcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPurposeOfReferenceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTPurposeOfReferenceCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTPurposeOfReferenceCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::Item
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTPurposeOfReferenceCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTPurposeOfReferenceCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PurposeOfReferenceCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PurposeOfReferenceCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PurposeOfReferenceCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PurposeOfReferenceCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTPurposeOfReferenceCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::setMappingResource(const OF
 }
 
 
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPurposeOfReferenceCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTPurposeOfReferenceCodeSequence::isValid() const
 }
 
 
-unsigned long DRTPurposeOfReferenceCodeSequence::getNumberOfItems() const
+size_t DRTPurposeOfReferenceCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTPurposeOfReferenceCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPurposeOfReferenceCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPurposeOfReferenceCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTPurposeOfReferenceCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTPurposeOfReferenceCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPurposeOfReferenceCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTPurposeOfReferenceCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTPurposeOfReferenceCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTPurposeOfReferenceCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence
 }
 
 
-OFCondition DRTPurposeOfReferenceCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPurposeOfReferenceCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTPurposeOfReferenceCodeSequence::getItem(const unsigned long num,
 }
 
 
-DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::getItem(const unsigned long num)
+DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::getI
 }
 
 
-const DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::getItem(const unsigned long num) const
+const DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence
 }
 
 
-DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::operator[](const unsigned long num)
+DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::operator[](const unsigned long num) const
+const DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTPurposeOfReferenceCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPurposeOfReferenceCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPurposeOfReferenceCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTPurposeOfReferenceCodeSequence::insertItem(const unsigned long po
 }
 
 
-OFCondition DRTPurposeOfReferenceCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTPurposeOfReferenceCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtporis.cc b/dcmrt/libsrc/drtporis.cc
index baa1c80..a124117 100644
--- a/dcmrt/libsrc/drtporis.cc
+++ b/dcmrt/libsrc/drtporis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPhysiciansOfRecordIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -352,7 +352,7 @@ OFBool DRTPhysiciansOfRecordIdentificationSequence::isValid() const
 }
 
 
-unsigned long DRTPhysiciansOfRecordIdentificationSequence::getNumberOfItems() const
+size_t DRTPhysiciansOfRecordIdentificationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -382,12 +382,12 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -402,12 +402,12 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -422,7 +422,7 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoItem(const unsigned long num)
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -458,7 +458,7 @@ const DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordId
 }
 
 
-OFCondition DRTPhysiciansOfRecordIdentificationSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -468,7 +468,7 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::getItem(const unsigned
 }
 
 
-DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentificationSequence::getItem(const unsigned long num)
+DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentificationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -478,7 +478,7 @@ DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentifi
 }
 
 
-const DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentificationSequence::getItem(const unsigned long num) const
+const DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentificationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -488,13 +488,13 @@ const DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordId
 }
 
 
-DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentificationSequence::operator[](const unsigned long num)
+DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentificationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentificationSequence::operator[](const unsigned long num) const
+const DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentificationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -517,7 +517,7 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPhysiciansOfRecordIdentificationSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -540,7 +540,7 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::insertItem(const unsign
 }
 
 
-OFCondition DRTPhysiciansOfRecordIdentificationSequence::removeItem(const unsigned long pos)
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtppcs.cc b/dcmrt/libsrc/drtppcs.cc
index 9180bdd..f22545c 100644
--- a/dcmrt/libsrc/drtppcs.cc
+++ b/dcmrt/libsrc/drtppcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPerformedProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTPerformedProtocolCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     ProtocolContextSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     URNCodeValue(DCM_URNCodeValue)
@@ -56,6 +57,7 @@ DRTPerformedProtocolCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     ProtocolContextSequence(copy.ProtocolContextSequence),
     URNCodeValue(copy.URNCodeValue)
@@ -86,6 +88,7 @@ DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::Item::
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         ProtocolContextSequence = copy.ProtocolContextSequence;
         URNCodeValue = copy.URNCodeValue;
@@ -110,6 +113,7 @@ void DRTPerformedProtocolCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -132,6 +136,7 @@ OFBool DRTPerformedProtocolCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -164,6 +169,7 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PerformedProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PerformedProtocolCodeSequence");
@@ -192,6 +198,7 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PerformedProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PerformedProtocolCodeSequence");
@@ -310,6 +317,15 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTPerformedProtocolCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTPerformedProtocolCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -484,6 +500,19 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTPerformedProtocolCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPerformedProtocolCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -613,7 +642,7 @@ OFBool DRTPerformedProtocolCodeSequence::isValid() const
 }
 
 
-unsigned long DRTPerformedProtocolCodeSequence::getNumberOfItems() const
+size_t DRTPerformedProtocolCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -643,12 +672,12 @@ OFCondition DRTPerformedProtocolCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPerformedProtocolCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPerformedProtocolCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -663,12 +692,12 @@ OFCondition DRTPerformedProtocolCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTPerformedProtocolCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPerformedProtocolCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -683,7 +712,7 @@ OFCondition DRTPerformedProtocolCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTPerformedProtocolCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTPerformedProtocolCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -719,7 +748,7 @@ const DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::
 }
 
 
-OFCondition DRTPerformedProtocolCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPerformedProtocolCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -729,7 +758,7 @@ OFCondition DRTPerformedProtocolCodeSequence::getItem(const unsigned long num, I
 }
 
 
-DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::getItem(const unsigned long num)
+DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -739,7 +768,7 @@ DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::getIte
 }
 
 
-const DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::getItem(const unsigned long num) const
+const DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -749,13 +778,13 @@ const DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::
 }
 
 
-DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::operator[](const unsigned long num)
+DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::operator[](const unsigned long num) const
+const DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -778,7 +807,7 @@ OFCondition DRTPerformedProtocolCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPerformedProtocolCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPerformedProtocolCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -801,7 +830,7 @@ OFCondition DRTPerformedProtocolCodeSequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTPerformedProtocolCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTPerformedProtocolCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtprsis.cc b/dcmrt/libsrc/drtprsis.cc
index bb30d25..8d806f3 100644
--- a/dcmrt/libsrc/drtprsis.cc
+++ b/dcmrt/libsrc/drtprsis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPhysiciansReadingStudyIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -352,7 +352,7 @@ OFBool DRTPhysiciansReadingStudyIdentificationSequence::isValid() const
 }
 
 
-unsigned long DRTPhysiciansReadingStudyIdentificationSequence::getNumberOfItems() const
+size_t DRTPhysiciansReadingStudyIdentificationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -382,12 +382,12 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -402,12 +402,12 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoItem(const unsi
 }
 
 
-OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -422,7 +422,7 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoItem(const unsi
 }
 
 
-OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoItem(const unsigned long num)
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -458,7 +458,7 @@ const DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadin
 }
 
 
-OFCondition DRTPhysiciansReadingStudyIdentificationSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -468,7 +468,7 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::getItem(const unsig
 }
 
 
-DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudyIdentificationSequence::getItem(const unsigned long num)
+DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudyIdentificationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -478,7 +478,7 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudy
 }
 
 
-const DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudyIdentificationSequence::getItem(const unsigned long num) const
+const DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudyIdentificationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -488,13 +488,13 @@ const DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadin
 }
 
 
-DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudyIdentificationSequence::operator[](const unsigned long num)
+DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudyIdentificationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudyIdentificationSequence::operator[](const unsigned long num) const
+const DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudyIdentificationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -517,7 +517,7 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::addItem(Item *&item
 }
 
 
-OFCondition DRTPhysiciansReadingStudyIdentificationSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -540,7 +540,7 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::insertItem(const un
 }
 
 
-OFCondition DRTPhysiciansReadingStudyIdentificationSequence::removeItem(const unsigned long pos)
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpscs.cc b/dcmrt/libsrc/drtpscs.cc
index 8ea5480..cc30e6b 100644
--- a/dcmrt/libsrc/drtpscs.cc
+++ b/dcmrt/libsrc/drtpscs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSpeciesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTPatientSpeciesCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTPatientSpeciesCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::Item::operat
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTPatientSpeciesCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTPatientSpeciesCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PatientSpeciesCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PatientSpeciesCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PatientSpeciesCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PatientSpeciesCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::getMappingResource(OFString &va
 }
 
 
+OFCondition DRTPatientSpeciesCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTPatientSpeciesCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::setMappingResource(const OFStri
 }
 
 
+OFCondition DRTPatientSpeciesCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPatientSpeciesCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTPatientSpeciesCodeSequence::isValid() const
 }
 
 
-unsigned long DRTPatientSpeciesCodeSequence::getNumberOfItems() const
+size_t DRTPatientSpeciesCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTPatientSpeciesCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPatientSpeciesCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPatientSpeciesCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTPatientSpeciesCodeSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTPatientSpeciesCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPatientSpeciesCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTPatientSpeciesCodeSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTPatientSpeciesCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTPatientSpeciesCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::getCur
 }
 
 
-OFCondition DRTPatientSpeciesCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPatientSpeciesCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTPatientSpeciesCodeSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::getItem(const unsigned long num)
+DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::getItem(cons
 }
 
 
-const DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::getItem(const unsigned long num) const
+const DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::getIte
 }
 
 
-DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::operator[](const unsigned long num)
+DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::operator[](const unsigned long num) const
+const DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTPatientSpeciesCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPatientSpeciesCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPatientSpeciesCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTPatientSpeciesCodeSequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTPatientSpeciesCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTPatientSpeciesCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpsics.cc b/dcmrt/libsrc/drtpsics.cc
index d35b732..aa0b5dc 100644
--- a/dcmrt/libsrc/drtpsics.cc
+++ b/dcmrt/libsrc/drtpsics.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSizeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTPatientSizeCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTPatientSizeCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::Item::operator=(co
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTPatientSizeCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTPatientSizeCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTPatientSizeCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PatientSizeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PatientSizeCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTPatientSizeCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PatientSizeCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PatientSizeCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTPatientSizeCodeSequence::Item::getMappingResource(OFString &value
 }
 
 
+OFCondition DRTPatientSizeCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTPatientSizeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTPatientSizeCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTPatientSizeCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPatientSizeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTPatientSizeCodeSequence::isValid() const
 }
 
 
-unsigned long DRTPatientSizeCodeSequence::getNumberOfItems() const
+size_t DRTPatientSizeCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTPatientSizeCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPatientSizeCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPatientSizeCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTPatientSizeCodeSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTPatientSizeCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPatientSizeCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTPatientSizeCodeSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTPatientSizeCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTPatientSizeCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::getCurrentIt
 }
 
 
-OFCondition DRTPatientSizeCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPatientSizeCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTPatientSizeCodeSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::getItem(const unsigned long num)
+DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::getItem(const unsi
 }
 
 
-const DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::getItem(const unsigned long num) const
+const DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::getItem(cons
 }
 
 
-DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::operator[](const unsigned long num)
+DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::operator[](const unsigned long num) const
+const DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTPatientSizeCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPatientSizeCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPatientSizeCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTPatientSizeCodeSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTPatientSizeCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTPatientSizeCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpss.cc b/dcmrt/libsrc/drtpss.cc
index d33128f..413b076 100644
--- a/dcmrt/libsrc/drtpss.cc
+++ b/dcmrt/libsrc/drtpss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -525,7 +525,7 @@ OFBool DRTPatientSetupSequence::isValid() const
 }
 
 
-unsigned long DRTPatientSetupSequence::getNumberOfItems() const
+size_t DRTPatientSetupSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -555,12 +555,12 @@ OFCondition DRTPatientSetupSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPatientSetupSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPatientSetupSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -575,12 +575,12 @@ OFCondition DRTPatientSetupSequence::gotoItem(const unsigned long num, OFListIte
 }
 
 
-OFCondition DRTPatientSetupSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPatientSetupSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -595,7 +595,7 @@ OFCondition DRTPatientSetupSequence::gotoItem(const unsigned long num, OFListCon
 }
 
 
-OFCondition DRTPatientSetupSequence::gotoItem(const unsigned long num)
+OFCondition DRTPatientSetupSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -631,7 +631,7 @@ const DRTPatientSetupSequence::Item &DRTPatientSetupSequence::getCurrentItem() c
 }
 
 
-OFCondition DRTPatientSetupSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPatientSetupSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -641,7 +641,7 @@ OFCondition DRTPatientSetupSequence::getItem(const unsigned long num, Item *&ite
 }
 
 
-DRTPatientSetupSequence::Item &DRTPatientSetupSequence::getItem(const unsigned long num)
+DRTPatientSetupSequence::Item &DRTPatientSetupSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -651,7 +651,7 @@ DRTPatientSetupSequence::Item &DRTPatientSetupSequence::getItem(const unsigned l
 }
 
 
-const DRTPatientSetupSequence::Item &DRTPatientSetupSequence::getItem(const unsigned long num) const
+const DRTPatientSetupSequence::Item &DRTPatientSetupSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -661,13 +661,13 @@ const DRTPatientSetupSequence::Item &DRTPatientSetupSequence::getItem(const unsi
 }
 
 
-DRTPatientSetupSequence::Item &DRTPatientSetupSequence::operator[](const unsigned long num)
+DRTPatientSetupSequence::Item &DRTPatientSetupSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPatientSetupSequence::Item &DRTPatientSetupSequence::operator[](const unsigned long num) const
+const DRTPatientSetupSequence::Item &DRTPatientSetupSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -690,7 +690,7 @@ OFCondition DRTPatientSetupSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPatientSetupSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPatientSetupSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -713,7 +713,7 @@ OFCondition DRTPatientSetupSequence::insertItem(const unsigned long pos, Item *&
 }
 
 
-OFCondition DRTPatientSetupSequence::removeItem(const unsigned long pos)
+OFCondition DRTPatientSetupSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpsss.cc b/dcmrt/libsrc/drtpsss.cc
index e036f82..8578dd9 100644
--- a/dcmrt/libsrc/drtpsss.cc
+++ b/dcmrt/libsrc/drtpsss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPredecessorStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTPredecessorStructureSetSequence::isValid() const
 }
 
 
-unsigned long DRTPredecessorStructureSetSequence::getNumberOfItems() const
+size_t DRTPredecessorStructureSetSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTPredecessorStructureSetSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPredecessorStructureSetSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPredecessorStructureSetSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTPredecessorStructureSetSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTPredecessorStructureSetSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPredecessorStructureSetSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTPredecessorStructureSetSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTPredecessorStructureSetSequence::gotoItem(const unsigned long num)
+OFCondition DRTPredecessorStructureSetSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTPredecessorStructureSetSequence::Item &DRTPredecessorStructureSetSequen
 }
 
 
-OFCondition DRTPredecessorStructureSetSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPredecessorStructureSetSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTPredecessorStructureSetSequence::getItem(const unsigned long num,
 }
 
 
-DRTPredecessorStructureSetSequence::Item &DRTPredecessorStructureSetSequence::getItem(const unsigned long num)
+DRTPredecessorStructureSetSequence::Item &DRTPredecessorStructureSetSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTPredecessorStructureSetSequence::Item &DRTPredecessorStructureSetSequence::ge
 }
 
 
-const DRTPredecessorStructureSetSequence::Item &DRTPredecessorStructureSetSequence::getItem(const unsigned long num) const
+const DRTPredecessorStructureSetSequence::Item &DRTPredecessorStructureSetSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTPredecessorStructureSetSequence::Item &DRTPredecessorStructureSetSequen
 }
 
 
-DRTPredecessorStructureSetSequence::Item &DRTPredecessorStructureSetSequence::operator[](const unsigned long num)
+DRTPredecessorStructureSetSequence::Item &DRTPredecessorStructureSetSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPredecessorStructureSetSequence::Item &DRTPredecessorStructureSetSequence::operator[](const unsigned long num) const
+const DRTPredecessorStructureSetSequence::Item &DRTPredecessorStructureSetSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTPredecessorStructureSetSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPredecessorStructureSetSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPredecessorStructureSetSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTPredecessorStructureSetSequence::insertItem(const unsigned long p
 }
 
 
-OFCondition DRTPredecessorStructureSetSequence::removeItem(const unsigned long pos)
+OFCondition DRTPredecessorStructureSetSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpvis.cc b/dcmrt/libsrc/drtpvis.cc
index 11689b3..f85bd3c 100644
--- a/dcmrt/libsrc/drtpvis.cc
+++ b/dcmrt/libsrc/drtpvis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPlannedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -573,7 +573,7 @@ OFBool DRTPlannedVerificationImageSequence::isValid() const
 }
 
 
-unsigned long DRTPlannedVerificationImageSequence::getNumberOfItems() const
+size_t DRTPlannedVerificationImageSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -603,12 +603,12 @@ OFCondition DRTPlannedVerificationImageSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPlannedVerificationImageSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPlannedVerificationImageSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -623,12 +623,12 @@ OFCondition DRTPlannedVerificationImageSequence::gotoItem(const unsigned long nu
 }
 
 
-OFCondition DRTPlannedVerificationImageSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPlannedVerificationImageSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -643,7 +643,7 @@ OFCondition DRTPlannedVerificationImageSequence::gotoItem(const unsigned long nu
 }
 
 
-OFCondition DRTPlannedVerificationImageSequence::gotoItem(const unsigned long num)
+OFCondition DRTPlannedVerificationImageSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -679,7 +679,7 @@ const DRTPlannedVerificationImageSequence::Item &DRTPlannedVerificationImageSequ
 }
 
 
-OFCondition DRTPlannedVerificationImageSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPlannedVerificationImageSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -689,7 +689,7 @@ OFCondition DRTPlannedVerificationImageSequence::getItem(const unsigned long num
 }
 
 
-DRTPlannedVerificationImageSequence::Item &DRTPlannedVerificationImageSequence::getItem(const unsigned long num)
+DRTPlannedVerificationImageSequence::Item &DRTPlannedVerificationImageSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -699,7 +699,7 @@ DRTPlannedVerificationImageSequence::Item &DRTPlannedVerificationImageSequence::
 }
 
 
-const DRTPlannedVerificationImageSequence::Item &DRTPlannedVerificationImageSequence::getItem(const unsigned long num) const
+const DRTPlannedVerificationImageSequence::Item &DRTPlannedVerificationImageSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -709,13 +709,13 @@ const DRTPlannedVerificationImageSequence::Item &DRTPlannedVerificationImageSequ
 }
 
 
-DRTPlannedVerificationImageSequence::Item &DRTPlannedVerificationImageSequence::operator[](const unsigned long num)
+DRTPlannedVerificationImageSequence::Item &DRTPlannedVerificationImageSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPlannedVerificationImageSequence::Item &DRTPlannedVerificationImageSequence::operator[](const unsigned long num) const
+const DRTPlannedVerificationImageSequence::Item &DRTPlannedVerificationImageSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -738,7 +738,7 @@ OFCondition DRTPlannedVerificationImageSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPlannedVerificationImageSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPlannedVerificationImageSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -761,7 +761,7 @@ OFCondition DRTPlannedVerificationImageSequence::insertItem(const unsigned long
 }
 
 
-OFCondition DRTPlannedVerificationImageSequence::removeItem(const unsigned long pos)
+OFCondition DRTPlannedVerificationImageSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtqds.cc b/dcmrt/libsrc/drtqds.cc
index 2f35e33..e23801c 100644
--- a/dcmrt/libsrc/drtqds.cc
+++ b/dcmrt/libsrc/drtqds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTQuantityDefinitionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -546,7 +546,7 @@ OFBool DRTQuantityDefinitionSequence::isValid() const
 }
 
 
-unsigned long DRTQuantityDefinitionSequence::getNumberOfItems() const
+size_t DRTQuantityDefinitionSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -576,12 +576,12 @@ OFCondition DRTQuantityDefinitionSequence::gotoNextItem()
 }
 
 
-OFCondition DRTQuantityDefinitionSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTQuantityDefinitionSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -596,12 +596,12 @@ OFCondition DRTQuantityDefinitionSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTQuantityDefinitionSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTQuantityDefinitionSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -616,7 +616,7 @@ OFCondition DRTQuantityDefinitionSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTQuantityDefinitionSequence::gotoItem(const unsigned long num)
+OFCondition DRTQuantityDefinitionSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -652,7 +652,7 @@ const DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getCur
 }
 
 
-OFCondition DRTQuantityDefinitionSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTQuantityDefinitionSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -662,7 +662,7 @@ OFCondition DRTQuantityDefinitionSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getItem(const unsigned long num)
+DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -672,7 +672,7 @@ DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getItem(cons
 }
 
 
-const DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getItem(const unsigned long num) const
+const DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -682,13 +682,13 @@ const DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getIte
 }
 
 
-DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::operator[](const unsigned long num)
+DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::operator[](const unsigned long num) const
+const DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -711,7 +711,7 @@ OFCondition DRTQuantityDefinitionSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTQuantityDefinitionSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTQuantityDefinitionSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -734,7 +734,7 @@ OFCondition DRTQuantityDefinitionSequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTQuantityDefinitionSequence::removeItem(const unsigned long pos)
+OFCondition DRTQuantityDefinitionSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtras.cc b/dcmrt/libsrc/drtras.cc
index 5f9a1e7..6c2806d 100644
--- a/dcmrt/libsrc/drtras.cc
+++ b/dcmrt/libsrc/drtras.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -431,7 +431,7 @@ OFBool DRTRequestAttributesSequence::isValid() const
 }
 
 
-unsigned long DRTRequestAttributesSequence::getNumberOfItems() const
+size_t DRTRequestAttributesSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -461,12 +461,12 @@ OFCondition DRTRequestAttributesSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRequestAttributesSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRequestAttributesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -481,12 +481,12 @@ OFCondition DRTRequestAttributesSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTRequestAttributesSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRequestAttributesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -501,7 +501,7 @@ OFCondition DRTRequestAttributesSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTRequestAttributesSequence::gotoItem(const unsigned long num)
+OFCondition DRTRequestAttributesSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -537,7 +537,7 @@ const DRTRequestAttributesSequence::Item &DRTRequestAttributesSequence::getCurre
 }
 
 
-OFCondition DRTRequestAttributesSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRequestAttributesSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -547,7 +547,7 @@ OFCondition DRTRequestAttributesSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTRequestAttributesSequence::Item &DRTRequestAttributesSequence::getItem(const unsigned long num)
+DRTRequestAttributesSequence::Item &DRTRequestAttributesSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -557,7 +557,7 @@ DRTRequestAttributesSequence::Item &DRTRequestAttributesSequence::getItem(const
 }
 
 
-const DRTRequestAttributesSequence::Item &DRTRequestAttributesSequence::getItem(const unsigned long num) const
+const DRTRequestAttributesSequence::Item &DRTRequestAttributesSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -567,13 +567,13 @@ const DRTRequestAttributesSequence::Item &DRTRequestAttributesSequence::getItem(
 }
 
 
-DRTRequestAttributesSequence::Item &DRTRequestAttributesSequence::operator[](const unsigned long num)
+DRTRequestAttributesSequence::Item &DRTRequestAttributesSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRequestAttributesSequence::Item &DRTRequestAttributesSequence::operator[](const unsigned long num) const
+const DRTRequestAttributesSequence::Item &DRTRequestAttributesSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -596,7 +596,7 @@ OFCondition DRTRequestAttributesSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRequestAttributesSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRequestAttributesSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -619,7 +619,7 @@ OFCondition DRTRequestAttributesSequence::insertItem(const unsigned long pos, It
 }
 
 
-OFCondition DRTRequestAttributesSequence::removeItem(const unsigned long pos)
+OFCondition DRTRequestAttributesSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrbas2.cc b/dcmrt/libsrc/drtrbas2.cc
index 361f0c5..e94d5fa 100644
--- a/dcmrt/libsrc/drtrbas2.cc
+++ b/dcmrt/libsrc/drtrbas2.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -231,7 +231,7 @@ OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::isValid() cons
 }
 
 
-unsigned long DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getNumberOfItems() const
+size_t DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -261,12 +261,12 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoNextI
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -281,12 +281,12 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,7 +301,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -337,7 +337,7 @@ const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTRefere
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -347,7 +347,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(c
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const unsigned long num)
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -357,7 +357,7 @@ DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBr
 }
 
 
-const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const unsigned long num) const
+const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -367,13 +367,13 @@ const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTRefere
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const unsigned long num)
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const unsigned long num) const
+const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -396,7 +396,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::addItem(I
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -419,7 +419,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::insertIte
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrbas8.cc b/dcmrt/libsrc/drtrbas8.cc
index 58051ea..ecd7d1a 100644
--- a/dcmrt/libsrc/drtrbas8.cc
+++ b/dcmrt/libsrc/drtrbas8.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -316,7 +316,7 @@ OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::isVa
 }
 
 
-unsigned long DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getNumberOfItems() const
+size_t DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -346,12 +346,12 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule:
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -366,12 +366,12 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule:
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -386,7 +386,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule:
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -422,7 +422,7 @@ const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -432,7 +432,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule:
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const unsigned long num)
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -442,7 +442,7 @@ DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTRe
 }
 
 
-const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const unsigned long num) const
+const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -452,13 +452,13 @@ const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const unsigned long num)
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const unsigned long num) const
+const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -481,7 +481,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule:
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -504,7 +504,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule:
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrbls.cc b/dcmrt/libsrc/drtrbls.cc
index 5325428..89259ee 100644
--- a/dcmrt/libsrc/drtrbls.cc
+++ b/dcmrt/libsrc/drtrbls.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -318,7 +318,7 @@ OFBool DRTRecordedBlockSequence::isValid() const
 }
 
 
-unsigned long DRTRecordedBlockSequence::getNumberOfItems() const
+size_t DRTRecordedBlockSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -348,12 +348,12 @@ OFCondition DRTRecordedBlockSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRecordedBlockSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRecordedBlockSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -368,12 +368,12 @@ OFCondition DRTRecordedBlockSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTRecordedBlockSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRecordedBlockSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -388,7 +388,7 @@ OFCondition DRTRecordedBlockSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTRecordedBlockSequence::gotoItem(const unsigned long num)
+OFCondition DRTRecordedBlockSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -424,7 +424,7 @@ const DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::getCurrentItem()
 }
 
 
-OFCondition DRTRecordedBlockSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRecordedBlockSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -434,7 +434,7 @@ OFCondition DRTRecordedBlockSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::getItem(const unsigned long num)
+DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -444,7 +444,7 @@ DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::getItem(const unsigned
 }
 
 
-const DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::getItem(const unsigned long num) const
+const DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -454,13 +454,13 @@ const DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::getItem(const un
 }
 
 
-DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::operator[](const unsigned long num)
+DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::operator[](const unsigned long num) const
+const DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -483,7 +483,7 @@ OFCondition DRTRecordedBlockSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRecordedBlockSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRecordedBlockSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -506,7 +506,7 @@ OFCondition DRTRecordedBlockSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTRecordedBlockSequence::removeItem(const unsigned long pos)
+OFCondition DRTRecordedBlockSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrbos1.cc b/dcmrt/libsrc/drtrbos1.cc
index aae8b6a..9155cf9 100644
--- a/dcmrt/libsrc/drtrbos1.cc
+++ b/dcmrt/libsrc/drtrbos1.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBolusSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -318,7 +318,7 @@ OFBool DRTReferencedBolusSequenceInRTBeamsModule::isValid() const
 }
 
 
-unsigned long DRTReferencedBolusSequenceInRTBeamsModule::getNumberOfItems() const
+size_t DRTReferencedBolusSequenceInRTBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -348,12 +348,12 @@ OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -368,12 +368,12 @@ OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoItem(const unsigned l
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -388,7 +388,7 @@ OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoItem(const unsigned l
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -424,7 +424,7 @@ const DRTReferencedBolusSequenceInRTBeamsModule::Item &DRTReferencedBolusSequenc
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedBolusSequenceInRTBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -434,7 +434,7 @@ OFCondition DRTReferencedBolusSequenceInRTBeamsModule::getItem(const unsigned lo
 }
 
 
-DRTReferencedBolusSequenceInRTBeamsModule::Item &DRTReferencedBolusSequenceInRTBeamsModule::getItem(const unsigned long num)
+DRTReferencedBolusSequenceInRTBeamsModule::Item &DRTReferencedBolusSequenceInRTBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -444,7 +444,7 @@ DRTReferencedBolusSequenceInRTBeamsModule::Item &DRTReferencedBolusSequenceInRTB
 }
 
 
-const DRTReferencedBolusSequenceInRTBeamsModule::Item &DRTReferencedBolusSequenceInRTBeamsModule::getItem(const unsigned long num) const
+const DRTReferencedBolusSequenceInRTBeamsModule::Item &DRTReferencedBolusSequenceInRTBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -454,13 +454,13 @@ const DRTReferencedBolusSequenceInRTBeamsModule::Item &DRTReferencedBolusSequenc
 }
 
 
-DRTReferencedBolusSequenceInRTBeamsModule::Item &DRTReferencedBolusSequenceInRTBeamsModule::operator[](const unsigned long num)
+DRTReferencedBolusSequenceInRTBeamsModule::Item &DRTReferencedBolusSequenceInRTBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedBolusSequenceInRTBeamsModule::Item &DRTReferencedBolusSequenceInRTBeamsModule::operator[](const unsigned long num) const
+const DRTReferencedBolusSequenceInRTBeamsModule::Item &DRTReferencedBolusSequenceInRTBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -483,7 +483,7 @@ OFCondition DRTReferencedBolusSequenceInRTBeamsModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedBolusSequenceInRTBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -506,7 +506,7 @@ OFCondition DRTReferencedBolusSequenceInRTBeamsModule::insertItem(const unsigned
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedBolusSequenceInRTBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrbos6.cc b/dcmrt/libsrc/drtrbos6.cc
index 306e642..defefe0 100644
--- a/dcmrt/libsrc/drtrbos6.cc
+++ b/dcmrt/libsrc/drtrbos6.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBolusSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -260,7 +260,7 @@ OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::isValid() const
 }
 
 
-unsigned long DRTReferencedBolusSequenceInRTIonBeamsModule::getNumberOfItems() const
+size_t DRTReferencedBolusSequenceInRTIonBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -290,12 +290,12 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -310,12 +310,12 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const unsigne
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,7 +330,7 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const unsigne
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -366,7 +366,7 @@ const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequ
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -376,7 +376,7 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const unsigned
 }
 
 
-DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const unsigned long num)
+DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -386,7 +386,7 @@ DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceIn
 }
 
 
-const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const unsigned long num) const
+const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -396,13 +396,13 @@ const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequ
 }
 
 
-DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const unsigned long num)
+DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const unsigned long num) const
+const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -425,7 +425,7 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -448,7 +448,7 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::insertItem(const unsig
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrbos7.cc b/dcmrt/libsrc/drtrbos7.cc
index 3b04a4c..f4cbb74 100644
--- a/dcmrt/libsrc/drtrbos7.cc
+++ b/dcmrt/libsrc/drtrbos7.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -260,7 +260,7 @@ OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::isValid() cons
 }
 
 
-unsigned long DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
+size_t DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -290,12 +290,12 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoNextI
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -310,12 +310,12 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,7 +330,7 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -366,7 +366,7 @@ const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTRefere
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -376,7 +376,7 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(c
 }
 
 
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num)
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -386,7 +386,7 @@ DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBo
 }
 
 
-const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num) const
+const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -396,13 +396,13 @@ const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTRefere
 }
 
 
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const unsigned long num)
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const unsigned long num) const
+const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -425,7 +425,7 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::addItem(I
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -448,7 +448,7 @@ OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::insertIte
 }
 
 
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrbs2.cc b/dcmrt/libsrc/drtrbs2.cc
index 67a0c56..cb51a12 100644
--- a/dcmrt/libsrc/drtrbs2.cc
+++ b/dcmrt/libsrc/drtrbs2.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBeamSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -238,7 +238,7 @@ OFBool DRTReferencedBeamSequenceInRTDoseModule::isValid() const
 }
 
 
-unsigned long DRTReferencedBeamSequenceInRTDoseModule::getNumberOfItems() const
+size_t DRTReferencedBeamSequenceInRTDoseModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -268,12 +268,12 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -288,12 +288,12 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const unsigned lon
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -308,7 +308,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const unsigned lon
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -344,7 +344,7 @@ const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceIn
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -354,7 +354,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::getItem(const unsigned long
 }
 
 
-DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const unsigned long num)
+DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -364,7 +364,7 @@ DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDose
 }
 
 
-const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const unsigned long num) const
+const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -374,13 +374,13 @@ const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceIn
 }
 
 
-DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const unsigned long num)
+DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const unsigned long num) const
+const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -403,7 +403,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -426,7 +426,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::insertItem(const unsigned l
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrbs4.cc b/dcmrt/libsrc/drtrbs4.cc
index 54bc29e..58204d4 100644
--- a/dcmrt/libsrc/drtrbs4.cc
+++ b/dcmrt/libsrc/drtrbs4.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -21,9 +21,12 @@
 
 DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
+    AlternateBeamDose(DCM_AlternateBeamDose),
+    AlternateBeamDoseType(DCM_AlternateBeamDoseType),
     BeamDeliveryDurationLimit(DCM_BeamDeliveryDurationLimit),
     BeamDose(DCM_BeamDose),
     BeamDoseSpecificationPoint(DCM_BeamDoseSpecificationPoint),
+    BeamDoseType(DCM_BeamDoseType),
     BeamDoseVerificationControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     BeamMeterset(DCM_BeamMeterset),
     ReferencedBeamNumber(DCM_ReferencedBeamNumber)
@@ -33,9 +36,12 @@ DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBo
 
 DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AlternateBeamDose(copy.AlternateBeamDose),
+    AlternateBeamDoseType(copy.AlternateBeamDoseType),
     BeamDeliveryDurationLimit(copy.BeamDeliveryDurationLimit),
     BeamDose(copy.BeamDose),
     BeamDoseSpecificationPoint(copy.BeamDoseSpecificationPoint),
+    BeamDoseType(copy.BeamDoseType),
     BeamDoseVerificationControlPointSequence(copy.BeamDoseVerificationControlPointSequence),
     BeamMeterset(copy.BeamMeterset),
     ReferencedBeamNumber(copy.ReferencedBeamNumber)
@@ -53,9 +59,12 @@ DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBe
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
+        AlternateBeamDose = copy.AlternateBeamDose;
+        AlternateBeamDoseType = copy.AlternateBeamDoseType;
         BeamDeliveryDurationLimit = copy.BeamDeliveryDurationLimit;
         BeamDose = copy.BeamDose;
         BeamDoseSpecificationPoint = copy.BeamDoseSpecificationPoint;
+        BeamDoseType = copy.BeamDoseType;
         BeamDoseVerificationControlPointSequence = copy.BeamDoseVerificationControlPointSequence;
         BeamMeterset = copy.BeamMeterset;
         ReferencedBeamNumber = copy.ReferencedBeamNumber;
@@ -72,6 +81,9 @@ void DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::clear()
         ReferencedBeamNumber.clear();
         BeamDoseSpecificationPoint.clear();
         BeamDose.clear();
+        BeamDoseType.clear();
+        AlternateBeamDose.clear();
+        AlternateBeamDoseType.clear();
         BeamDoseVerificationControlPointSequence.clear();
         BeamMeterset.clear();
         BeamDeliveryDurationLimit.clear();
@@ -84,6 +96,9 @@ OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty(
     return ReferencedBeamNumber.isEmpty() &&
            BeamDoseSpecificationPoint.isEmpty() &&
            BeamDose.isEmpty() &&
+           BeamDoseType.isEmpty() &&
+           AlternateBeamDose.isEmpty() &&
+           AlternateBeamDoseType.isEmpty() &&
            BeamDoseVerificationControlPointSequence.isEmpty() &&
            BeamMeterset.isEmpty() &&
            BeamDeliveryDurationLimit.isEmpty();
@@ -106,6 +121,9 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::rea
         getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence");
         getAndCheckElementFromDataset(item, BeamDoseSpecificationPoint, "3", "3", "ReferencedBeamSequence");
         getAndCheckElementFromDataset(item, BeamDose, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, BeamDoseType, "1", "1C", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, AlternateBeamDose, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, AlternateBeamDoseType, "1", "1C", "ReferencedBeamSequence");
         BeamDoseVerificationControlPointSequence.read(item, "1-n", "3", "ReferencedBeamSequence");
         getAndCheckElementFromDataset(item, BeamMeterset, "1", "3", "ReferencedBeamSequence");
         getAndCheckElementFromDataset(item, BeamDeliveryDurationLimit, "1", "3", "ReferencedBeamSequence");
@@ -124,6 +142,9 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::wri
         addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(BeamDoseSpecificationPoint), "3", "3", "ReferencedBeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(BeamDose), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(BeamDoseType), "1", "1C", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmDecimalString(AlternateBeamDose), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(AlternateBeamDoseType), "1", "1C", "ReferencedBeamSequence");
         if (result.good()) result = BeamDoseVerificationControlPointSequence.write(item, "1-n", "3", "ReferencedBeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(BeamMeterset), "1", "3", "ReferencedBeamSequence");
         addElementToDataset(result, item, new DcmFloatingPointDouble(BeamDeliveryDurationLimit), "1", "3", "ReferencedBeamSequence");
@@ -132,6 +153,33 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::wri
 }
 
 
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlternateBeamDose, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, AlternateBeamDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDoseType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlternateBeamDoseType, value, pos);
+}
+
+
 OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
@@ -186,6 +234,15 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::get
 }
 
 
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDoseType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BeamDoseType, value, pos);
+}
+
+
 OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamMeterset(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -222,6 +279,32 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::get
 }
 
 
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setAlternateBeamDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlternateBeamDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setAlternateBeamDoseType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlternateBeamDoseType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
@@ -257,6 +340,19 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::set
 }
 
 
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDoseType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BeamDoseType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamMeterset(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -386,7 +482,7 @@ OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::isValid() cons
 }
 
 
-unsigned long DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
+size_t DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -416,12 +512,12 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoNextI
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -436,12 +532,12 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -456,7 +552,7 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -492,7 +588,7 @@ const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTRefere
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -502,7 +598,7 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(c
 }
 
 
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const unsigned long num)
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -512,7 +608,7 @@ DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBe
 }
 
 
-const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const unsigned long num) const
+const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -522,13 +618,13 @@ const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTRefere
 }
 
 
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const unsigned long num)
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const unsigned long num) const
+const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -551,7 +647,7 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::addItem(I
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -574,7 +670,7 @@ OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::insertIte
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrbs8.cc b/dcmrt/libsrc/drtrbs8.cc
index e2b2661..d9419aa 100644
--- a/dcmrt/libsrc/drtrbs8.cc
+++ b/dcmrt/libsrc/drtrbs8.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBeamSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -21,9 +21,12 @@
 
 DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
+    AlternateBeamDose(DCM_AlternateBeamDose),
+    AlternateBeamDoseType(DCM_AlternateBeamDoseType),
     BeamDeliveryDurationLimit(DCM_BeamDeliveryDurationLimit),
     BeamDose(DCM_BeamDose),
     BeamDoseSpecificationPoint(DCM_BeamDoseSpecificationPoint),
+    BeamDoseType(DCM_BeamDoseType),
     BeamDoseVerificationControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     BeamMeterset(DCM_BeamMeterset),
     ReferencedBeamNumber(DCM_ReferencedBeamNumber)
@@ -33,9 +36,12 @@ DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::Item(const OFBool empty
 
 DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AlternateBeamDose(copy.AlternateBeamDose),
+    AlternateBeamDoseType(copy.AlternateBeamDoseType),
     BeamDeliveryDurationLimit(copy.BeamDeliveryDurationLimit),
     BeamDose(copy.BeamDose),
     BeamDoseSpecificationPoint(copy.BeamDoseSpecificationPoint),
+    BeamDoseType(copy.BeamDoseType),
     BeamDoseVerificationControlPointSequence(copy.BeamDoseVerificationControlPointSequence),
     BeamMeterset(copy.BeamMeterset),
     ReferencedBeamNumber(copy.ReferencedBeamNumber)
@@ -53,9 +59,12 @@ DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequen
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
+        AlternateBeamDose = copy.AlternateBeamDose;
+        AlternateBeamDoseType = copy.AlternateBeamDoseType;
         BeamDeliveryDurationLimit = copy.BeamDeliveryDurationLimit;
         BeamDose = copy.BeamDose;
         BeamDoseSpecificationPoint = copy.BeamDoseSpecificationPoint;
+        BeamDoseType = copy.BeamDoseType;
         BeamDoseVerificationControlPointSequence = copy.BeamDoseVerificationControlPointSequence;
         BeamMeterset = copy.BeamMeterset;
         ReferencedBeamNumber = copy.ReferencedBeamNumber;
@@ -72,6 +81,9 @@ void DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::clear()
         ReferencedBeamNumber.clear();
         BeamDoseSpecificationPoint.clear();
         BeamDose.clear();
+        BeamDoseType.clear();
+        AlternateBeamDose.clear();
+        AlternateBeamDoseType.clear();
         BeamDoseVerificationControlPointSequence.clear();
         BeamMeterset.clear();
         BeamDeliveryDurationLimit.clear();
@@ -84,6 +96,9 @@ OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::isEmpty()
     return ReferencedBeamNumber.isEmpty() &&
            BeamDoseSpecificationPoint.isEmpty() &&
            BeamDose.isEmpty() &&
+           BeamDoseType.isEmpty() &&
+           AlternateBeamDose.isEmpty() &&
+           AlternateBeamDoseType.isEmpty() &&
            BeamDoseVerificationControlPointSequence.isEmpty() &&
            BeamMeterset.isEmpty() &&
            BeamDeliveryDurationLimit.isEmpty();
@@ -106,6 +121,9 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::read(DcmIte
         getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence");
         getAndCheckElementFromDataset(item, BeamDoseSpecificationPoint, "3", "3", "ReferencedBeamSequence");
         getAndCheckElementFromDataset(item, BeamDose, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, BeamDoseType, "1", "1C", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, AlternateBeamDose, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, AlternateBeamDoseType, "1", "1C", "ReferencedBeamSequence");
         BeamDoseVerificationControlPointSequence.read(item, "1-n", "3", "ReferencedBeamSequence");
         getAndCheckElementFromDataset(item, BeamMeterset, "1", "3", "ReferencedBeamSequence");
         getAndCheckElementFromDataset(item, BeamDeliveryDurationLimit, "1", "3", "ReferencedBeamSequence");
@@ -124,6 +142,9 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::write(DcmIt
         addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(BeamDoseSpecificationPoint), "3", "3", "ReferencedBeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(BeamDose), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(BeamDoseType), "1", "1C", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmDecimalString(AlternateBeamDose), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(AlternateBeamDoseType), "1", "1C", "ReferencedBeamSequence");
         if (result.good()) result = BeamDoseVerificationControlPointSequence.write(item, "1-n", "3", "ReferencedBeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(BeamMeterset), "1", "3", "ReferencedBeamSequence");
         addElementToDataset(result, item, new DcmFloatingPointDouble(BeamDeliveryDurationLimit), "1", "3", "ReferencedBeamSequence");
@@ -132,6 +153,33 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::write(DcmIt
 }
 
 
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlternateBeamDose, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, AlternateBeamDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDoseType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlternateBeamDoseType, value, pos);
+}
+
+
 OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
@@ -186,6 +234,15 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDose
 }
 
 
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDoseType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BeamDoseType, value, pos);
+}
+
+
 OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamMeterset(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -222,6 +279,32 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferenc
 }
 
 
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setAlternateBeamDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlternateBeamDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setAlternateBeamDoseType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlternateBeamDoseType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
@@ -257,6 +340,19 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDose
 }
 
 
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDoseType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BeamDoseType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamMeterset(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -386,7 +482,7 @@ OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::isValid() const
 }
 
 
-unsigned long DRTReferencedBeamSequenceInRTFractionSchemeModule::getNumberOfItems() const
+size_t DRTReferencedBeamSequenceInRTFractionSchemeModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -416,12 +512,12 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -436,12 +532,12 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const un
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -456,7 +552,7 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const un
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -492,7 +588,7 @@ const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeam
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -502,7 +598,7 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const uns
 }
 
 
-DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const unsigned long num)
+DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -512,7 +608,7 @@ DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequen
 }
 
 
-const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const unsigned long num) const
+const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -522,13 +618,13 @@ const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeam
 }
 
 
-DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const unsigned long num)
+DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const unsigned long num) const
+const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -551,7 +647,7 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::addItem(Item *&it
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -574,7 +670,7 @@ OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::insertItem(const
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrcdrs.cc b/dcmrt/libsrc/drtrcdrs.cc
index acad21e..15ae4b7 100644
--- a/dcmrt/libsrc/drtrcdrs.cc
+++ b/dcmrt/libsrc/drtrcdrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -307,7 +307,7 @@ OFBool DRTReferencedCalculatedDoseReferenceSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedCalculatedDoseReferenceSequence::getNumberOfItems() const
+size_t DRTReferencedCalculatedDoseReferenceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -337,12 +337,12 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -357,12 +357,12 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const unsigne
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -377,7 +377,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const unsigne
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -413,7 +413,7 @@ const DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculate
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedCalculatedDoseReferenceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -423,7 +423,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::getItem(const unsigned
 }
 
 
-DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::getItem(const unsigned long num)
+DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -433,7 +433,7 @@ DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseR
 }
 
 
-const DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::getItem(const unsigned long num) const
+const DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -443,13 +443,13 @@ const DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculate
 }
 
 
-DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::operator[](const unsigned long num)
+DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::operator[](const unsigned long num) const
+const DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -472,7 +472,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedCalculatedDoseReferenceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -495,7 +495,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::insertItem(const unsig
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedCalculatedDoseReferenceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrcos.cc b/dcmrt/libsrc/drtrcos.cc
index 0b3b03b..338cb35 100644
--- a/dcmrt/libsrc/drtrcos.cc
+++ b/dcmrt/libsrc/drtrcos.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -289,7 +289,7 @@ OFBool DRTRecordedCompensatorSequence::isValid() const
 }
 
 
-unsigned long DRTRecordedCompensatorSequence::getNumberOfItems() const
+size_t DRTRecordedCompensatorSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -319,12 +319,12 @@ OFCondition DRTRecordedCompensatorSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRecordedCompensatorSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRecordedCompensatorSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -339,12 +339,12 @@ OFCondition DRTRecordedCompensatorSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTRecordedCompensatorSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRecordedCompensatorSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -359,7 +359,7 @@ OFCondition DRTRecordedCompensatorSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTRecordedCompensatorSequence::gotoItem(const unsigned long num)
+OFCondition DRTRecordedCompensatorSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -395,7 +395,7 @@ const DRTRecordedCompensatorSequence::Item &DRTRecordedCompensatorSequence::getC
 }
 
 
-OFCondition DRTRecordedCompensatorSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRecordedCompensatorSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -405,7 +405,7 @@ OFCondition DRTRecordedCompensatorSequence::getItem(const unsigned long num, Ite
 }
 
 
-DRTRecordedCompensatorSequence::Item &DRTRecordedCompensatorSequence::getItem(const unsigned long num)
+DRTRecordedCompensatorSequence::Item &DRTRecordedCompensatorSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -415,7 +415,7 @@ DRTRecordedCompensatorSequence::Item &DRTRecordedCompensatorSequence::getItem(co
 }
 
 
-const DRTRecordedCompensatorSequence::Item &DRTRecordedCompensatorSequence::getItem(const unsigned long num) const
+const DRTRecordedCompensatorSequence::Item &DRTRecordedCompensatorSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -425,13 +425,13 @@ const DRTRecordedCompensatorSequence::Item &DRTRecordedCompensatorSequence::getI
 }
 
 
-DRTRecordedCompensatorSequence::Item &DRTRecordedCompensatorSequence::operator[](const unsigned long num)
+DRTRecordedCompensatorSequence::Item &DRTRecordedCompensatorSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRecordedCompensatorSequence::Item &DRTRecordedCompensatorSequence::operator[](const unsigned long num) const
+const DRTRecordedCompensatorSequence::Item &DRTRecordedCompensatorSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -454,7 +454,7 @@ OFCondition DRTRecordedCompensatorSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRecordedCompensatorSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRecordedCompensatorSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -477,7 +477,7 @@ OFCondition DRTRecordedCompensatorSequence::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTRecordedCompensatorSequence::removeItem(const unsigned long pos)
+OFCondition DRTRecordedCompensatorSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrcps.cc b/dcmrt/libsrc/drtrcps.cc
index c115bab..5fd3b7c 100644
--- a/dcmrt/libsrc/drtrcps.cc
+++ b/dcmrt/libsrc/drtrcps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -269,7 +269,7 @@ OFBool DRTReferencedControlPointSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedControlPointSequence::getNumberOfItems() const
+size_t DRTReferencedControlPointSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -299,12 +299,12 @@ OFCondition DRTReferencedControlPointSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedControlPointSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedControlPointSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -319,12 +319,12 @@ OFCondition DRTReferencedControlPointSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTReferencedControlPointSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedControlPointSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -339,7 +339,7 @@ OFCondition DRTReferencedControlPointSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTReferencedControlPointSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedControlPointSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -375,7 +375,7 @@ const DRTReferencedControlPointSequence::Item &DRTReferencedControlPointSequence
 }
 
 
-OFCondition DRTReferencedControlPointSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedControlPointSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -385,7 +385,7 @@ OFCondition DRTReferencedControlPointSequence::getItem(const unsigned long num,
 }
 
 
-DRTReferencedControlPointSequence::Item &DRTReferencedControlPointSequence::getItem(const unsigned long num)
+DRTReferencedControlPointSequence::Item &DRTReferencedControlPointSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -395,7 +395,7 @@ DRTReferencedControlPointSequence::Item &DRTReferencedControlPointSequence::getI
 }
 
 
-const DRTReferencedControlPointSequence::Item &DRTReferencedControlPointSequence::getItem(const unsigned long num) const
+const DRTReferencedControlPointSequence::Item &DRTReferencedControlPointSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -405,13 +405,13 @@ const DRTReferencedControlPointSequence::Item &DRTReferencedControlPointSequence
 }
 
 
-DRTReferencedControlPointSequence::Item &DRTReferencedControlPointSequence::operator[](const unsigned long num)
+DRTReferencedControlPointSequence::Item &DRTReferencedControlPointSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedControlPointSequence::Item &DRTReferencedControlPointSequence::operator[](const unsigned long num) const
+const DRTReferencedControlPointSequence::Item &DRTReferencedControlPointSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -434,7 +434,7 @@ OFCondition DRTReferencedControlPointSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedControlPointSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedControlPointSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -457,7 +457,7 @@ OFCondition DRTReferencedControlPointSequence::insertItem(const unsigned long po
 }
 
 
-OFCondition DRTReferencedControlPointSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedControlPointSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrcs.cc b/dcmrt/libsrc/drtrcs.cc
index b64abf7..ed3e8ee 100644
--- a/dcmrt/libsrc/drtrcs.cc
+++ b/dcmrt/libsrc/drtrcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -326,7 +326,7 @@ OFBool DRTROIContourSequence::isValid() const
 }
 
 
-unsigned long DRTROIContourSequence::getNumberOfItems() const
+size_t DRTROIContourSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -356,12 +356,12 @@ OFCondition DRTROIContourSequence::gotoNextItem()
 }
 
 
-OFCondition DRTROIContourSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTROIContourSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -376,12 +376,12 @@ OFCondition DRTROIContourSequence::gotoItem(const unsigned long num, OFListItera
 }
 
 
-OFCondition DRTROIContourSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTROIContourSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -396,7 +396,7 @@ OFCondition DRTROIContourSequence::gotoItem(const unsigned long num, OFListConst
 }
 
 
-OFCondition DRTROIContourSequence::gotoItem(const unsigned long num)
+OFCondition DRTROIContourSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -432,7 +432,7 @@ const DRTROIContourSequence::Item &DRTROIContourSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTROIContourSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTROIContourSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -442,7 +442,7 @@ OFCondition DRTROIContourSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTROIContourSequence::Item &DRTROIContourSequence::getItem(const unsigned long num)
+DRTROIContourSequence::Item &DRTROIContourSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -452,7 +452,7 @@ DRTROIContourSequence::Item &DRTROIContourSequence::getItem(const unsigned long
 }
 
 
-const DRTROIContourSequence::Item &DRTROIContourSequence::getItem(const unsigned long num) const
+const DRTROIContourSequence::Item &DRTROIContourSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -462,13 +462,13 @@ const DRTROIContourSequence::Item &DRTROIContourSequence::getItem(const unsigned
 }
 
 
-DRTROIContourSequence::Item &DRTROIContourSequence::operator[](const unsigned long num)
+DRTROIContourSequence::Item &DRTROIContourSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTROIContourSequence::Item &DRTROIContourSequence::operator[](const unsigned long num) const
+const DRTROIContourSequence::Item &DRTROIContourSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -491,7 +491,7 @@ OFCondition DRTROIContourSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTROIContourSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTROIContourSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -514,7 +514,7 @@ OFCondition DRTROIContourSequence::insertItem(const unsigned long pos, Item *&it
 }
 
 
-OFCondition DRTROIContourSequence::removeItem(const unsigned long pos)
+OFCondition DRTROIContourSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrdros.cc b/dcmrt/libsrc/drtrdros.cc
index d2f0e91..5d1e794 100644
--- a/dcmrt/libsrc/drtrdros.cc
+++ b/dcmrt/libsrc/drtrdros.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTDoseROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -298,7 +298,7 @@ OFBool DRTRTDoseROISequence::isValid() const
 }
 
 
-unsigned long DRTRTDoseROISequence::getNumberOfItems() const
+size_t DRTRTDoseROISequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -328,12 +328,12 @@ OFCondition DRTRTDoseROISequence::gotoNextItem()
 }
 
 
-OFCondition DRTRTDoseROISequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRTDoseROISequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -348,12 +348,12 @@ OFCondition DRTRTDoseROISequence::gotoItem(const unsigned long num, OFListIterat
 }
 
 
-OFCondition DRTRTDoseROISequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRTDoseROISequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -368,7 +368,7 @@ OFCondition DRTRTDoseROISequence::gotoItem(const unsigned long num, OFListConstI
 }
 
 
-OFCondition DRTRTDoseROISequence::gotoItem(const unsigned long num)
+OFCondition DRTRTDoseROISequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -404,7 +404,7 @@ const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getCurrentItem() const
 }
 
 
-OFCondition DRTRTDoseROISequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRTDoseROISequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -414,7 +414,7 @@ OFCondition DRTRTDoseROISequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const unsigned long num)
+DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -424,7 +424,7 @@ DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const unsigned long nu
 }
 
 
-const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const unsigned long num) const
+const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -434,13 +434,13 @@ const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const unsigned l
 }
 
 
-DRTRTDoseROISequence::Item &DRTRTDoseROISequence::operator[](const unsigned long num)
+DRTRTDoseROISequence::Item &DRTRTDoseROISequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::operator[](const unsigned long num) const
+const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -463,7 +463,7 @@ OFCondition DRTRTDoseROISequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRTDoseROISequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRTDoseROISequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -486,7 +486,7 @@ OFCondition DRTRTDoseROISequence::insertItem(const unsigned long pos, Item *&ite
 }
 
 
-OFCondition DRTRTDoseROISequence::removeItem(const unsigned long pos)
+OFCondition DRTRTDoseROISequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrdrs1.cc b/dcmrt/libsrc/drtrdrs1.cc
index 4cd20b7..f4dd392 100644
--- a/dcmrt/libsrc/drtrdrs1.cc
+++ b/dcmrt/libsrc/drtrdrs1.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseReferenceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -269,7 +269,7 @@ OFBool DRTReferencedDoseReferenceSequenceInRTBeamsModule::isValid() const
 }
 
 
-unsigned long DRTReferencedDoseReferenceSequenceInRTBeamsModule::getNumberOfItems() const
+size_t DRTReferencedDoseReferenceSequenceInRTBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -299,12 +299,12 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -319,12 +319,12 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoItem(const un
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -339,7 +339,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoItem(const un
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -375,7 +375,7 @@ const DRTReferencedDoseReferenceSequenceInRTBeamsModule::Item &DRTReferencedDose
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -385,7 +385,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::getItem(const uns
 }
 
 
-DRTReferencedDoseReferenceSequenceInRTBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTBeamsModule::getItem(const unsigned long num)
+DRTReferencedDoseReferenceSequenceInRTBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -395,7 +395,7 @@ DRTReferencedDoseReferenceSequenceInRTBeamsModule::Item &DRTReferencedDoseRefere
 }
 
 
-const DRTReferencedDoseReferenceSequenceInRTBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTBeamsModule::getItem(const unsigned long num) const
+const DRTReferencedDoseReferenceSequenceInRTBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -405,13 +405,13 @@ const DRTReferencedDoseReferenceSequenceInRTBeamsModule::Item &DRTReferencedDose
 }
 
 
-DRTReferencedDoseReferenceSequenceInRTBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTBeamsModule::operator[](const unsigned long num)
+DRTReferencedDoseReferenceSequenceInRTBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedDoseReferenceSequenceInRTBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTBeamsModule::operator[](const unsigned long num) const
+const DRTReferencedDoseReferenceSequenceInRTBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -434,7 +434,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::addItem(Item *&it
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -457,7 +457,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::insertItem(const
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrdrs6.cc b/dcmrt/libsrc/drtrdrs6.cc
index 0061003..6b0a827 100644
--- a/dcmrt/libsrc/drtrdrs6.cc
+++ b/dcmrt/libsrc/drtrdrs6.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -269,7 +269,7 @@ OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::isValid() const
 }
 
 
-unsigned long DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getNumberOfItems() const
+size_t DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -299,12 +299,12 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -319,12 +319,12 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -339,7 +339,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -375,7 +375,7 @@ const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedD
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -385,7 +385,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const
 }
 
 
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const unsigned long num)
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -395,7 +395,7 @@ DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseRef
 }
 
 
-const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const unsigned long num) const
+const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -405,13 +405,13 @@ const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedD
 }
 
 
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const unsigned long num)
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const unsigned long num) const
+const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -434,7 +434,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::addItem(Item *
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -457,7 +457,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::insertItem(con
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrdrs8.cc b/dcmrt/libsrc/drtrdrs8.cc
index 0dadddd..acf0001 100644
--- a/dcmrt/libsrc/drtrdrs8.cc
+++ b/dcmrt/libsrc/drtrdrs8.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -649,7 +649,7 @@ OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::isValid() con
 }
 
 
-unsigned long DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getNumberOfItems() const
+size_t DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -679,12 +679,12 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoNext
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -699,12 +699,12 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -719,7 +719,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -755,7 +755,7 @@ const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTRefer
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -765,7 +765,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(
 }
 
 
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const unsigned long num)
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -775,7 +775,7 @@ DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedD
 }
 
 
-const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const unsigned long num) const
+const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -785,13 +785,13 @@ const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTRefer
 }
 
 
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const unsigned long num)
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const unsigned long num) const
+const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -814,7 +814,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::addItem(
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -837,7 +837,7 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::insertIt
 }
 
 
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrds.cc b/dcmrt/libsrc/drtrds.cc
index 9db4526..eab2439 100644
--- a/dcmrt/libsrc/drtrds.cc
+++ b/dcmrt/libsrc/drtrds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTReferencedDoseSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedDoseSequence::getNumberOfItems() const
+size_t DRTReferencedDoseSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTReferencedDoseSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedDoseSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedDoseSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTReferencedDoseSequence::gotoItem(const unsigned long num, OFListI
 }
 
 
-OFCondition DRTReferencedDoseSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedDoseSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTReferencedDoseSequence::gotoItem(const unsigned long num, OFListC
 }
 
 
-OFCondition DRTReferencedDoseSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedDoseSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getCurrentItem
 }
 
 
-OFCondition DRTReferencedDoseSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedDoseSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTReferencedDoseSequence::getItem(const unsigned long num, Item *&i
 }
 
 
-DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getItem(const unsigned long num)
+DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getItem(const unsign
 }
 
 
-const DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getItem(const unsigned long num) const
+const DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getItem(const
 }
 
 
-DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::operator[](const unsigned long num)
+DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::operator[](const unsigned long num) const
+const DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTReferencedDoseSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedDoseSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedDoseSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTReferencedDoseSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTReferencedDoseSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedDoseSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrecs.cc b/dcmrt/libsrc/drtrecs.cc
index ec67009..ceae6fb 100644
--- a/dcmrt/libsrc/drtrecs.cc
+++ b/dcmrt/libsrc/drtrecs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIElementalCompositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -243,7 +243,7 @@ OFBool DRTROIElementalCompositionSequence::isValid() const
 }
 
 
-unsigned long DRTROIElementalCompositionSequence::getNumberOfItems() const
+size_t DRTROIElementalCompositionSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -273,12 +273,12 @@ OFCondition DRTROIElementalCompositionSequence::gotoNextItem()
 }
 
 
-OFCondition DRTROIElementalCompositionSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTROIElementalCompositionSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -293,12 +293,12 @@ OFCondition DRTROIElementalCompositionSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTROIElementalCompositionSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTROIElementalCompositionSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -313,7 +313,7 @@ OFCondition DRTROIElementalCompositionSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTROIElementalCompositionSequence::gotoItem(const unsigned long num)
+OFCondition DRTROIElementalCompositionSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -349,7 +349,7 @@ const DRTROIElementalCompositionSequence::Item &DRTROIElementalCompositionSequen
 }
 
 
-OFCondition DRTROIElementalCompositionSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTROIElementalCompositionSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -359,7 +359,7 @@ OFCondition DRTROIElementalCompositionSequence::getItem(const unsigned long num,
 }
 
 
-DRTROIElementalCompositionSequence::Item &DRTROIElementalCompositionSequence::getItem(const unsigned long num)
+DRTROIElementalCompositionSequence::Item &DRTROIElementalCompositionSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -369,7 +369,7 @@ DRTROIElementalCompositionSequence::Item &DRTROIElementalCompositionSequence::ge
 }
 
 
-const DRTROIElementalCompositionSequence::Item &DRTROIElementalCompositionSequence::getItem(const unsigned long num) const
+const DRTROIElementalCompositionSequence::Item &DRTROIElementalCompositionSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -379,13 +379,13 @@ const DRTROIElementalCompositionSequence::Item &DRTROIElementalCompositionSequen
 }
 
 
-DRTROIElementalCompositionSequence::Item &DRTROIElementalCompositionSequence::operator[](const unsigned long num)
+DRTROIElementalCompositionSequence::Item &DRTROIElementalCompositionSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTROIElementalCompositionSequence::Item &DRTROIElementalCompositionSequence::operator[](const unsigned long num) const
+const DRTROIElementalCompositionSequence::Item &DRTROIElementalCompositionSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -408,7 +408,7 @@ OFCondition DRTROIElementalCompositionSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTROIElementalCompositionSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTROIElementalCompositionSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -431,7 +431,7 @@ OFCondition DRTROIElementalCompositionSequence::insertItem(const unsigned long p
 }
 
 
-OFCondition DRTROIElementalCompositionSequence::removeItem(const unsigned long pos)
+OFCondition DRTROIElementalCompositionSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrfgs.cc b/dcmrt/libsrc/drtrfgs.cc
index e82a286..57959a6 100644
--- a/dcmrt/libsrc/drtrfgs.cc
+++ b/dcmrt/libsrc/drtrfgs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -245,7 +245,7 @@ OFBool DRTReferencedFractionGroupSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedFractionGroupSequence::getNumberOfItems() const
+size_t DRTReferencedFractionGroupSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -275,12 +275,12 @@ OFCondition DRTReferencedFractionGroupSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedFractionGroupSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedFractionGroupSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -295,12 +295,12 @@ OFCondition DRTReferencedFractionGroupSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTReferencedFractionGroupSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedFractionGroupSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -315,7 +315,7 @@ OFCondition DRTReferencedFractionGroupSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTReferencedFractionGroupSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedFractionGroupSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -351,7 +351,7 @@ const DRTReferencedFractionGroupSequence::Item &DRTReferencedFractionGroupSequen
 }
 
 
-OFCondition DRTReferencedFractionGroupSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedFractionGroupSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -361,7 +361,7 @@ OFCondition DRTReferencedFractionGroupSequence::getItem(const unsigned long num,
 }
 
 
-DRTReferencedFractionGroupSequence::Item &DRTReferencedFractionGroupSequence::getItem(const unsigned long num)
+DRTReferencedFractionGroupSequence::Item &DRTReferencedFractionGroupSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -371,7 +371,7 @@ DRTReferencedFractionGroupSequence::Item &DRTReferencedFractionGroupSequence::ge
 }
 
 
-const DRTReferencedFractionGroupSequence::Item &DRTReferencedFractionGroupSequence::getItem(const unsigned long num) const
+const DRTReferencedFractionGroupSequence::Item &DRTReferencedFractionGroupSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -381,13 +381,13 @@ const DRTReferencedFractionGroupSequence::Item &DRTReferencedFractionGroupSequen
 }
 
 
-DRTReferencedFractionGroupSequence::Item &DRTReferencedFractionGroupSequence::operator[](const unsigned long num)
+DRTReferencedFractionGroupSequence::Item &DRTReferencedFractionGroupSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedFractionGroupSequence::Item &DRTReferencedFractionGroupSequence::operator[](const unsigned long num) const
+const DRTReferencedFractionGroupSequence::Item &DRTReferencedFractionGroupSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -410,7 +410,7 @@ OFCondition DRTReferencedFractionGroupSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedFractionGroupSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedFractionGroupSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -433,7 +433,7 @@ OFCondition DRTReferencedFractionGroupSequence::insertItem(const unsigned long p
 }
 
 
-OFCondition DRTReferencedFractionGroupSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedFractionGroupSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrfors.cc b/dcmrt/libsrc/drtrfors.cc
index a8b33d0..859edc4 100644
--- a/dcmrt/libsrc/drtrfors.cc
+++ b/dcmrt/libsrc/drtrfors.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedFrameOfReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -229,7 +229,7 @@ OFBool DRTReferencedFrameOfReferenceSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedFrameOfReferenceSequence::getNumberOfItems() const
+size_t DRTReferencedFrameOfReferenceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -259,12 +259,12 @@ OFCondition DRTReferencedFrameOfReferenceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedFrameOfReferenceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedFrameOfReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -279,12 +279,12 @@ OFCondition DRTReferencedFrameOfReferenceSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTReferencedFrameOfReferenceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedFrameOfReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -299,7 +299,7 @@ OFCondition DRTReferencedFrameOfReferenceSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTReferencedFrameOfReferenceSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedFrameOfReferenceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -335,7 +335,7 @@ const DRTReferencedFrameOfReferenceSequence::Item &DRTReferencedFrameOfReference
 }
 
 
-OFCondition DRTReferencedFrameOfReferenceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedFrameOfReferenceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -345,7 +345,7 @@ OFCondition DRTReferencedFrameOfReferenceSequence::getItem(const unsigned long n
 }
 
 
-DRTReferencedFrameOfReferenceSequence::Item &DRTReferencedFrameOfReferenceSequence::getItem(const unsigned long num)
+DRTReferencedFrameOfReferenceSequence::Item &DRTReferencedFrameOfReferenceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -355,7 +355,7 @@ DRTReferencedFrameOfReferenceSequence::Item &DRTReferencedFrameOfReferenceSequen
 }
 
 
-const DRTReferencedFrameOfReferenceSequence::Item &DRTReferencedFrameOfReferenceSequence::getItem(const unsigned long num) const
+const DRTReferencedFrameOfReferenceSequence::Item &DRTReferencedFrameOfReferenceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -365,13 +365,13 @@ const DRTReferencedFrameOfReferenceSequence::Item &DRTReferencedFrameOfReference
 }
 
 
-DRTReferencedFrameOfReferenceSequence::Item &DRTReferencedFrameOfReferenceSequence::operator[](const unsigned long num)
+DRTReferencedFrameOfReferenceSequence::Item &DRTReferencedFrameOfReferenceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedFrameOfReferenceSequence::Item &DRTReferencedFrameOfReferenceSequence::operator[](const unsigned long num) const
+const DRTReferencedFrameOfReferenceSequence::Item &DRTReferencedFrameOfReferenceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -394,7 +394,7 @@ OFCondition DRTReferencedFrameOfReferenceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedFrameOfReferenceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedFrameOfReferenceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -417,7 +417,7 @@ OFCondition DRTReferencedFrameOfReferenceSequence::insertItem(const unsigned lon
 }
 
 
-OFCondition DRTReferencedFrameOfReferenceSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedFrameOfReferenceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrics.cc b/dcmrt/libsrc/drtrics.cc
index 8b21d11..d325798 100644
--- a/dcmrt/libsrc/drtrics.cc
+++ b/dcmrt/libsrc/drtrics.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,7 +34,9 @@ DRTRTROIIdentificationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
+    SegmentedPropertyTypeModifierCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     URNCodeValue(DCM_URNCodeValue)
 {
 }
@@ -55,7 +57,9 @@ DRTRTROIIdentificationCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
+    SegmentedPropertyTypeModifierCodeSequence(copy.SegmentedPropertyTypeModifierCodeSequence),
     URNCodeValue(copy.URNCodeValue)
 {
 }
@@ -84,7 +88,9 @@ DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::It
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
+        SegmentedPropertyTypeModifierCodeSequence = copy.SegmentedPropertyTypeModifierCodeSequence;
         URNCodeValue = copy.URNCodeValue;
     }
     return *this;
@@ -107,10 +113,12 @@ void DRTRTROIIdentificationCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
         ContextGroupExtensionCreatorUID.clear();
+        SegmentedPropertyTypeModifierCodeSequence.clear();
     }
 }
 
@@ -128,10 +136,12 @@ OFBool DRTRTROIIdentificationCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
-           ContextGroupExtensionCreatorUID.isEmpty();
+           ContextGroupExtensionCreatorUID.isEmpty() &&
+           SegmentedPropertyTypeModifierCodeSequence.isEmpty();
 }
 
 
@@ -159,10 +169,12 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "RTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "RTROIIdentificationCodeSequence");
+        SegmentedPropertyTypeModifierCodeSequence.read(item, "1-n", "3", "RTROIIdentificationCodeSequence");
         result = EC_Normal;
     }
     return result;
@@ -186,10 +198,12 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "RTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "RTROIIdentificationCodeSequence");
+        if (result.good()) result = SegmentedPropertyTypeModifierCodeSequence.write(item, "1-n", "3", "RTROIIdentificationCodeSequence");
     }
     return result;
 }
@@ -303,6 +317,15 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::getMappingResource(OFStrin
 }
 
 
+OFCondition DRTRTROIIdentificationCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTRTROIIdentificationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +500,19 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::setMappingResource(const O
 }
 
 
+OFCondition DRTRTROIIdentificationCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTRTROIIdentificationCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +642,7 @@ OFBool DRTRTROIIdentificationCodeSequence::isValid() const
 }
 
 
-unsigned long DRTRTROIIdentificationCodeSequence::getNumberOfItems() const
+size_t DRTRTROIIdentificationCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +672,12 @@ OFCondition DRTRTROIIdentificationCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRTROIIdentificationCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRTROIIdentificationCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +692,12 @@ OFCondition DRTRTROIIdentificationCodeSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTRTROIIdentificationCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRTROIIdentificationCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +712,7 @@ OFCondition DRTRTROIIdentificationCodeSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTRTROIIdentificationCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTRTROIIdentificationCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +748,7 @@ const DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequen
 }
 
 
-OFCondition DRTRTROIIdentificationCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRTROIIdentificationCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +758,7 @@ OFCondition DRTRTROIIdentificationCodeSequence::getItem(const unsigned long num,
 }
 
 
-DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::getItem(const unsigned long num)
+DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +768,7 @@ DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::ge
 }
 
 
-const DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::getItem(const unsigned long num) const
+const DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +778,13 @@ const DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequen
 }
 
 
-DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::operator[](const unsigned long num)
+DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::operator[](const unsigned long num) const
+const DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +807,7 @@ OFCondition DRTRTROIIdentificationCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRTROIIdentificationCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRTROIIdentificationCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +830,7 @@ OFCondition DRTRTROIIdentificationCodeSequence::insertItem(const unsigned long p
 }
 
 
-OFCondition DRTRTROIIdentificationCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTRTROIIdentificationCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrims.cc b/dcmrt/libsrc/drtrims.cc
index 27c6926..4c43af9 100644
--- a/dcmrt/libsrc/drtrims.cc
+++ b/dcmrt/libsrc/drtrims.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -321,7 +321,7 @@ OFBool DRTReferencedImageSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedImageSequence::getNumberOfItems() const
+size_t DRTReferencedImageSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -351,12 +351,12 @@ OFCondition DRTReferencedImageSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedImageSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedImageSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -371,12 +371,12 @@ OFCondition DRTReferencedImageSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTReferencedImageSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedImageSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -391,7 +391,7 @@ OFCondition DRTReferencedImageSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTReferencedImageSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedImageSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -427,7 +427,7 @@ const DRTReferencedImageSequence::Item &DRTReferencedImageSequence::getCurrentIt
 }
 
 
-OFCondition DRTReferencedImageSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedImageSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -437,7 +437,7 @@ OFCondition DRTReferencedImageSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTReferencedImageSequence::Item &DRTReferencedImageSequence::getItem(const unsigned long num)
+DRTReferencedImageSequence::Item &DRTReferencedImageSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -447,7 +447,7 @@ DRTReferencedImageSequence::Item &DRTReferencedImageSequence::getItem(const unsi
 }
 
 
-const DRTReferencedImageSequence::Item &DRTReferencedImageSequence::getItem(const unsigned long num) const
+const DRTReferencedImageSequence::Item &DRTReferencedImageSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -457,13 +457,13 @@ const DRTReferencedImageSequence::Item &DRTReferencedImageSequence::getItem(cons
 }
 
 
-DRTReferencedImageSequence::Item &DRTReferencedImageSequence::operator[](const unsigned long num)
+DRTReferencedImageSequence::Item &DRTReferencedImageSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedImageSequence::Item &DRTReferencedImageSequence::operator[](const unsigned long num) const
+const DRTReferencedImageSequence::Item &DRTReferencedImageSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -486,7 +486,7 @@ OFCondition DRTReferencedImageSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedImageSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedImageSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -509,7 +509,7 @@ OFCondition DRTReferencedImageSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTReferencedImageSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedImageSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtris.cc b/dcmrt/libsrc/drtris.cc
index 4628e26..b42fdd7 100644
--- a/dcmrt/libsrc/drtris.cc
+++ b/dcmrt/libsrc/drtris.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -258,7 +258,7 @@ OFBool DRTReferencedInstanceSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedInstanceSequence::getNumberOfItems() const
+size_t DRTReferencedInstanceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -288,12 +288,12 @@ OFCondition DRTReferencedInstanceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedInstanceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedInstanceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -308,12 +308,12 @@ OFCondition DRTReferencedInstanceSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTReferencedInstanceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedInstanceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -328,7 +328,7 @@ OFCondition DRTReferencedInstanceSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTReferencedInstanceSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedInstanceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -364,7 +364,7 @@ const DRTReferencedInstanceSequence::Item &DRTReferencedInstanceSequence::getCur
 }
 
 
-OFCondition DRTReferencedInstanceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedInstanceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -374,7 +374,7 @@ OFCondition DRTReferencedInstanceSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTReferencedInstanceSequence::Item &DRTReferencedInstanceSequence::getItem(const unsigned long num)
+DRTReferencedInstanceSequence::Item &DRTReferencedInstanceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -384,7 +384,7 @@ DRTReferencedInstanceSequence::Item &DRTReferencedInstanceSequence::getItem(cons
 }
 
 
-const DRTReferencedInstanceSequence::Item &DRTReferencedInstanceSequence::getItem(const unsigned long num) const
+const DRTReferencedInstanceSequence::Item &DRTReferencedInstanceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -394,13 +394,13 @@ const DRTReferencedInstanceSequence::Item &DRTReferencedInstanceSequence::getIte
 }
 
 
-DRTReferencedInstanceSequence::Item &DRTReferencedInstanceSequence::operator[](const unsigned long num)
+DRTReferencedInstanceSequence::Item &DRTReferencedInstanceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedInstanceSequence::Item &DRTReferencedInstanceSequence::operator[](const unsigned long num) const
+const DRTReferencedInstanceSequence::Item &DRTReferencedInstanceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -423,7 +423,7 @@ OFCondition DRTReferencedInstanceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedInstanceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedInstanceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -446,7 +446,7 @@ OFCondition DRTReferencedInstanceSequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTReferencedInstanceSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedInstanceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrlsds.cc b/dcmrt/libsrc/drtrlsds.cc
index 41c2ead..c5111df 100644
--- a/dcmrt/libsrc/drtrlsds.cc
+++ b/dcmrt/libsrc/drtrlsds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -289,7 +289,7 @@ OFBool DRTRecordedLateralSpreadingDeviceSequence::isValid() const
 }
 
 
-unsigned long DRTRecordedLateralSpreadingDeviceSequence::getNumberOfItems() const
+size_t DRTRecordedLateralSpreadingDeviceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -319,12 +319,12 @@ OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -339,12 +339,12 @@ OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoItem(const unsigned l
 }
 
 
-OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -359,7 +359,7 @@ OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoItem(const unsigned l
 }
 
 
-OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoItem(const unsigned long num)
+OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -395,7 +395,7 @@ const DRTRecordedLateralSpreadingDeviceSequence::Item &DRTRecordedLateralSpreadi
 }
 
 
-OFCondition DRTRecordedLateralSpreadingDeviceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRecordedLateralSpreadingDeviceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -405,7 +405,7 @@ OFCondition DRTRecordedLateralSpreadingDeviceSequence::getItem(const unsigned lo
 }
 
 
-DRTRecordedLateralSpreadingDeviceSequence::Item &DRTRecordedLateralSpreadingDeviceSequence::getItem(const unsigned long num)
+DRTRecordedLateralSpreadingDeviceSequence::Item &DRTRecordedLateralSpreadingDeviceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -415,7 +415,7 @@ DRTRecordedLateralSpreadingDeviceSequence::Item &DRTRecordedLateralSpreadingDevi
 }
 
 
-const DRTRecordedLateralSpreadingDeviceSequence::Item &DRTRecordedLateralSpreadingDeviceSequence::getItem(const unsigned long num) const
+const DRTRecordedLateralSpreadingDeviceSequence::Item &DRTRecordedLateralSpreadingDeviceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -425,13 +425,13 @@ const DRTRecordedLateralSpreadingDeviceSequence::Item &DRTRecordedLateralSpreadi
 }
 
 
-DRTRecordedLateralSpreadingDeviceSequence::Item &DRTRecordedLateralSpreadingDeviceSequence::operator[](const unsigned long num)
+DRTRecordedLateralSpreadingDeviceSequence::Item &DRTRecordedLateralSpreadingDeviceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRecordedLateralSpreadingDeviceSequence::Item &DRTRecordedLateralSpreadingDeviceSequence::operator[](const unsigned long num) const
+const DRTRecordedLateralSpreadingDeviceSequence::Item &DRTRecordedLateralSpreadingDeviceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -454,7 +454,7 @@ OFCondition DRTRecordedLateralSpreadingDeviceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRecordedLateralSpreadingDeviceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRecordedLateralSpreadingDeviceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -477,7 +477,7 @@ OFCondition DRTRecordedLateralSpreadingDeviceSequence::insertItem(const unsigned
 }
 
 
-OFCondition DRTRecordedLateralSpreadingDeviceSequence::removeItem(const unsigned long pos)
+OFCondition DRTRecordedLateralSpreadingDeviceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrmdrs.cc b/dcmrt/libsrc/drtrmdrs.cc
index f1548d2..bcd7a9e 100644
--- a/dcmrt/libsrc/drtrmdrs.cc
+++ b/dcmrt/libsrc/drtrmdrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -307,7 +307,7 @@ OFBool DRTReferencedMeasuredDoseReferenceSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedMeasuredDoseReferenceSequence::getNumberOfItems() const
+size_t DRTReferencedMeasuredDoseReferenceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -337,12 +337,12 @@ OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -357,12 +357,12 @@ OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -377,7 +377,7 @@ OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -413,7 +413,7 @@ const DRTReferencedMeasuredDoseReferenceSequence::Item &DRTReferencedMeasuredDos
 }
 
 
-OFCondition DRTReferencedMeasuredDoseReferenceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedMeasuredDoseReferenceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -423,7 +423,7 @@ OFCondition DRTReferencedMeasuredDoseReferenceSequence::getItem(const unsigned l
 }
 
 
-DRTReferencedMeasuredDoseReferenceSequence::Item &DRTReferencedMeasuredDoseReferenceSequence::getItem(const unsigned long num)
+DRTReferencedMeasuredDoseReferenceSequence::Item &DRTReferencedMeasuredDoseReferenceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -433,7 +433,7 @@ DRTReferencedMeasuredDoseReferenceSequence::Item &DRTReferencedMeasuredDoseRefer
 }
 
 
-const DRTReferencedMeasuredDoseReferenceSequence::Item &DRTReferencedMeasuredDoseReferenceSequence::getItem(const unsigned long num) const
+const DRTReferencedMeasuredDoseReferenceSequence::Item &DRTReferencedMeasuredDoseReferenceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -443,13 +443,13 @@ const DRTReferencedMeasuredDoseReferenceSequence::Item &DRTReferencedMeasuredDos
 }
 
 
-DRTReferencedMeasuredDoseReferenceSequence::Item &DRTReferencedMeasuredDoseReferenceSequence::operator[](const unsigned long num)
+DRTReferencedMeasuredDoseReferenceSequence::Item &DRTReferencedMeasuredDoseReferenceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedMeasuredDoseReferenceSequence::Item &DRTReferencedMeasuredDoseReferenceSequence::operator[](const unsigned long num) const
+const DRTReferencedMeasuredDoseReferenceSequence::Item &DRTReferencedMeasuredDoseReferenceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -472,7 +472,7 @@ OFCondition DRTReferencedMeasuredDoseReferenceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedMeasuredDoseReferenceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedMeasuredDoseReferenceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -495,7 +495,7 @@ OFCondition DRTReferencedMeasuredDoseReferenceSequence::insertItem(const unsigne
 }
 
 
-OFCondition DRTReferencedMeasuredDoseReferenceSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedMeasuredDoseReferenceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrms.cc b/dcmrt/libsrc/drtrms.cc
index e13e9d3..5cddda4 100644
--- a/dcmrt/libsrc/drtrms.cc
+++ b/dcmrt/libsrc/drtrms.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -376,7 +376,7 @@ OFBool DRTRangeModulatorSequence::isValid() const
 }
 
 
-unsigned long DRTRangeModulatorSequence::getNumberOfItems() const
+size_t DRTRangeModulatorSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -406,12 +406,12 @@ OFCondition DRTRangeModulatorSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRangeModulatorSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRangeModulatorSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -426,12 +426,12 @@ OFCondition DRTRangeModulatorSequence::gotoItem(const unsigned long num, OFListI
 }
 
 
-OFCondition DRTRangeModulatorSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRangeModulatorSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -446,7 +446,7 @@ OFCondition DRTRangeModulatorSequence::gotoItem(const unsigned long num, OFListC
 }
 
 
-OFCondition DRTRangeModulatorSequence::gotoItem(const unsigned long num)
+OFCondition DRTRangeModulatorSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -482,7 +482,7 @@ const DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getCurrentItem
 }
 
 
-OFCondition DRTRangeModulatorSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRangeModulatorSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -492,7 +492,7 @@ OFCondition DRTRangeModulatorSequence::getItem(const unsigned long num, Item *&i
 }
 
 
-DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getItem(const unsigned long num)
+DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -502,7 +502,7 @@ DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getItem(const unsign
 }
 
 
-const DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getItem(const unsigned long num) const
+const DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -512,13 +512,13 @@ const DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getItem(const
 }
 
 
-DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::operator[](const unsigned long num)
+DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::operator[](const unsigned long num) const
+const DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -541,7 +541,7 @@ OFCondition DRTRangeModulatorSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRangeModulatorSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRangeModulatorSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -564,7 +564,7 @@ OFCondition DRTRangeModulatorSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTRangeModulatorSequence::removeItem(const unsigned long pos)
+OFCondition DRTRangeModulatorSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrmss6.cc b/dcmrt/libsrc/drtrmss6.cc
index d1710ae..bea2e30 100644
--- a/dcmrt/libsrc/drtrmss6.cc
+++ b/dcmrt/libsrc/drtrmss6.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -356,7 +356,7 @@ OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::isValid() const
 }
 
 
-unsigned long DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
+size_t DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -386,12 +386,12 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -406,12 +406,12 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -426,7 +426,7 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -462,7 +462,7 @@ const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulat
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -472,7 +472,7 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const u
 }
 
 
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const unsigned long num)
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -482,7 +482,7 @@ DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSett
 }
 
 
-const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const unsigned long num) const
+const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -492,13 +492,13 @@ const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulat
 }
 
 
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const unsigned long num)
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const unsigned long num) const
+const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -521,7 +521,7 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::addItem(Item *&
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -544,7 +544,7 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::insertItem(cons
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrmss7.cc b/dcmrt/libsrc/drtrmss7.cc
index 125b195..9f0d500 100644
--- a/dcmrt/libsrc/drtrmss7.cc
+++ b/dcmrt/libsrc/drtrmss7.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -281,7 +281,7 @@ OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::isValid
 }
 
 
-unsigned long DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
+size_t DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -311,12 +311,12 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::go
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -331,12 +331,12 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::go
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -351,7 +351,7 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::go
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num)
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -387,7 +387,7 @@ const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DR
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -397,7 +397,7 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::ge
 }
 
 
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num)
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -407,7 +407,7 @@ DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRange
 }
 
 
-const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num) const
+const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -417,13 +417,13 @@ const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DR
 }
 
 
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const unsigned long num)
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const unsigned long num) const
+const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -446,7 +446,7 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::ad
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -469,7 +469,7 @@ OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::in
 }
 
 
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const unsigned long pos)
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrpcs.cc b/dcmrt/libsrc/drtrpcs.cc
index 093a758..3a59a8d 100644
--- a/dcmrt/libsrc/drtrpcs.cc
+++ b/dcmrt/libsrc/drtrpcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTRequestedProcedureCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTRequestedProcedureCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::Item
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTRequestedProcedureCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTRequestedProcedureCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "RequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "RequestedProcedureCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "RequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "RequestedProcedureCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTRequestedProcedureCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTRequestedProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::setMappingResource(const OF
 }
 
 
+OFCondition DRTRequestedProcedureCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTRequestedProcedureCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTRequestedProcedureCodeSequence::isValid() const
 }
 
 
-unsigned long DRTRequestedProcedureCodeSequence::getNumberOfItems() const
+size_t DRTRequestedProcedureCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTRequestedProcedureCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRequestedProcedureCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRequestedProcedureCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTRequestedProcedureCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTRequestedProcedureCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRequestedProcedureCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTRequestedProcedureCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTRequestedProcedureCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTRequestedProcedureCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence
 }
 
 
-OFCondition DRTRequestedProcedureCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRequestedProcedureCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTRequestedProcedureCodeSequence::getItem(const unsigned long num,
 }
 
 
-DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::getItem(const unsigned long num)
+DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::getI
 }
 
 
-const DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::getItem(const unsigned long num) const
+const DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence
 }
 
 
-DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::operator[](const unsigned long num)
+DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::operator[](const unsigned long num) const
+const DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTRequestedProcedureCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRequestedProcedureCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRequestedProcedureCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTRequestedProcedureCodeSequence::insertItem(const unsigned long po
 }
 
 
-OFCondition DRTRequestedProcedureCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTRequestedProcedureCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrpis.cc b/dcmrt/libsrc/drtrpis.cc
index 0fd7a5d..3369bfa 100644
--- a/dcmrt/libsrc/drtrpis.cc
+++ b/dcmrt/libsrc/drtrpis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferringPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -352,7 +352,7 @@ OFBool DRTReferringPhysicianIdentificationSequence::isValid() const
 }
 
 
-unsigned long DRTReferringPhysicianIdentificationSequence::getNumberOfItems() const
+size_t DRTReferringPhysicianIdentificationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -382,12 +382,12 @@ OFCondition DRTReferringPhysicianIdentificationSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -402,12 +402,12 @@ OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -422,7 +422,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -458,7 +458,7 @@ const DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianId
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferringPhysicianIdentificationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -468,7 +468,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::getItem(const unsigned
 }
 
 
-DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::getItem(const unsigned long num)
+DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -478,7 +478,7 @@ DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentifi
 }
 
 
-const DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::getItem(const unsigned long num) const
+const DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -488,13 +488,13 @@ const DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianId
 }
 
 
-DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::operator[](const unsigned long num)
+DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::operator[](const unsigned long num) const
+const DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -517,7 +517,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferringPhysicianIdentificationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -540,7 +540,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::insertItem(const unsign
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferringPhysicianIdentificationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrppcs.cc b/dcmrt/libsrc/drtrppcs.cc
index 53cd0a2..11d2aff 100644
--- a/dcmrt/libsrc/drtrppcs.cc
+++ b/dcmrt/libsrc/drtrppcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReasonForPerformedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTReasonForPerformedProcedureCodeSequence::Item::Item(const OFBool emptyDefault
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTReasonForPerformedProcedureCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedure
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTReasonForPerformedProcedureCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTReasonForPerformedProcedureCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::read(DcmItem &item
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ReasonForPerformedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::write(DcmItem &ite
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ReasonForPerformedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getMappingResource
 }
 
 
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setMappingResource
 }
 
 
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTReasonForPerformedProcedureCodeSequence::isValid() const
 }
 
 
-unsigned long DRTReasonForPerformedProcedureCodeSequence::getNumberOfItems() const
+size_t DRTReasonForPerformedProcedureCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedPro
 }
 
 
-OFCondition DRTReasonForPerformedProcedureCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReasonForPerformedProcedureCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::getItem(const unsigned l
 }
 
 
-DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedureCodeSequence::getItem(const unsigned long num)
+DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedureCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedure
 }
 
 
-const DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedureCodeSequence::getItem(const unsigned long num) const
+const DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedureCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedPro
 }
 
 
-DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedureCodeSequence::operator[](const unsigned long num)
+DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedureCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedureCodeSequence::operator[](const unsigned long num) const
+const DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedureCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReasonForPerformedProcedureCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReasonForPerformedProcedureCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::insertItem(const unsigne
 }
 
 
-OFCondition DRTReasonForPerformedProcedureCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTReasonForPerformedProcedureCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrpphs.cc b/dcmrt/libsrc/drtrpphs.cc
index 0a8910b..7fcf754 100644
--- a/dcmrt/libsrc/drtrpphs.cc
+++ b/dcmrt/libsrc/drtrpphs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPatientPhotoSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -322,7 +322,7 @@ OFBool DRTReferencedPatientPhotoSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedPatientPhotoSequence::getNumberOfItems() const
+size_t DRTReferencedPatientPhotoSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -352,12 +352,12 @@ OFCondition DRTReferencedPatientPhotoSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedPatientPhotoSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedPatientPhotoSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -372,12 +372,12 @@ OFCondition DRTReferencedPatientPhotoSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTReferencedPatientPhotoSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedPatientPhotoSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -392,7 +392,7 @@ OFCondition DRTReferencedPatientPhotoSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTReferencedPatientPhotoSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedPatientPhotoSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -428,7 +428,7 @@ const DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence
 }
 
 
-OFCondition DRTReferencedPatientPhotoSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedPatientPhotoSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -438,7 +438,7 @@ OFCondition DRTReferencedPatientPhotoSequence::getItem(const unsigned long num,
 }
 
 
-DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence::getItem(const unsigned long num)
+DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -448,7 +448,7 @@ DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence::getI
 }
 
 
-const DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence::getItem(const unsigned long num) const
+const DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -458,13 +458,13 @@ const DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence
 }
 
 
-DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence::operator[](const unsigned long num)
+DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence::operator[](const unsigned long num) const
+const DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -487,7 +487,7 @@ OFCondition DRTReferencedPatientPhotoSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedPatientPhotoSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedPatientPhotoSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -510,7 +510,7 @@ OFCondition DRTReferencedPatientPhotoSequence::insertItem(const unsigned long po
 }
 
 
-OFCondition DRTReferencedPatientPhotoSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedPatientPhotoSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrpps.cc b/dcmrt/libsrc/drtrpps.cc
index 6eb0ef4..86219b5 100644
--- a/dcmrt/libsrc/drtrpps.cc
+++ b/dcmrt/libsrc/drtrpps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIPhysicalPropertiesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -267,7 +267,7 @@ OFBool DRTROIPhysicalPropertiesSequence::isValid() const
 }
 
 
-unsigned long DRTROIPhysicalPropertiesSequence::getNumberOfItems() const
+size_t DRTROIPhysicalPropertiesSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -297,12 +297,12 @@ OFCondition DRTROIPhysicalPropertiesSequence::gotoNextItem()
 }
 
 
-OFCondition DRTROIPhysicalPropertiesSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTROIPhysicalPropertiesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -317,12 +317,12 @@ OFCondition DRTROIPhysicalPropertiesSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTROIPhysicalPropertiesSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTROIPhysicalPropertiesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -337,7 +337,7 @@ OFCondition DRTROIPhysicalPropertiesSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTROIPhysicalPropertiesSequence::gotoItem(const unsigned long num)
+OFCondition DRTROIPhysicalPropertiesSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -373,7 +373,7 @@ const DRTROIPhysicalPropertiesSequence::Item &DRTROIPhysicalPropertiesSequence::
 }
 
 
-OFCondition DRTROIPhysicalPropertiesSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTROIPhysicalPropertiesSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -383,7 +383,7 @@ OFCondition DRTROIPhysicalPropertiesSequence::getItem(const unsigned long num, I
 }
 
 
-DRTROIPhysicalPropertiesSequence::Item &DRTROIPhysicalPropertiesSequence::getItem(const unsigned long num)
+DRTROIPhysicalPropertiesSequence::Item &DRTROIPhysicalPropertiesSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -393,7 +393,7 @@ DRTROIPhysicalPropertiesSequence::Item &DRTROIPhysicalPropertiesSequence::getIte
 }
 
 
-const DRTROIPhysicalPropertiesSequence::Item &DRTROIPhysicalPropertiesSequence::getItem(const unsigned long num) const
+const DRTROIPhysicalPropertiesSequence::Item &DRTROIPhysicalPropertiesSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -403,13 +403,13 @@ const DRTROIPhysicalPropertiesSequence::Item &DRTROIPhysicalPropertiesSequence::
 }
 
 
-DRTROIPhysicalPropertiesSequence::Item &DRTROIPhysicalPropertiesSequence::operator[](const unsigned long num)
+DRTROIPhysicalPropertiesSequence::Item &DRTROIPhysicalPropertiesSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTROIPhysicalPropertiesSequence::Item &DRTROIPhysicalPropertiesSequence::operator[](const unsigned long num) const
+const DRTROIPhysicalPropertiesSequence::Item &DRTROIPhysicalPropertiesSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -432,7 +432,7 @@ OFCondition DRTROIPhysicalPropertiesSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTROIPhysicalPropertiesSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTROIPhysicalPropertiesSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -455,7 +455,7 @@ OFCondition DRTROIPhysicalPropertiesSequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTROIPhysicalPropertiesSequence::removeItem(const unsigned long pos)
+OFCondition DRTROIPhysicalPropertiesSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrppss.cc b/dcmrt/libsrc/drtrppss.cc
index 14f0744..2f63d81 100644
--- a/dcmrt/libsrc/drtrppss.cc
+++ b/dcmrt/libsrc/drtrppss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPerformedProcedureStepSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTReferencedPerformedProcedureStepSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedPerformedProcedureStepSequence::getNumberOfItems() const
+size_t DRTReferencedPerformedProcedureStepSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTReferencedPerformedProcedureStepSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedPerformedProcedureStepSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedPerformedProcedureStepSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTReferencedPerformedProcedureStepSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReferencedPerformedProcedureStepSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedPerformedProcedureStepSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTReferencedPerformedProcedureStepSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReferencedPerformedProcedureStepSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedPerformedProcedureStepSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTReferencedPerformedProcedureStepSequence::Item &DRTReferencedPerformedP
 }
 
 
-OFCondition DRTReferencedPerformedProcedureStepSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedPerformedProcedureStepSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTReferencedPerformedProcedureStepSequence::getItem(const unsigned
 }
 
 
-DRTReferencedPerformedProcedureStepSequence::Item &DRTReferencedPerformedProcedureStepSequence::getItem(const unsigned long num)
+DRTReferencedPerformedProcedureStepSequence::Item &DRTReferencedPerformedProcedureStepSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTReferencedPerformedProcedureStepSequence::Item &DRTReferencedPerformedProcedu
 }
 
 
-const DRTReferencedPerformedProcedureStepSequence::Item &DRTReferencedPerformedProcedureStepSequence::getItem(const unsigned long num) const
+const DRTReferencedPerformedProcedureStepSequence::Item &DRTReferencedPerformedProcedureStepSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTReferencedPerformedProcedureStepSequence::Item &DRTReferencedPerformedP
 }
 
 
-DRTReferencedPerformedProcedureStepSequence::Item &DRTReferencedPerformedProcedureStepSequence::operator[](const unsigned long num)
+DRTReferencedPerformedProcedureStepSequence::Item &DRTReferencedPerformedProcedureStepSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedPerformedProcedureStepSequence::Item &DRTReferencedPerformedProcedureStepSequence::operator[](const unsigned long num) const
+const DRTReferencedPerformedProcedureStepSequence::Item &DRTReferencedPerformedProcedureStepSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTReferencedPerformedProcedureStepSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedPerformedProcedureStepSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedPerformedProcedureStepSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTReferencedPerformedProcedureStepSequence::insertItem(const unsign
 }
 
 
-OFCondition DRTReferencedPerformedProcedureStepSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedPerformedProcedureStepSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrps.cc b/dcmrt/libsrc/drtrps.cc
index 03e800e..b5d807c 100644
--- a/dcmrt/libsrc/drtrps.cc
+++ b/dcmrt/libsrc/drtrps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPatientSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTReferencedPatientSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedPatientSequence::getNumberOfItems() const
+size_t DRTReferencedPatientSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTReferencedPatientSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedPatientSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedPatientSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTReferencedPatientSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTReferencedPatientSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedPatientSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTReferencedPatientSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTReferencedPatientSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedPatientSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTReferencedPatientSequence::Item &DRTReferencedPatientSequence::getCurre
 }
 
 
-OFCondition DRTReferencedPatientSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedPatientSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTReferencedPatientSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTReferencedPatientSequence::Item &DRTReferencedPatientSequence::getItem(const unsigned long num)
+DRTReferencedPatientSequence::Item &DRTReferencedPatientSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTReferencedPatientSequence::Item &DRTReferencedPatientSequence::getItem(const
 }
 
 
-const DRTReferencedPatientSequence::Item &DRTReferencedPatientSequence::getItem(const unsigned long num) const
+const DRTReferencedPatientSequence::Item &DRTReferencedPatientSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTReferencedPatientSequence::Item &DRTReferencedPatientSequence::getItem(
 }
 
 
-DRTReferencedPatientSequence::Item &DRTReferencedPatientSequence::operator[](const unsigned long num)
+DRTReferencedPatientSequence::Item &DRTReferencedPatientSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedPatientSequence::Item &DRTReferencedPatientSequence::operator[](const unsigned long num) const
+const DRTReferencedPatientSequence::Item &DRTReferencedPatientSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTReferencedPatientSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedPatientSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedPatientSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTReferencedPatientSequence::insertItem(const unsigned long pos, It
 }
 
 
-OFCondition DRTReferencedPatientSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedPatientSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrris1.cc b/dcmrt/libsrc/drtrris1.cc
index 0feb958..0747d4d 100644
--- a/dcmrt/libsrc/drtrris1.cc
+++ b/dcmrt/libsrc/drtrris1.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedReferenceImageSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -365,7 +365,7 @@ OFBool DRTReferencedReferenceImageSequenceInRTBeamsModule::isValid() const
 }
 
 
-unsigned long DRTReferencedReferenceImageSequenceInRTBeamsModule::getNumberOfItems() const
+size_t DRTReferencedReferenceImageSequenceInRTBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -395,12 +395,12 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -415,12 +415,12 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoItem(const u
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -435,7 +435,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoItem(const u
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -471,7 +471,7 @@ const DRTReferencedReferenceImageSequenceInRTBeamsModule::Item &DRTReferencedRef
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -481,7 +481,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::getItem(const un
 }
 
 
-DRTReferencedReferenceImageSequenceInRTBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTBeamsModule::getItem(const unsigned long num)
+DRTReferencedReferenceImageSequenceInRTBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -491,7 +491,7 @@ DRTReferencedReferenceImageSequenceInRTBeamsModule::Item &DRTReferencedReference
 }
 
 
-const DRTReferencedReferenceImageSequenceInRTBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTBeamsModule::getItem(const unsigned long num) const
+const DRTReferencedReferenceImageSequenceInRTBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -501,13 +501,13 @@ const DRTReferencedReferenceImageSequenceInRTBeamsModule::Item &DRTReferencedRef
 }
 
 
-DRTReferencedReferenceImageSequenceInRTBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTBeamsModule::operator[](const unsigned long num)
+DRTReferencedReferenceImageSequenceInRTBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedReferenceImageSequenceInRTBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTBeamsModule::operator[](const unsigned long num) const
+const DRTReferencedReferenceImageSequenceInRTBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -530,7 +530,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::addItem(Item *&i
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -553,7 +553,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::insertItem(const
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrris6.cc b/dcmrt/libsrc/drtrris6.cc
index d583bd4..5588adc 100644
--- a/dcmrt/libsrc/drtrris6.cc
+++ b/dcmrt/libsrc/drtrris6.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -289,7 +289,7 @@ OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::isValid() const
 }
 
 
-unsigned long DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getNumberOfItems() const
+size_t DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -319,12 +319,12 @@ OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoNextItem(
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -339,12 +339,12 @@ OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(cons
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -359,7 +359,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(cons
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -395,7 +395,7 @@ const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferenced
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -405,7 +405,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const
 }
 
 
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const unsigned long num)
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -415,7 +415,7 @@ DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedRefere
 }
 
 
-const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const unsigned long num) const
+const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -425,13 +425,13 @@ const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferenced
 }
 
 
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const unsigned long num)
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const unsigned long num) const
+const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -454,7 +454,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::addItem(Item
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -477,7 +477,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::insertItem(co
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrris9.cc b/dcmrt/libsrc/drtrris9.cc
index 3f51ce5..7e2ae51 100644
--- a/dcmrt/libsrc/drtrris9.cc
+++ b/dcmrt/libsrc/drtrris9.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::isV
 }
 
 
-unsigned long DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const
+size_t DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
 }
 
 
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const unsigned long num)
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTR
 }
 
 
-const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const unsigned long num) const
+const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item
 }
 
 
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const unsigned long num)
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const unsigned long num) const
+const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
 }
 
 
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrrms.cc b/dcmrt/libsrc/drtrrms.cc
index 1938aae..ad6a01f 100644
--- a/dcmrt/libsrc/drtrrms.cc
+++ b/dcmrt/libsrc/drtrrms.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -347,7 +347,7 @@ OFBool DRTRecordedRangeModulatorSequence::isValid() const
 }
 
 
-unsigned long DRTRecordedRangeModulatorSequence::getNumberOfItems() const
+size_t DRTRecordedRangeModulatorSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -377,12 +377,12 @@ OFCondition DRTRecordedRangeModulatorSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRecordedRangeModulatorSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRecordedRangeModulatorSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -397,12 +397,12 @@ OFCondition DRTRecordedRangeModulatorSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTRecordedRangeModulatorSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRecordedRangeModulatorSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -417,7 +417,7 @@ OFCondition DRTRecordedRangeModulatorSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTRecordedRangeModulatorSequence::gotoItem(const unsigned long num)
+OFCondition DRTRecordedRangeModulatorSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -453,7 +453,7 @@ const DRTRecordedRangeModulatorSequence::Item &DRTRecordedRangeModulatorSequence
 }
 
 
-OFCondition DRTRecordedRangeModulatorSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRecordedRangeModulatorSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -463,7 +463,7 @@ OFCondition DRTRecordedRangeModulatorSequence::getItem(const unsigned long num,
 }
 
 
-DRTRecordedRangeModulatorSequence::Item &DRTRecordedRangeModulatorSequence::getItem(const unsigned long num)
+DRTRecordedRangeModulatorSequence::Item &DRTRecordedRangeModulatorSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -473,7 +473,7 @@ DRTRecordedRangeModulatorSequence::Item &DRTRecordedRangeModulatorSequence::getI
 }
 
 
-const DRTRecordedRangeModulatorSequence::Item &DRTRecordedRangeModulatorSequence::getItem(const unsigned long num) const
+const DRTRecordedRangeModulatorSequence::Item &DRTRecordedRangeModulatorSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -483,13 +483,13 @@ const DRTRecordedRangeModulatorSequence::Item &DRTRecordedRangeModulatorSequence
 }
 
 
-DRTRecordedRangeModulatorSequence::Item &DRTRecordedRangeModulatorSequence::operator[](const unsigned long num)
+DRTRecordedRangeModulatorSequence::Item &DRTRecordedRangeModulatorSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRecordedRangeModulatorSequence::Item &DRTRecordedRangeModulatorSequence::operator[](const unsigned long num) const
+const DRTRecordedRangeModulatorSequence::Item &DRTRecordedRangeModulatorSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -512,7 +512,7 @@ OFCondition DRTRecordedRangeModulatorSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRecordedRangeModulatorSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRecordedRangeModulatorSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -535,7 +535,7 @@ OFCondition DRTRecordedRangeModulatorSequence::insertItem(const unsigned long po
 }
 
 
-OFCondition DRTRecordedRangeModulatorSequence::removeItem(const unsigned long pos)
+OFCondition DRTRecordedRangeModulatorSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrros.cc b/dcmrt/libsrc/drtrros.cc
index 5d8ad67..f38c2a3 100644
--- a/dcmrt/libsrc/drtrros.cc
+++ b/dcmrt/libsrc/drtrros.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -21,7 +21,6 @@
 
 DRTRTROIObservationsSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    AdditionalRTROIIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     MaterialID(DCM_MaterialID),
     ObservationNumber(DCM_ObservationNumber),
     ROIInterpreter(DCM_ROIInterpreter),
@@ -40,7 +39,6 @@ DRTRTROIObservationsSequence::Item::Item(const OFBool emptyDefaultItem)
 
 DRTRTROIObservationsSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AdditionalRTROIIdentificationCodeSequence(copy.AdditionalRTROIIdentificationCodeSequence),
     MaterialID(copy.MaterialID),
     ObservationNumber(copy.ObservationNumber),
     ROIInterpreter(copy.ROIInterpreter),
@@ -67,7 +65,6 @@ DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::Item::operator
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        AdditionalRTROIIdentificationCodeSequence = copy.AdditionalRTROIIdentificationCodeSequence;
         MaterialID = copy.MaterialID;
         ObservationNumber = copy.ObservationNumber;
         ROIInterpreter = copy.ROIInterpreter;
@@ -97,7 +94,6 @@ void DRTRTROIObservationsSequence::Item::clear()
         RTRelatedROISequence.clear();
         SegmentedPropertyCategoryCodeSequence.clear();
         RTROIIdentificationCodeSequence.clear();
-        AdditionalRTROIIdentificationCodeSequence.clear();
         RelatedRTROIObservationsSequence.clear();
         RTROIInterpretedType.clear();
         ROIInterpreter.clear();
@@ -116,7 +112,6 @@ OFBool DRTRTROIObservationsSequence::Item::isEmpty()
            RTRelatedROISequence.isEmpty() &&
            SegmentedPropertyCategoryCodeSequence.isEmpty() &&
            RTROIIdentificationCodeSequence.isEmpty() &&
-           AdditionalRTROIIdentificationCodeSequence.isEmpty() &&
            RelatedRTROIObservationsSequence.isEmpty() &&
            RTROIInterpretedType.isEmpty() &&
            ROIInterpreter.isEmpty() &&
@@ -145,7 +140,6 @@ OFCondition DRTRTROIObservationsSequence::Item::read(DcmItem &item)
         RTRelatedROISequence.read(item, "1-n", "3", "RTROIObservationsSequence");
         SegmentedPropertyCategoryCodeSequence.read(item, "1-n", "3", "RTROIObservationsSequence");
         RTROIIdentificationCodeSequence.read(item, "1-n", "3", "RTROIObservationsSequence");
-        AdditionalRTROIIdentificationCodeSequence.read(item, "1-n", "3", "RTROIObservationsSequence");
         RelatedRTROIObservationsSequence.read(item, "1-n", "3", "RTROIObservationsSequence");
         getAndCheckElementFromDataset(item, RTROIInterpretedType, "1", "2", "RTROIObservationsSequence");
         getAndCheckElementFromDataset(item, ROIInterpreter, "1", "2", "RTROIObservationsSequence");
@@ -170,7 +164,6 @@ OFCondition DRTRTROIObservationsSequence::Item::write(DcmItem &item)
         if (result.good()) result = RTRelatedROISequence.write(item, "1-n", "3", "RTROIObservationsSequence");
         if (result.good()) result = SegmentedPropertyCategoryCodeSequence.write(item, "1-n", "3", "RTROIObservationsSequence");
         if (result.good()) result = RTROIIdentificationCodeSequence.write(item, "1-n", "3", "RTROIObservationsSequence");
-        if (result.good()) result = AdditionalRTROIIdentificationCodeSequence.write(item, "1-n", "3", "RTROIObservationsSequence");
         if (result.good()) result = RelatedRTROIObservationsSequence.write(item, "1-n", "3", "RTROIObservationsSequence");
         addElementToDataset(result, item, new DcmCodeString(RTROIInterpretedType), "1", "2", "RTROIObservationsSequence");
         addElementToDataset(result, item, new DcmPersonName(ROIInterpreter), "1", "2", "RTROIObservationsSequence");
@@ -456,7 +449,7 @@ OFBool DRTRTROIObservationsSequence::isValid() const
 }
 
 
-unsigned long DRTRTROIObservationsSequence::getNumberOfItems() const
+size_t DRTRTROIObservationsSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -486,12 +479,12 @@ OFCondition DRTRTROIObservationsSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRTROIObservationsSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRTROIObservationsSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -506,12 +499,12 @@ OFCondition DRTRTROIObservationsSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTRTROIObservationsSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRTROIObservationsSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -526,7 +519,7 @@ OFCondition DRTRTROIObservationsSequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTRTROIObservationsSequence::gotoItem(const unsigned long num)
+OFCondition DRTRTROIObservationsSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -562,7 +555,7 @@ const DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::getCurre
 }
 
 
-OFCondition DRTRTROIObservationsSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRTROIObservationsSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -572,7 +565,7 @@ OFCondition DRTRTROIObservationsSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::getItem(const unsigned long num)
+DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -582,7 +575,7 @@ DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::getItem(const
 }
 
 
-const DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::getItem(const unsigned long num) const
+const DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -592,13 +585,13 @@ const DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::getItem(
 }
 
 
-DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::operator[](const unsigned long num)
+DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::operator[](const unsigned long num) const
+const DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -621,7 +614,7 @@ OFCondition DRTRTROIObservationsSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRTROIObservationsSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRTROIObservationsSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -644,7 +637,7 @@ OFCondition DRTRTROIObservationsSequence::insertItem(const unsigned long pos, It
 }
 
 
-OFCondition DRTRTROIObservationsSequence::removeItem(const unsigned long pos)
+OFCondition DRTRTROIObservationsSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrrpcs.cc b/dcmrt/libsrc/drtrrpcs.cc
index 8847f97..0b062bc 100644
--- a/dcmrt/libsrc/drtrrpcs.cc
+++ b/dcmrt/libsrc/drtrrpcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReasonForRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTReasonForRequestedProcedureCodeSequence::Item::Item(const OFBool emptyDefault
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTReasonForRequestedProcedureCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedure
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTReasonForRequestedProcedureCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTReasonForRequestedProcedureCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::read(DcmItem &item
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ReasonForRequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::write(DcmItem &ite
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ReasonForRequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getMappingResource
 }
 
 
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setMappingResource
 }
 
 
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTReasonForRequestedProcedureCodeSequence::isValid() const
 }
 
 
-unsigned long DRTReasonForRequestedProcedureCodeSequence::getNumberOfItems() const
+size_t DRTReasonForRequestedProcedureCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedPro
 }
 
 
-OFCondition DRTReasonForRequestedProcedureCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReasonForRequestedProcedureCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::getItem(const unsigned l
 }
 
 
-DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedureCodeSequence::getItem(const unsigned long num)
+DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedureCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedure
 }
 
 
-const DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedureCodeSequence::getItem(const unsigned long num) const
+const DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedureCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedPro
 }
 
 
-DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedureCodeSequence::operator[](const unsigned long num)
+DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedureCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedureCodeSequence::operator[](const unsigned long num) const
+const DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedureCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReasonForRequestedProcedureCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReasonForRequestedProcedureCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::insertItem(const unsigne
 }
 
 
-OFCondition DRTReasonForRequestedProcedureCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTReasonForRequestedProcedureCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrrros.cc b/dcmrt/libsrc/drtrrros.cc
index e11fe87..8451732 100644
--- a/dcmrt/libsrc/drtrrros.cc
+++ b/dcmrt/libsrc/drtrrros.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRelatedRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -231,7 +231,7 @@ OFBool DRTRelatedRTROIObservationsSequence::isValid() const
 }
 
 
-unsigned long DRTRelatedRTROIObservationsSequence::getNumberOfItems() const
+size_t DRTRelatedRTROIObservationsSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -261,12 +261,12 @@ OFCondition DRTRelatedRTROIObservationsSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRelatedRTROIObservationsSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRelatedRTROIObservationsSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -281,12 +281,12 @@ OFCondition DRTRelatedRTROIObservationsSequence::gotoItem(const unsigned long nu
 }
 
 
-OFCondition DRTRelatedRTROIObservationsSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRelatedRTROIObservationsSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,7 +301,7 @@ OFCondition DRTRelatedRTROIObservationsSequence::gotoItem(const unsigned long nu
 }
 
 
-OFCondition DRTRelatedRTROIObservationsSequence::gotoItem(const unsigned long num)
+OFCondition DRTRelatedRTROIObservationsSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -337,7 +337,7 @@ const DRTRelatedRTROIObservationsSequence::Item &DRTRelatedRTROIObservationsSequ
 }
 
 
-OFCondition DRTRelatedRTROIObservationsSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRelatedRTROIObservationsSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -347,7 +347,7 @@ OFCondition DRTRelatedRTROIObservationsSequence::getItem(const unsigned long num
 }
 
 
-DRTRelatedRTROIObservationsSequence::Item &DRTRelatedRTROIObservationsSequence::getItem(const unsigned long num)
+DRTRelatedRTROIObservationsSequence::Item &DRTRelatedRTROIObservationsSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -357,7 +357,7 @@ DRTRelatedRTROIObservationsSequence::Item &DRTRelatedRTROIObservationsSequence::
 }
 
 
-const DRTRelatedRTROIObservationsSequence::Item &DRTRelatedRTROIObservationsSequence::getItem(const unsigned long num) const
+const DRTRelatedRTROIObservationsSequence::Item &DRTRelatedRTROIObservationsSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -367,13 +367,13 @@ const DRTRelatedRTROIObservationsSequence::Item &DRTRelatedRTROIObservationsSequ
 }
 
 
-DRTRelatedRTROIObservationsSequence::Item &DRTRelatedRTROIObservationsSequence::operator[](const unsigned long num)
+DRTRelatedRTROIObservationsSequence::Item &DRTRelatedRTROIObservationsSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRelatedRTROIObservationsSequence::Item &DRTRelatedRTROIObservationsSequence::operator[](const unsigned long num) const
+const DRTRelatedRTROIObservationsSequence::Item &DRTRelatedRTROIObservationsSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -396,7 +396,7 @@ OFCondition DRTRelatedRTROIObservationsSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRelatedRTROIObservationsSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRelatedRTROIObservationsSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -419,7 +419,7 @@ OFCondition DRTRelatedRTROIObservationsSequence::insertItem(const unsigned long
 }
 
 
-OFCondition DRTRelatedRTROIObservationsSequence::removeItem(const unsigned long pos)
+OFCondition DRTRelatedRTROIObservationsSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrrs.cc b/dcmrt/libsrc/drtrrs.cc
index d149cb8..1ec2b8d 100644
--- a/dcmrt/libsrc/drtrrs.cc
+++ b/dcmrt/libsrc/drtrrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTRelatedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -260,7 +260,7 @@ OFBool DRTRTRelatedROISequence::isValid() const
 }
 
 
-unsigned long DRTRTRelatedROISequence::getNumberOfItems() const
+size_t DRTRTRelatedROISequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -290,12 +290,12 @@ OFCondition DRTRTRelatedROISequence::gotoNextItem()
 }
 
 
-OFCondition DRTRTRelatedROISequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRTRelatedROISequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -310,12 +310,12 @@ OFCondition DRTRTRelatedROISequence::gotoItem(const unsigned long num, OFListIte
 }
 
 
-OFCondition DRTRTRelatedROISequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRTRelatedROISequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,7 +330,7 @@ OFCondition DRTRTRelatedROISequence::gotoItem(const unsigned long num, OFListCon
 }
 
 
-OFCondition DRTRTRelatedROISequence::gotoItem(const unsigned long num)
+OFCondition DRTRTRelatedROISequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -366,7 +366,7 @@ const DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getCurrentItem() c
 }
 
 
-OFCondition DRTRTRelatedROISequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRTRelatedROISequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -376,7 +376,7 @@ OFCondition DRTRTRelatedROISequence::getItem(const unsigned long num, Item *&ite
 }
 
 
-DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getItem(const unsigned long num)
+DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -386,7 +386,7 @@ DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getItem(const unsigned l
 }
 
 
-const DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getItem(const unsigned long num) const
+const DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -396,13 +396,13 @@ const DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getItem(const unsi
 }
 
 
-DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::operator[](const unsigned long num)
+DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::operator[](const unsigned long num) const
+const DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -425,7 +425,7 @@ OFCondition DRTRTRelatedROISequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRTRelatedROISequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRTRelatedROISequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -448,7 +448,7 @@ OFCondition DRTRTRelatedROISequence::insertItem(const unsigned long pos, Item *&
 }
 
 
-OFCondition DRTRTRelatedROISequence::removeItem(const unsigned long pos)
+OFCondition DRTRTRelatedROISequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrrshs.cc b/dcmrt/libsrc/drtrrshs.cc
index b2988b0..5d7880d 100644
--- a/dcmrt/libsrc/drtrrshs.cc
+++ b/dcmrt/libsrc/drtrrshs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -289,7 +289,7 @@ OFBool DRTRecordedRangeShifterSequence::isValid() const
 }
 
 
-unsigned long DRTRecordedRangeShifterSequence::getNumberOfItems() const
+size_t DRTRecordedRangeShifterSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -319,12 +319,12 @@ OFCondition DRTRecordedRangeShifterSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRecordedRangeShifterSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRecordedRangeShifterSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -339,12 +339,12 @@ OFCondition DRTRecordedRangeShifterSequence::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTRecordedRangeShifterSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRecordedRangeShifterSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -359,7 +359,7 @@ OFCondition DRTRecordedRangeShifterSequence::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTRecordedRangeShifterSequence::gotoItem(const unsigned long num)
+OFCondition DRTRecordedRangeShifterSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -395,7 +395,7 @@ const DRTRecordedRangeShifterSequence::Item &DRTRecordedRangeShifterSequence::ge
 }
 
 
-OFCondition DRTRecordedRangeShifterSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRecordedRangeShifterSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -405,7 +405,7 @@ OFCondition DRTRecordedRangeShifterSequence::getItem(const unsigned long num, It
 }
 
 
-DRTRecordedRangeShifterSequence::Item &DRTRecordedRangeShifterSequence::getItem(const unsigned long num)
+DRTRecordedRangeShifterSequence::Item &DRTRecordedRangeShifterSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -415,7 +415,7 @@ DRTRecordedRangeShifterSequence::Item &DRTRecordedRangeShifterSequence::getItem(
 }
 
 
-const DRTRecordedRangeShifterSequence::Item &DRTRecordedRangeShifterSequence::getItem(const unsigned long num) const
+const DRTRecordedRangeShifterSequence::Item &DRTRecordedRangeShifterSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -425,13 +425,13 @@ const DRTRecordedRangeShifterSequence::Item &DRTRecordedRangeShifterSequence::ge
 }
 
 
-DRTRecordedRangeShifterSequence::Item &DRTRecordedRangeShifterSequence::operator[](const unsigned long num)
+DRTRecordedRangeShifterSequence::Item &DRTRecordedRangeShifterSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRecordedRangeShifterSequence::Item &DRTRecordedRangeShifterSequence::operator[](const unsigned long num) const
+const DRTRecordedRangeShifterSequence::Item &DRTRecordedRangeShifterSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -454,7 +454,7 @@ OFCondition DRTRecordedRangeShifterSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRecordedRangeShifterSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRecordedRangeShifterSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -477,7 +477,7 @@ OFCondition DRTRecordedRangeShifterSequence::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTRecordedRangeShifterSequence::removeItem(const unsigned long pos)
+OFCondition DRTRecordedRangeShifterSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrrtps.cc b/dcmrt/libsrc/drtrrtps.cc
index 2e16c55..614263e 100644
--- a/dcmrt/libsrc/drtrrtps.cc
+++ b/dcmrt/libsrc/drtrrtps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -258,7 +258,7 @@ OFBool DRTReferencedRTPlanSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedRTPlanSequence::getNumberOfItems() const
+size_t DRTReferencedRTPlanSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -288,12 +288,12 @@ OFCondition DRTReferencedRTPlanSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedRTPlanSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -308,12 +308,12 @@ OFCondition DRTReferencedRTPlanSequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTReferencedRTPlanSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -328,7 +328,7 @@ OFCondition DRTReferencedRTPlanSequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTReferencedRTPlanSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -364,7 +364,7 @@ const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getCurrent
 }
 
 
-OFCondition DRTReferencedRTPlanSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedRTPlanSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -374,7 +374,7 @@ OFCondition DRTReferencedRTPlanSequence::getItem(const unsigned long num, Item *
 }
 
 
-DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const unsigned long num)
+DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -384,7 +384,7 @@ DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const un
 }
 
 
-const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const unsigned long num) const
+const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -394,13 +394,13 @@ const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(co
 }
 
 
-DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const unsigned long num)
+DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const unsigned long num) const
+const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -423,7 +423,7 @@ OFCondition DRTReferencedRTPlanSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedRTPlanSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedRTPlanSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -446,7 +446,7 @@ OFCondition DRTReferencedRTPlanSequence::insertItem(const unsigned long pos, Ite
 }
 
 
-OFCondition DRTReferencedRTPlanSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedRTPlanSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrrtps3.cc b/dcmrt/libsrc/drtrrtps3.cc
index 3f084b0..a148443 100644
--- a/dcmrt/libsrc/drtrrtps3.cc
+++ b/dcmrt/libsrc/drtrrtps3.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -280,7 +280,7 @@ OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::isValid() const
 }
 
 
-unsigned long DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getNumberOfItems() const
+size_t DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -310,12 +310,12 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,12 +330,12 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const uns
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -350,7 +350,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const uns
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -386,7 +386,7 @@ const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPla
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -396,7 +396,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const unsi
 }
 
 
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const unsigned long num)
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -406,7 +406,7 @@ DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSeque
 }
 
 
-const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const unsigned long num) const
+const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -416,13 +416,13 @@ const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPla
 }
 
 
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const unsigned long num)
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const unsigned long num) const
+const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -445,7 +445,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::addItem(Item *&ite
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -468,7 +468,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::insertItem(const u
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrrtps4.cc b/dcmrt/libsrc/drtrrtps4.cc
index 008b6c4..14fdcd2 100644
--- a/dcmrt/libsrc/drtrrtps4.cc
+++ b/dcmrt/libsrc/drtrrtps4.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::isValid() co
 }
 
 
-unsigned long DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
+size_t DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoNex
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoIte
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoIte
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTRefe
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem
 }
 
 
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const unsigned long num)
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferenced
 }
 
 
-const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const unsigned long num) const
+const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTRefe
 }
 
 
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const unsigned long num)
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const unsigned long num) const
+const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::addItem
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::insertI
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrrtps5.cc b/dcmrt/libsrc/drtrrtps5.cc
index 830ede1..e9d244e 100644
--- a/dcmrt/libsrc/drtrrtps5.cc
+++ b/dcmrt/libsrc/drtrrtps5.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTReferencedRTPlanSequenceInRTImageModule::isValid() const
 }
 
 
-unsigned long DRTReferencedRTPlanSequenceInRTImageModule::getNumberOfItems() const
+size_t DRTReferencedRTPlanSequenceInRTImageModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSeque
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTImageModule::getItem(const unsigned l
 }
 
 
-DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const unsigned long num)
+DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInR
 }
 
 
-const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const unsigned long num) const
+const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSeque
 }
 
 
-DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const unsigned long num)
+DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const unsigned long num) const
+const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTImageModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTReferencedRTPlanSequenceInRTImageModule::insertItem(const unsigne
 }
 
 
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrscs.cc b/dcmrt/libsrc/drtrscs.cc
index c31e213..30553c2 100644
--- a/dcmrt/libsrc/drtrscs.cc
+++ b/dcmrt/libsrc/drtrscs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestingServiceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTRequestingServiceCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTRequestingServiceCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::Item::
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTRequestingServiceCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTRequestingServiceCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTRequestingServiceCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "RequestingServiceCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "RequestingServiceCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTRequestingServiceCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "RequestingServiceCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "RequestingServiceCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTRequestingServiceCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTRequestingServiceCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTRequestingServiceCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTRequestingServiceCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTRequestingServiceCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTRequestingServiceCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTRequestingServiceCodeSequence::isValid() const
 }
 
 
-unsigned long DRTRequestingServiceCodeSequence::getNumberOfItems() const
+size_t DRTRequestingServiceCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTRequestingServiceCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRequestingServiceCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRequestingServiceCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTRequestingServiceCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTRequestingServiceCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRequestingServiceCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTRequestingServiceCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTRequestingServiceCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTRequestingServiceCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::
 }
 
 
-OFCondition DRTRequestingServiceCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRequestingServiceCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTRequestingServiceCodeSequence::getItem(const unsigned long num, I
 }
 
 
-DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::getItem(const unsigned long num)
+DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::getIte
 }
 
 
-const DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::getItem(const unsigned long num) const
+const DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::
 }
 
 
-DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::operator[](const unsigned long num)
+DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::operator[](const unsigned long num) const
+const DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTRequestingServiceCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRequestingServiceCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRequestingServiceCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTRequestingServiceCodeSequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTRequestingServiceCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTRequestingServiceCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrsers.cc b/dcmrt/libsrc/drtrsers.cc
index fa949ae..f7f95f3 100644
--- a/dcmrt/libsrc/drtrsers.cc
+++ b/dcmrt/libsrc/drtrsers.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -229,7 +229,7 @@ OFBool DRTReferencedSeriesSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedSeriesSequence::getNumberOfItems() const
+size_t DRTReferencedSeriesSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -259,12 +259,12 @@ OFCondition DRTReferencedSeriesSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedSeriesSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedSeriesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -279,12 +279,12 @@ OFCondition DRTReferencedSeriesSequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTReferencedSeriesSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedSeriesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -299,7 +299,7 @@ OFCondition DRTReferencedSeriesSequence::gotoItem(const unsigned long num, OFLis
 }
 
 
-OFCondition DRTReferencedSeriesSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedSeriesSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -335,7 +335,7 @@ const DRTReferencedSeriesSequence::Item &DRTReferencedSeriesSequence::getCurrent
 }
 
 
-OFCondition DRTReferencedSeriesSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedSeriesSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -345,7 +345,7 @@ OFCondition DRTReferencedSeriesSequence::getItem(const unsigned long num, Item *
 }
 
 
-DRTReferencedSeriesSequence::Item &DRTReferencedSeriesSequence::getItem(const unsigned long num)
+DRTReferencedSeriesSequence::Item &DRTReferencedSeriesSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -355,7 +355,7 @@ DRTReferencedSeriesSequence::Item &DRTReferencedSeriesSequence::getItem(const un
 }
 
 
-const DRTReferencedSeriesSequence::Item &DRTReferencedSeriesSequence::getItem(const unsigned long num) const
+const DRTReferencedSeriesSequence::Item &DRTReferencedSeriesSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -365,13 +365,13 @@ const DRTReferencedSeriesSequence::Item &DRTReferencedSeriesSequence::getItem(co
 }
 
 
-DRTReferencedSeriesSequence::Item &DRTReferencedSeriesSequence::operator[](const unsigned long num)
+DRTReferencedSeriesSequence::Item &DRTReferencedSeriesSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedSeriesSequence::Item &DRTReferencedSeriesSequence::operator[](const unsigned long num) const
+const DRTReferencedSeriesSequence::Item &DRTReferencedSeriesSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -394,7 +394,7 @@ OFCondition DRTReferencedSeriesSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedSeriesSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedSeriesSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -417,7 +417,7 @@ OFCondition DRTReferencedSeriesSequence::insertItem(const unsigned long pos, Ite
 }
 
 
-OFCondition DRTReferencedSeriesSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedSeriesSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrses.cc b/dcmrt/libsrc/drtrses.cc
index c373227..7ffe727 100644
--- a/dcmrt/libsrc/drtrses.cc
+++ b/dcmrt/libsrc/drtrses.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -229,7 +229,7 @@ OFBool DRTRTReferencedSeriesSequence::isValid() const
 }
 
 
-unsigned long DRTRTReferencedSeriesSequence::getNumberOfItems() const
+size_t DRTRTReferencedSeriesSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -259,12 +259,12 @@ OFCondition DRTRTReferencedSeriesSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRTReferencedSeriesSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRTReferencedSeriesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -279,12 +279,12 @@ OFCondition DRTRTReferencedSeriesSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTRTReferencedSeriesSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRTReferencedSeriesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -299,7 +299,7 @@ OFCondition DRTRTReferencedSeriesSequence::gotoItem(const unsigned long num, OFL
 }
 
 
-OFCondition DRTRTReferencedSeriesSequence::gotoItem(const unsigned long num)
+OFCondition DRTRTReferencedSeriesSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -335,7 +335,7 @@ const DRTRTReferencedSeriesSequence::Item &DRTRTReferencedSeriesSequence::getCur
 }
 
 
-OFCondition DRTRTReferencedSeriesSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRTReferencedSeriesSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -345,7 +345,7 @@ OFCondition DRTRTReferencedSeriesSequence::getItem(const unsigned long num, Item
 }
 
 
-DRTRTReferencedSeriesSequence::Item &DRTRTReferencedSeriesSequence::getItem(const unsigned long num)
+DRTRTReferencedSeriesSequence::Item &DRTRTReferencedSeriesSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -355,7 +355,7 @@ DRTRTReferencedSeriesSequence::Item &DRTRTReferencedSeriesSequence::getItem(cons
 }
 
 
-const DRTRTReferencedSeriesSequence::Item &DRTRTReferencedSeriesSequence::getItem(const unsigned long num) const
+const DRTRTReferencedSeriesSequence::Item &DRTRTReferencedSeriesSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -365,13 +365,13 @@ const DRTRTReferencedSeriesSequence::Item &DRTRTReferencedSeriesSequence::getIte
 }
 
 
-DRTRTReferencedSeriesSequence::Item &DRTRTReferencedSeriesSequence::operator[](const unsigned long num)
+DRTRTReferencedSeriesSequence::Item &DRTRTReferencedSeriesSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRTReferencedSeriesSequence::Item &DRTRTReferencedSeriesSequence::operator[](const unsigned long num) const
+const DRTRTReferencedSeriesSequence::Item &DRTRTReferencedSeriesSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -394,7 +394,7 @@ OFCondition DRTRTReferencedSeriesSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRTReferencedSeriesSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRTReferencedSeriesSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -417,7 +417,7 @@ OFCondition DRTRTReferencedSeriesSequence::insertItem(const unsigned long pos, I
 }
 
 
-OFCondition DRTRTReferencedSeriesSequence::removeItem(const unsigned long pos)
+OFCondition DRTRTReferencedSeriesSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrshs.cc b/dcmrt/libsrc/drtrshs.cc
index 42d12ba..b3be62e 100644
--- a/dcmrt/libsrc/drtrshs.cc
+++ b/dcmrt/libsrc/drtrshs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -347,7 +347,7 @@ OFBool DRTRangeShifterSequence::isValid() const
 }
 
 
-unsigned long DRTRangeShifterSequence::getNumberOfItems() const
+size_t DRTRangeShifterSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -377,12 +377,12 @@ OFCondition DRTRangeShifterSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRangeShifterSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRangeShifterSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -397,12 +397,12 @@ OFCondition DRTRangeShifterSequence::gotoItem(const unsigned long num, OFListIte
 }
 
 
-OFCondition DRTRangeShifterSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRangeShifterSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -417,7 +417,7 @@ OFCondition DRTRangeShifterSequence::gotoItem(const unsigned long num, OFListCon
 }
 
 
-OFCondition DRTRangeShifterSequence::gotoItem(const unsigned long num)
+OFCondition DRTRangeShifterSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -453,7 +453,7 @@ const DRTRangeShifterSequence::Item &DRTRangeShifterSequence::getCurrentItem() c
 }
 
 
-OFCondition DRTRangeShifterSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRangeShifterSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -463,7 +463,7 @@ OFCondition DRTRangeShifterSequence::getItem(const unsigned long num, Item *&ite
 }
 
 
-DRTRangeShifterSequence::Item &DRTRangeShifterSequence::getItem(const unsigned long num)
+DRTRangeShifterSequence::Item &DRTRangeShifterSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -473,7 +473,7 @@ DRTRangeShifterSequence::Item &DRTRangeShifterSequence::getItem(const unsigned l
 }
 
 
-const DRTRangeShifterSequence::Item &DRTRangeShifterSequence::getItem(const unsigned long num) const
+const DRTRangeShifterSequence::Item &DRTRangeShifterSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -483,13 +483,13 @@ const DRTRangeShifterSequence::Item &DRTRangeShifterSequence::getItem(const unsi
 }
 
 
-DRTRangeShifterSequence::Item &DRTRangeShifterSequence::operator[](const unsigned long num)
+DRTRangeShifterSequence::Item &DRTRangeShifterSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRangeShifterSequence::Item &DRTRangeShifterSequence::operator[](const unsigned long num) const
+const DRTRangeShifterSequence::Item &DRTRangeShifterSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -512,7 +512,7 @@ OFCondition DRTRangeShifterSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRangeShifterSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRangeShifterSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -535,7 +535,7 @@ OFCondition DRTRangeShifterSequence::insertItem(const unsigned long pos, Item *&
 }
 
 
-OFCondition DRTRangeShifterSequence::removeItem(const unsigned long pos)
+OFCondition DRTRangeShifterSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrshs6.cc b/dcmrt/libsrc/drtrshs6.cc
index cfc26d5..1cdb86d 100644
--- a/dcmrt/libsrc/drtrshs6.cc
+++ b/dcmrt/libsrc/drtrshs6.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -310,7 +310,7 @@ OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::isValid() const
 }
 
 
-unsigned long DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
+size_t DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -340,12 +340,12 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoNextItem()
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -360,12 +360,12 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const un
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -380,7 +380,7 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const un
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const unsigned long num)
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -416,7 +416,7 @@ const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSe
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -426,7 +426,7 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const uns
 }
 
 
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const unsigned long num)
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -436,7 +436,7 @@ DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettings
 }
 
 
-const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const unsigned long num) const
+const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -446,13 +446,13 @@ const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSe
 }
 
 
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const unsigned long num)
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const unsigned long num) const
+const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -475,7 +475,7 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::addItem(Item *&it
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -498,7 +498,7 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::insertItem(const
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::removeItem(const unsigned long pos)
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrshs7.cc b/dcmrt/libsrc/drtrshs7.cc
index 8f63f78..1e25bca 100644
--- a/dcmrt/libsrc/drtrshs7.cc
+++ b/dcmrt/libsrc/drtrshs7.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -260,7 +260,7 @@ OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::isValid()
 }
 
 
-unsigned long DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
+size_t DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -290,12 +290,12 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::goto
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -310,12 +310,12 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::goto
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,7 +330,7 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::goto
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const unsigned long num)
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -366,7 +366,7 @@ const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTR
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -376,7 +376,7 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getI
 }
 
 
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num)
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -386,7 +386,7 @@ DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeSh
 }
 
 
-const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const unsigned long num) const
+const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -396,13 +396,13 @@ const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTR
 }
 
 
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const unsigned long num)
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const unsigned long num) const
+const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -425,7 +425,7 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::addI
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -448,7 +448,7 @@ OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::inse
 }
 
 
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const unsigned long pos)
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrsis.cc b/dcmrt/libsrc/drtrsis.cc
index 302f371..dbf0544 100644
--- a/dcmrt/libsrc/drtrsis.cc
+++ b/dcmrt/libsrc/drtrsis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSetupImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -343,7 +343,7 @@ OFBool DRTReferencedSetupImageSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedSetupImageSequence::getNumberOfItems() const
+size_t DRTReferencedSetupImageSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -373,12 +373,12 @@ OFCondition DRTReferencedSetupImageSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedSetupImageSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedSetupImageSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -393,12 +393,12 @@ OFCondition DRTReferencedSetupImageSequence::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTReferencedSetupImageSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedSetupImageSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -413,7 +413,7 @@ OFCondition DRTReferencedSetupImageSequence::gotoItem(const unsigned long num, O
 }
 
 
-OFCondition DRTReferencedSetupImageSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedSetupImageSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -449,7 +449,7 @@ const DRTReferencedSetupImageSequence::Item &DRTReferencedSetupImageSequence::ge
 }
 
 
-OFCondition DRTReferencedSetupImageSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedSetupImageSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -459,7 +459,7 @@ OFCondition DRTReferencedSetupImageSequence::getItem(const unsigned long num, It
 }
 
 
-DRTReferencedSetupImageSequence::Item &DRTReferencedSetupImageSequence::getItem(const unsigned long num)
+DRTReferencedSetupImageSequence::Item &DRTReferencedSetupImageSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -469,7 +469,7 @@ DRTReferencedSetupImageSequence::Item &DRTReferencedSetupImageSequence::getItem(
 }
 
 
-const DRTReferencedSetupImageSequence::Item &DRTReferencedSetupImageSequence::getItem(const unsigned long num) const
+const DRTReferencedSetupImageSequence::Item &DRTReferencedSetupImageSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -479,13 +479,13 @@ const DRTReferencedSetupImageSequence::Item &DRTReferencedSetupImageSequence::ge
 }
 
 
-DRTReferencedSetupImageSequence::Item &DRTReferencedSetupImageSequence::operator[](const unsigned long num)
+DRTReferencedSetupImageSequence::Item &DRTReferencedSetupImageSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedSetupImageSequence::Item &DRTReferencedSetupImageSequence::operator[](const unsigned long num) const
+const DRTReferencedSetupImageSequence::Item &DRTReferencedSetupImageSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -508,7 +508,7 @@ OFCondition DRTReferencedSetupImageSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedSetupImageSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedSetupImageSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -531,7 +531,7 @@ OFCondition DRTReferencedSetupImageSequence::insertItem(const unsigned long pos,
 }
 
 
-OFCondition DRTReferencedSetupImageSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedSetupImageSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrsns.cc b/dcmrt/libsrc/drtrsns.cc
index bbe4571..12474be 100644
--- a/dcmrt/libsrc/drtrsns.cc
+++ b/dcmrt/libsrc/drtrsns.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTRecordedSnoutSequence::isValid() const
 }
 
 
-unsigned long DRTRecordedSnoutSequence::getNumberOfItems() const
+size_t DRTRecordedSnoutSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTRecordedSnoutSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRecordedSnoutSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRecordedSnoutSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTRecordedSnoutSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTRecordedSnoutSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRecordedSnoutSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTRecordedSnoutSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTRecordedSnoutSequence::gotoItem(const unsigned long num)
+OFCondition DRTRecordedSnoutSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTRecordedSnoutSequence::Item &DRTRecordedSnoutSequence::getCurrentItem()
 }
 
 
-OFCondition DRTRecordedSnoutSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRecordedSnoutSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTRecordedSnoutSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTRecordedSnoutSequence::Item &DRTRecordedSnoutSequence::getItem(const unsigned long num)
+DRTRecordedSnoutSequence::Item &DRTRecordedSnoutSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTRecordedSnoutSequence::Item &DRTRecordedSnoutSequence::getItem(const unsigned
 }
 
 
-const DRTRecordedSnoutSequence::Item &DRTRecordedSnoutSequence::getItem(const unsigned long num) const
+const DRTRecordedSnoutSequence::Item &DRTRecordedSnoutSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTRecordedSnoutSequence::Item &DRTRecordedSnoutSequence::getItem(const un
 }
 
 
-DRTRecordedSnoutSequence::Item &DRTRecordedSnoutSequence::operator[](const unsigned long num)
+DRTRecordedSnoutSequence::Item &DRTRecordedSnoutSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRecordedSnoutSequence::Item &DRTRecordedSnoutSequence::operator[](const unsigned long num) const
+const DRTRecordedSnoutSequence::Item &DRTRecordedSnoutSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTRecordedSnoutSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRecordedSnoutSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRecordedSnoutSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTRecordedSnoutSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTRecordedSnoutSequence::removeItem(const unsigned long pos)
+OFCondition DRTRecordedSnoutSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrsos.cc b/dcmrt/libsrc/drtrsos.cc
index 857ed82..290392d 100644
--- a/dcmrt/libsrc/drtrsos.cc
+++ b/dcmrt/libsrc/drtrsos.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSOPSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -343,7 +343,7 @@ OFBool DRTReferencedSOPSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedSOPSequence::getNumberOfItems() const
+size_t DRTReferencedSOPSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -373,12 +373,12 @@ OFCondition DRTReferencedSOPSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedSOPSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedSOPSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -393,12 +393,12 @@ OFCondition DRTReferencedSOPSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTReferencedSOPSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedSOPSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -413,7 +413,7 @@ OFCondition DRTReferencedSOPSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTReferencedSOPSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedSOPSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -449,7 +449,7 @@ const DRTReferencedSOPSequence::Item &DRTReferencedSOPSequence::getCurrentItem()
 }
 
 
-OFCondition DRTReferencedSOPSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedSOPSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -459,7 +459,7 @@ OFCondition DRTReferencedSOPSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTReferencedSOPSequence::Item &DRTReferencedSOPSequence::getItem(const unsigned long num)
+DRTReferencedSOPSequence::Item &DRTReferencedSOPSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -469,7 +469,7 @@ DRTReferencedSOPSequence::Item &DRTReferencedSOPSequence::getItem(const unsigned
 }
 
 
-const DRTReferencedSOPSequence::Item &DRTReferencedSOPSequence::getItem(const unsigned long num) const
+const DRTReferencedSOPSequence::Item &DRTReferencedSOPSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -479,13 +479,13 @@ const DRTReferencedSOPSequence::Item &DRTReferencedSOPSequence::getItem(const un
 }
 
 
-DRTReferencedSOPSequence::Item &DRTReferencedSOPSequence::operator[](const unsigned long num)
+DRTReferencedSOPSequence::Item &DRTReferencedSOPSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedSOPSequence::Item &DRTReferencedSOPSequence::operator[](const unsigned long num) const
+const DRTReferencedSOPSequence::Item &DRTReferencedSOPSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -508,7 +508,7 @@ OFCondition DRTReferencedSOPSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedSOPSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedSOPSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -531,7 +531,7 @@ OFCondition DRTReferencedSOPSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTReferencedSOPSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedSOPSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrsrs.cc b/dcmrt/libsrc/drtrsrs.cc
index a36e5c1..fb35505 100644
--- a/dcmrt/libsrc/drtrsrs.cc
+++ b/dcmrt/libsrc/drtrsrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSpatialRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTReferencedSpatialRegistrationSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedSpatialRegistrationSequence::getNumberOfItems() const
+size_t DRTReferencedSpatialRegistrationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTReferencedSpatialRegistrationSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const unsigned lo
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const unsigned lo
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedSpatialRegistrationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegist
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedSpatialRegistrationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::getItem(const unsigned lon
 }
 
 
-DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::getItem(const unsigned long num)
+DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistration
 }
 
 
-const DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::getItem(const unsigned long num) const
+const DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegist
 }
 
 
-DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::operator[](const unsigned long num)
+DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::operator[](const unsigned long num) const
+const DRTReferencedSpatialRegistrationSequence::Item &DRTReferencedSpatialRegistrationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedSpatialRegistrationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTReferencedSpatialRegistrationSequence::insertItem(const unsigned
 }
 
 
-OFCondition DRTReferencedSpatialRegistrationSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedSpatialRegistrationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrss.cc b/dcmrt/libsrc/drtrss.cc
index 0f4da67..b909002 100644
--- a/dcmrt/libsrc/drtrss.cc
+++ b/dcmrt/libsrc/drtrss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTReferencedStudySequence::isValid() const
 }
 
 
-unsigned long DRTReferencedStudySequence::getNumberOfItems() const
+size_t DRTReferencedStudySequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTReferencedStudySequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedStudySequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedStudySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTReferencedStudySequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTReferencedStudySequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedStudySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTReferencedStudySequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTReferencedStudySequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedStudySequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTReferencedStudySequence::Item &DRTReferencedStudySequence::getCurrentIt
 }
 
 
-OFCondition DRTReferencedStudySequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedStudySequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTReferencedStudySequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTReferencedStudySequence::Item &DRTReferencedStudySequence::getItem(const unsigned long num)
+DRTReferencedStudySequence::Item &DRTReferencedStudySequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTReferencedStudySequence::Item &DRTReferencedStudySequence::getItem(const unsi
 }
 
 
-const DRTReferencedStudySequence::Item &DRTReferencedStudySequence::getItem(const unsigned long num) const
+const DRTReferencedStudySequence::Item &DRTReferencedStudySequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTReferencedStudySequence::Item &DRTReferencedStudySequence::getItem(cons
 }
 
 
-DRTReferencedStudySequence::Item &DRTReferencedStudySequence::operator[](const unsigned long num)
+DRTReferencedStudySequence::Item &DRTReferencedStudySequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedStudySequence::Item &DRTReferencedStudySequence::operator[](const unsigned long num) const
+const DRTReferencedStudySequence::Item &DRTReferencedStudySequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTReferencedStudySequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedStudySequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedStudySequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTReferencedStudySequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTReferencedStudySequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedStudySequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrsss.cc b/dcmrt/libsrc/drtrsss.cc
index 3165635..4df2fee 100644
--- a/dcmrt/libsrc/drtrsss.cc
+++ b/dcmrt/libsrc/drtrsss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTReferencedStructureSetSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedStructureSetSequence::getNumberOfItems() const
+size_t DRTReferencedStructureSetSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTReferencedStructureSetSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedStructureSetSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTReferencedStructureSetSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedStructureSetSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTReferencedStructureSetSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedStructureSetSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedStructureSetSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTReferencedStructureSetSequence::getItem(const unsigned long num,
 }
 
 
-DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::getItem(const unsigned long num)
+DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::getI
 }
 
 
-const DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::getItem(const unsigned long num) const
+const DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence
 }
 
 
-DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::operator[](const unsigned long num)
+DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::operator[](const unsigned long num) const
+const DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTReferencedStructureSetSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedStructureSetSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTReferencedStructureSetSequence::insertItem(const unsigned long po
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedStructureSetSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrsts.cc b/dcmrt/libsrc/drtrsts.cc
index 90ab23c..9281405 100644
--- a/dcmrt/libsrc/drtrsts.cc
+++ b/dcmrt/libsrc/drtrsts.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -258,7 +258,7 @@ OFBool DRTRTReferencedStudySequence::isValid() const
 }
 
 
-unsigned long DRTRTReferencedStudySequence::getNumberOfItems() const
+size_t DRTRTReferencedStudySequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -288,12 +288,12 @@ OFCondition DRTRTReferencedStudySequence::gotoNextItem()
 }
 
 
-OFCondition DRTRTReferencedStudySequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRTReferencedStudySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -308,12 +308,12 @@ OFCondition DRTRTReferencedStudySequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTRTReferencedStudySequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRTReferencedStudySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -328,7 +328,7 @@ OFCondition DRTRTReferencedStudySequence::gotoItem(const unsigned long num, OFLi
 }
 
 
-OFCondition DRTRTReferencedStudySequence::gotoItem(const unsigned long num)
+OFCondition DRTRTReferencedStudySequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -364,7 +364,7 @@ const DRTRTReferencedStudySequence::Item &DRTRTReferencedStudySequence::getCurre
 }
 
 
-OFCondition DRTRTReferencedStudySequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRTReferencedStudySequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -374,7 +374,7 @@ OFCondition DRTRTReferencedStudySequence::getItem(const unsigned long num, Item
 }
 
 
-DRTRTReferencedStudySequence::Item &DRTRTReferencedStudySequence::getItem(const unsigned long num)
+DRTRTReferencedStudySequence::Item &DRTRTReferencedStudySequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -384,7 +384,7 @@ DRTRTReferencedStudySequence::Item &DRTRTReferencedStudySequence::getItem(const
 }
 
 
-const DRTRTReferencedStudySequence::Item &DRTRTReferencedStudySequence::getItem(const unsigned long num) const
+const DRTRTReferencedStudySequence::Item &DRTRTReferencedStudySequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -394,13 +394,13 @@ const DRTRTReferencedStudySequence::Item &DRTRTReferencedStudySequence::getItem(
 }
 
 
-DRTRTReferencedStudySequence::Item &DRTRTReferencedStudySequence::operator[](const unsigned long num)
+DRTRTReferencedStudySequence::Item &DRTRTReferencedStudySequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRTReferencedStudySequence::Item &DRTRTReferencedStudySequence::operator[](const unsigned long num) const
+const DRTRTReferencedStudySequence::Item &DRTRTReferencedStudySequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -423,7 +423,7 @@ OFCondition DRTRTReferencedStudySequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRTReferencedStudySequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRTReferencedStudySequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -446,7 +446,7 @@ OFCondition DRTRTReferencedStudySequence::insertItem(const unsigned long pos, It
 }
 
 
-OFCondition DRTRTReferencedStudySequence::removeItem(const unsigned long pos)
+OFCondition DRTRTReferencedStudySequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrtrs2.cc b/dcmrt/libsrc/drtrtrs2.cc
index f8824e2..c60d7f9 100644
--- a/dcmrt/libsrc/drtrtrs2.cc
+++ b/dcmrt/libsrc/drtrtrs2.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -258,7 +258,7 @@ OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::isValid() const
 }
 
 
-unsigned long DRTReferencedTreatmentRecordSequenceInRTDoseModule::getNumberOfItems() const
+size_t DRTReferencedTreatmentRecordSequenceInRTDoseModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -288,12 +288,12 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -308,12 +308,12 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const u
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -328,7 +328,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const u
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -364,7 +364,7 @@ const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTre
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -374,7 +374,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const un
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const unsigned long num)
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -384,7 +384,7 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatment
 }
 
 
-const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const unsigned long num) const
+const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -394,13 +394,13 @@ const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTre
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const unsigned long num)
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const unsigned long num) const
+const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -423,7 +423,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::addItem(Item *&i
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -446,7 +446,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::insertItem(const
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrtrs4.cc b/dcmrt/libsrc/drtrtrs4.cc
index b14e829..3bf2504 100644
--- a/dcmrt/libsrc/drtrtrs4.cc
+++ b/dcmrt/libsrc/drtrtrs4.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::isV
 }
 
 
-unsigned long DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
+size_t DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const unsigned long num)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const unsigned long num)
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTR
 }
 
 
-const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const unsigned long num) const
+const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const unsigned long num)
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const unsigned long num) const
+const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::removeItem(const unsigned long pos)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrvis.cc b/dcmrt/libsrc/drtrvis.cc
index 7934196..77d899a 100644
--- a/dcmrt/libsrc/drtrvis.cc
+++ b/dcmrt/libsrc/drtrvis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTReferencedVerificationImageSequence::isValid() const
 }
 
 
-unsigned long DRTReferencedVerificationImageSequence::getNumberOfItems() const
+size_t DRTReferencedVerificationImageSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTReferencedVerificationImageSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedVerificationImageSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedVerificationImageSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTReferencedVerificationImageSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTReferencedVerificationImageSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedVerificationImageSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTReferencedVerificationImageSequence::gotoItem(const unsigned long
 }
 
 
-OFCondition DRTReferencedVerificationImageSequence::gotoItem(const unsigned long num)
+OFCondition DRTReferencedVerificationImageSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTReferencedVerificationImageSequence::Item &DRTReferencedVerificationIma
 }
 
 
-OFCondition DRTReferencedVerificationImageSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTReferencedVerificationImageSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTReferencedVerificationImageSequence::getItem(const unsigned long
 }
 
 
-DRTReferencedVerificationImageSequence::Item &DRTReferencedVerificationImageSequence::getItem(const unsigned long num)
+DRTReferencedVerificationImageSequence::Item &DRTReferencedVerificationImageSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTReferencedVerificationImageSequence::Item &DRTReferencedVerificationImageSequ
 }
 
 
-const DRTReferencedVerificationImageSequence::Item &DRTReferencedVerificationImageSequence::getItem(const unsigned long num) const
+const DRTReferencedVerificationImageSequence::Item &DRTReferencedVerificationImageSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTReferencedVerificationImageSequence::Item &DRTReferencedVerificationIma
 }
 
 
-DRTReferencedVerificationImageSequence::Item &DRTReferencedVerificationImageSequence::operator[](const unsigned long num)
+DRTReferencedVerificationImageSequence::Item &DRTReferencedVerificationImageSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedVerificationImageSequence::Item &DRTReferencedVerificationImageSequence::operator[](const unsigned long num) const
+const DRTReferencedVerificationImageSequence::Item &DRTReferencedVerificationImageSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTReferencedVerificationImageSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedVerificationImageSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTReferencedVerificationImageSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTReferencedVerificationImageSequence::insertItem(const unsigned lo
 }
 
 
-OFCondition DRTReferencedVerificationImageSequence::removeItem(const unsigned long pos)
+OFCondition DRTReferencedVerificationImageSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrws.cc b/dcmrt/libsrc/drtrws.cc
index c794534..c5c1043 100644
--- a/dcmrt/libsrc/drtrws.cc
+++ b/dcmrt/libsrc/drtrws.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -394,7 +394,7 @@ OFBool DRTRecordedWedgeSequence::isValid() const
 }
 
 
-unsigned long DRTRecordedWedgeSequence::getNumberOfItems() const
+size_t DRTRecordedWedgeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -424,12 +424,12 @@ OFCondition DRTRecordedWedgeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRecordedWedgeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRecordedWedgeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -444,12 +444,12 @@ OFCondition DRTRecordedWedgeSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTRecordedWedgeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRecordedWedgeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -464,7 +464,7 @@ OFCondition DRTRecordedWedgeSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTRecordedWedgeSequence::gotoItem(const unsigned long num)
+OFCondition DRTRecordedWedgeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -500,7 +500,7 @@ const DRTRecordedWedgeSequence::Item &DRTRecordedWedgeSequence::getCurrentItem()
 }
 
 
-OFCondition DRTRecordedWedgeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRecordedWedgeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -510,7 +510,7 @@ OFCondition DRTRecordedWedgeSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTRecordedWedgeSequence::Item &DRTRecordedWedgeSequence::getItem(const unsigned long num)
+DRTRecordedWedgeSequence::Item &DRTRecordedWedgeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -520,7 +520,7 @@ DRTRecordedWedgeSequence::Item &DRTRecordedWedgeSequence::getItem(const unsigned
 }
 
 
-const DRTRecordedWedgeSequence::Item &DRTRecordedWedgeSequence::getItem(const unsigned long num) const
+const DRTRecordedWedgeSequence::Item &DRTRecordedWedgeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -530,13 +530,13 @@ const DRTRecordedWedgeSequence::Item &DRTRecordedWedgeSequence::getItem(const un
 }
 
 
-DRTRecordedWedgeSequence::Item &DRTRecordedWedgeSequence::operator[](const unsigned long num)
+DRTRecordedWedgeSequence::Item &DRTRecordedWedgeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRecordedWedgeSequence::Item &DRTRecordedWedgeSequence::operator[](const unsigned long num) const
+const DRTRecordedWedgeSequence::Item &DRTRecordedWedgeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -559,7 +559,7 @@ OFCondition DRTRecordedWedgeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRecordedWedgeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRecordedWedgeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -582,7 +582,7 @@ OFCondition DRTRecordedWedgeSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTRecordedWedgeSequence::removeItem(const unsigned long pos)
+OFCondition DRTRecordedWedgeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrwvms.cc b/dcmrt/libsrc/drtrwvms.cc
index 9f70955..89b46e2 100644
--- a/dcmrt/libsrc/drtrwvms.cc
+++ b/dcmrt/libsrc/drtrwvms.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRealWorldValueMappingSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -21,6 +21,8 @@
 
 DRTRealWorldValueMappingSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
+    DoubleFloatRealWorldValueFirstValueMapped(DCM_DoubleFloatRealWorldValueFirstValueMapped),
+    DoubleFloatRealWorldValueLastValueMapped(DCM_DoubleFloatRealWorldValueLastValueMapped),
     LUTExplanation(DCM_LUTExplanation),
     LUTLabel(DCM_LUTLabel),
     MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
@@ -36,6 +38,8 @@ DRTRealWorldValueMappingSequence::Item::Item(const OFBool emptyDefaultItem)
 
 DRTRealWorldValueMappingSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
+    DoubleFloatRealWorldValueFirstValueMapped(copy.DoubleFloatRealWorldValueFirstValueMapped),
+    DoubleFloatRealWorldValueLastValueMapped(copy.DoubleFloatRealWorldValueLastValueMapped),
     LUTExplanation(copy.LUTExplanation),
     LUTLabel(copy.LUTLabel),
     MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence),
@@ -59,6 +63,8 @@ DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::Item::
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
+        DoubleFloatRealWorldValueFirstValueMapped = copy.DoubleFloatRealWorldValueFirstValueMapped;
+        DoubleFloatRealWorldValueLastValueMapped = copy.DoubleFloatRealWorldValueLastValueMapped;
         LUTExplanation = copy.LUTExplanation;
         LUTLabel = copy.LUTLabel;
         MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence;
@@ -80,6 +86,8 @@ void DRTRealWorldValueMappingSequence::Item::clear()
         /* clear all DICOM attributes */
         RealWorldValueFirstValueMapped.clear();
         RealWorldValueLastValueMapped.clear();
+        DoubleFloatRealWorldValueFirstValueMapped.clear();
+        DoubleFloatRealWorldValueLastValueMapped.clear();
         RealWorldValueIntercept.clear();
         RealWorldValueSlope.clear();
         RealWorldValueLUTData.clear();
@@ -95,6 +103,8 @@ OFBool DRTRealWorldValueMappingSequence::Item::isEmpty()
 {
     return RealWorldValueFirstValueMapped.isEmpty() &&
            RealWorldValueLastValueMapped.isEmpty() &&
+           DoubleFloatRealWorldValueFirstValueMapped.isEmpty() &&
+           DoubleFloatRealWorldValueLastValueMapped.isEmpty() &&
            RealWorldValueIntercept.isEmpty() &&
            RealWorldValueSlope.isEmpty() &&
            RealWorldValueLUTData.isEmpty() &&
@@ -118,8 +128,10 @@ OFCondition DRTRealWorldValueMappingSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, RealWorldValueFirstValueMapped, "1", "1", "RealWorldValueMappingSequence");
-        getAndCheckElementFromDataset(item, RealWorldValueLastValueMapped, "1", "1", "RealWorldValueMappingSequence");
+        getAndCheckElementFromDataset(item, RealWorldValueFirstValueMapped, "1", "1C", "RealWorldValueMappingSequence");
+        getAndCheckElementFromDataset(item, RealWorldValueLastValueMapped, "1", "1C", "RealWorldValueMappingSequence");
+        getAndCheckElementFromDataset(item, DoubleFloatRealWorldValueFirstValueMapped, "1", "1C", "RealWorldValueMappingSequence");
+        getAndCheckElementFromDataset(item, DoubleFloatRealWorldValueLastValueMapped, "1", "1C", "RealWorldValueMappingSequence");
         getAndCheckElementFromDataset(item, RealWorldValueIntercept, "1", "1C", "RealWorldValueMappingSequence");
         getAndCheckElementFromDataset(item, RealWorldValueSlope, "1", "1C", "RealWorldValueMappingSequence");
         getAndCheckElementFromDataset(item, RealWorldValueLUTData, "1-n", "1C", "RealWorldValueMappingSequence");
@@ -139,8 +151,10 @@ OFCondition DRTRealWorldValueMappingSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmUnsignedShort(RealWorldValueFirstValueMapped), "1", "1", "RealWorldValueMappingSequence");
-        addElementToDataset(result, item, new DcmUnsignedShort(RealWorldValueLastValueMapped), "1", "1", "RealWorldValueMappingSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(RealWorldValueFirstValueMapped), "1", "1C", "RealWorldValueMappingSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(RealWorldValueLastValueMapped), "1", "1C", "RealWorldValueMappingSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(DoubleFloatRealWorldValueFirstValueMapped), "1", "1C", "RealWorldValueMappingSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(DoubleFloatRealWorldValueLastValueMapped), "1", "1C", "RealWorldValueMappingSequence");
         addElementToDataset(result, item, new DcmFloatingPointDouble(RealWorldValueIntercept), "1", "1C", "RealWorldValueMappingSequence");
         addElementToDataset(result, item, new DcmFloatingPointDouble(RealWorldValueSlope), "1", "1C", "RealWorldValueMappingSequence");
         addElementToDataset(result, item, new DcmFloatingPointDouble(RealWorldValueLUTData), "1-n", "1C", "RealWorldValueMappingSequence");
@@ -153,6 +167,24 @@ OFCondition DRTRealWorldValueMappingSequence::Item::write(DcmItem &item)
 }
 
 
+OFCondition DRTRealWorldValueMappingSequence::Item::getDoubleFloatRealWorldValueFirstValueMapped(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, DoubleFloatRealWorldValueFirstValueMapped).getFloat64(value, pos);
+}
+
+
+OFCondition DRTRealWorldValueMappingSequence::Item::getDoubleFloatRealWorldValueLastValueMapped(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, DoubleFloatRealWorldValueLastValueMapped).getFloat64(value, pos);
+}
+
+
 OFCondition DRTRealWorldValueMappingSequence::Item::getLUTExplanation(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -216,6 +248,24 @@ OFCondition DRTRealWorldValueMappingSequence::Item::getRealWorldValueSlope(Float
 }
 
 
+OFCondition DRTRealWorldValueMappingSequence::Item::setDoubleFloatRealWorldValueFirstValueMapped(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return DoubleFloatRealWorldValueFirstValueMapped.putFloat64(value, pos);
+}
+
+
+OFCondition DRTRealWorldValueMappingSequence::Item::setDoubleFloatRealWorldValueLastValueMapped(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return DoubleFloatRealWorldValueLastValueMapped.putFloat64(value, pos);
+}
+
+
 OFCondition DRTRealWorldValueMappingSequence::Item::setLUTExplanation(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -390,7 +440,7 @@ OFBool DRTRealWorldValueMappingSequence::isValid() const
 }
 
 
-unsigned long DRTRealWorldValueMappingSequence::getNumberOfItems() const
+size_t DRTRealWorldValueMappingSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -420,12 +470,12 @@ OFCondition DRTRealWorldValueMappingSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRealWorldValueMappingSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTRealWorldValueMappingSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -440,12 +490,12 @@ OFCondition DRTRealWorldValueMappingSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTRealWorldValueMappingSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTRealWorldValueMappingSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -460,7 +510,7 @@ OFCondition DRTRealWorldValueMappingSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTRealWorldValueMappingSequence::gotoItem(const unsigned long num)
+OFCondition DRTRealWorldValueMappingSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -496,7 +546,7 @@ const DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::
 }
 
 
-OFCondition DRTRealWorldValueMappingSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTRealWorldValueMappingSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -506,7 +556,7 @@ OFCondition DRTRealWorldValueMappingSequence::getItem(const unsigned long num, I
 }
 
 
-DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::getItem(const unsigned long num)
+DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -516,7 +566,7 @@ DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::getIte
 }
 
 
-const DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::getItem(const unsigned long num) const
+const DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -526,13 +576,13 @@ const DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::
 }
 
 
-DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::operator[](const unsigned long num)
+DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::operator[](const unsigned long num) const
+const DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -555,7 +605,7 @@ OFCondition DRTRealWorldValueMappingSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRealWorldValueMappingSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTRealWorldValueMappingSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -578,7 +628,7 @@ OFCondition DRTRealWorldValueMappingSequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTRealWorldValueMappingSequence::removeItem(const unsigned long pos)
+OFCondition DRTRealWorldValueMappingSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtscris.cc b/dcmrt/libsrc/drtscris.cc
index 78a10f0..0edf4b4 100644
--- a/dcmrt/libsrc/drtscris.cc
+++ b/dcmrt/libsrc/drtscris.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStudiesContainingOtherReferencedInstancesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -229,7 +229,7 @@ OFBool DRTStudiesContainingOtherReferencedInstancesSequence::isValid() const
 }
 
 
-unsigned long DRTStudiesContainingOtherReferencedInstancesSequence::getNumberOfItems() const
+size_t DRTStudiesContainingOtherReferencedInstancesSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -259,12 +259,12 @@ OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoNextItem()
 }
 
 
-OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -279,12 +279,12 @@ OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoItem(const
 }
 
 
-OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -299,7 +299,7 @@ OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoItem(const
 }
 
 
-OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoItem(const unsigned long num)
+OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -335,7 +335,7 @@ const DRTStudiesContainingOtherReferencedInstancesSequence::Item &DRTStudiesCont
 }
 
 
-OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -345,7 +345,7 @@ OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::getItem(const
 }
 
 
-DRTStudiesContainingOtherReferencedInstancesSequence::Item &DRTStudiesContainingOtherReferencedInstancesSequence::getItem(const unsigned long num)
+DRTStudiesContainingOtherReferencedInstancesSequence::Item &DRTStudiesContainingOtherReferencedInstancesSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -355,7 +355,7 @@ DRTStudiesContainingOtherReferencedInstancesSequence::Item &DRTStudiesContaining
 }
 
 
-const DRTStudiesContainingOtherReferencedInstancesSequence::Item &DRTStudiesContainingOtherReferencedInstancesSequence::getItem(const unsigned long num) const
+const DRTStudiesContainingOtherReferencedInstancesSequence::Item &DRTStudiesContainingOtherReferencedInstancesSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -365,13 +365,13 @@ const DRTStudiesContainingOtherReferencedInstancesSequence::Item &DRTStudiesCont
 }
 
 
-DRTStudiesContainingOtherReferencedInstancesSequence::Item &DRTStudiesContainingOtherReferencedInstancesSequence::operator[](const unsigned long num)
+DRTStudiesContainingOtherReferencedInstancesSequence::Item &DRTStudiesContainingOtherReferencedInstancesSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTStudiesContainingOtherReferencedInstancesSequence::Item &DRTStudiesContainingOtherReferencedInstancesSequence::operator[](const unsigned long num) const
+const DRTStudiesContainingOtherReferencedInstancesSequence::Item &DRTStudiesContainingOtherReferencedInstancesSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -394,7 +394,7 @@ OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::addItem(Item *
 }
 
 
-OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -417,7 +417,7 @@ OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::insertItem(con
 }
 
 
-OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::removeItem(const unsigned long pos)
+OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtccs.cc b/dcmrt/libsrc/drtscs.cc
similarity index 74%
copy from dcmrt/libsrc/drtccs.cc
copy to dcmrt/libsrc/drtscs.cc
index 979f490..c91297c 100644
--- a/dcmrt/libsrc/drtccs.cc
+++ b/dcmrt/libsrc/drtscs.cc
@@ -1,25 +1,25 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTConceptCodeSequence
+ *  Source file for class DRTStrainCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtccs.h"
+#include "dcmtk/dcmrt/seq/drtscs.h"
 
 
 // --- item class ---
 
-DRTConceptCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTStrainCodeSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     CodeMeaning(DCM_CodeMeaning),
     CodeValue(DCM_CodeValue),
@@ -34,13 +34,14 @@ DRTConceptCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
 }
 
 
-DRTConceptCodeSequence::Item::Item(const Item &copy)
+DRTStrainCodeSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     CodeMeaning(copy.CodeMeaning),
     CodeValue(copy.CodeValue),
@@ -55,18 +56,19 @@ DRTConceptCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
 }
 
 
-DRTConceptCodeSequence::Item::~Item()
+DRTStrainCodeSequence::Item::~Item()
 {
 }
 
 
-DRTConceptCodeSequence::Item &DRTConceptCodeSequence::Item::operator=(const Item &copy)
+DRTStrainCodeSequence::Item &DRTStrainCodeSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
@@ -84,6 +86,7 @@ DRTConceptCodeSequence::Item &DRTConceptCodeSequence::Item::operator=(const Item
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -91,7 +94,7 @@ DRTConceptCodeSequence::Item &DRTConceptCodeSequence::Item::operator=(const Item
 }
 
 
-void DRTConceptCodeSequence::Item::clear()
+void DRTStrainCodeSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
@@ -107,6 +110,7 @@ void DRTConceptCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -115,7 +119,7 @@ void DRTConceptCodeSequence::Item::clear()
 }
 
 
-OFBool DRTConceptCodeSequence::Item::isEmpty()
+OFBool DRTStrainCodeSequence::Item::isEmpty()
 {
     return CodeValue.isEmpty() &&
            CodingSchemeDesignator.isEmpty() &&
@@ -128,6 +132,7 @@ OFBool DRTConceptCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -135,67 +140,69 @@ OFBool DRTConceptCodeSequence::Item::isEmpty()
 }
 
 
-OFBool DRTConceptCodeSequence::Item::isValid() const
+OFBool DRTStrainCodeSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::read(DcmItem &item)
+OFCondition DRTStrainCodeSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ConceptCodeSequence");
-        EquivalentCodeSequence.read(item, "1-n", "3", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "ConceptCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "StrainCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "StrainCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "StrainCodeSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::write(DcmItem &item)
+OFCondition DRTStrainCodeSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ConceptCodeSequence");
-        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "ConceptCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "StrainCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "StrainCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "StrainCodeSequence");
     }
     return result;
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -204,7 +211,7 @@ OFCondition DRTConceptCodeSequence::Item::getCodeMeaning(OFString &value, const
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -213,7 +220,7 @@ OFCondition DRTConceptCodeSequence::Item::getCodeValue(OFString &value, const si
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -222,7 +229,7 @@ OFCondition DRTConceptCodeSequence::Item::getCodingSchemeDesignator(OFString &va
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -231,7 +238,7 @@ OFCondition DRTConceptCodeSequence::Item::getCodingSchemeVersion(OFString &value
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -240,7 +247,7 @@ OFCondition DRTConceptCodeSequence::Item::getContextGroupExtensionCreatorUID(OFS
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -249,7 +256,7 @@ OFCondition DRTConceptCodeSequence::Item::getContextGroupExtensionFlag(OFString
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -258,7 +265,7 @@ OFCondition DRTConceptCodeSequence::Item::getContextGroupLocalVersion(OFString &
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -267,7 +274,7 @@ OFCondition DRTConceptCodeSequence::Item::getContextGroupVersion(OFString &value
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -276,7 +283,7 @@ OFCondition DRTConceptCodeSequence::Item::getContextIdentifier(OFString &value,
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -285,7 +292,7 @@ OFCondition DRTConceptCodeSequence::Item::getContextUID(OFString &value, const s
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -294,7 +301,7 @@ OFCondition DRTConceptCodeSequence::Item::getLongCodeValue(OFString &value, cons
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -303,7 +310,16 @@ OFCondition DRTConceptCodeSequence::Item::getMappingResource(OFString &value, co
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTStrainCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -312,7 +328,7 @@ OFCondition DRTConceptCodeSequence::Item::getMappingResourceUID(OFString &value,
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+OFCondition DRTStrainCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -321,7 +337,7 @@ OFCondition DRTConceptCodeSequence::Item::getURNCodeValue(OFString &value, const
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -334,7 +350,7 @@ OFCondition DRTConceptCodeSequence::Item::setCodeMeaning(const OFString &value,
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -347,7 +363,7 @@ OFCondition DRTConceptCodeSequence::Item::setCodeValue(const OFString &value, co
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -360,7 +376,7 @@ OFCondition DRTConceptCodeSequence::Item::setCodingSchemeDesignator(const OFStri
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -373,7 +389,7 @@ OFCondition DRTConceptCodeSequence::Item::setCodingSchemeVersion(const OFString
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -386,7 +402,7 @@ OFCondition DRTConceptCodeSequence::Item::setContextGroupExtensionCreatorUID(con
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -399,7 +415,7 @@ OFCondition DRTConceptCodeSequence::Item::setContextGroupExtensionFlag(const OFS
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -412,7 +428,7 @@ OFCondition DRTConceptCodeSequence::Item::setContextGroupLocalVersion(const OFSt
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -425,7 +441,7 @@ OFCondition DRTConceptCodeSequence::Item::setContextGroupVersion(const OFString
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -438,7 +454,7 @@ OFCondition DRTConceptCodeSequence::Item::setContextIdentifier(const OFString &v
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -451,7 +467,7 @@ OFCondition DRTConceptCodeSequence::Item::setContextUID(const OFString &value, c
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -464,7 +480,7 @@ OFCondition DRTConceptCodeSequence::Item::setLongCodeValue(const OFString &value
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -477,7 +493,20 @@ OFCondition DRTConceptCodeSequence::Item::setMappingResource(const OFString &val
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTStrainCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -490,7 +519,7 @@ OFCondition DRTConceptCodeSequence::Item::setMappingResourceUID(const OFString &
 }
 
 
-OFCondition DRTConceptCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+OFCondition DRTStrainCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -505,7 +534,7 @@ OFCondition DRTConceptCodeSequence::Item::setURNCodeValue(const OFString &value,
 
 // --- sequence class ---
 
-DRTConceptCodeSequence::DRTConceptCodeSequence(const OFBool emptyDefaultSequence)
+DRTStrainCodeSequence::DRTStrainCodeSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -515,7 +544,7 @@ DRTConceptCodeSequence::DRTConceptCodeSequence(const OFBool emptyDefaultSequence
 }
 
 
-DRTConceptCodeSequence::DRTConceptCodeSequence(const DRTConceptCodeSequence &copy)
+DRTStrainCodeSequence::DRTStrainCodeSequence(const DRTStrainCodeSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -541,7 +570,7 @@ DRTConceptCodeSequence::DRTConceptCodeSequence(const DRTConceptCodeSequence &cop
 }
 
 
-DRTConceptCodeSequence &DRTConceptCodeSequence::operator=(const DRTConceptCodeSequence &copy)
+DRTStrainCodeSequence &DRTStrainCodeSequence::operator=(const DRTStrainCodeSequence &copy)
 {
     if (this != &copy)
     {
@@ -569,13 +598,13 @@ DRTConceptCodeSequence &DRTConceptCodeSequence::operator=(const DRTConceptCodeSe
 }
 
 
-DRTConceptCodeSequence::~DRTConceptCodeSequence()
+DRTStrainCodeSequence::~DRTStrainCodeSequence()
 {
     clear();
 }
 
 
-void DRTConceptCodeSequence::clear()
+void DRTStrainCodeSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -594,25 +623,25 @@ void DRTConceptCodeSequence::clear()
 }
 
 
-OFBool DRTConceptCodeSequence::isEmpty()
+OFBool DRTStrainCodeSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTConceptCodeSequence::isValid() const
+OFBool DRTStrainCodeSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTConceptCodeSequence::getNumberOfItems() const
+size_t DRTStrainCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTConceptCodeSequence::gotoFirstItem()
+OFCondition DRTStrainCodeSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -624,7 +653,7 @@ OFCondition DRTConceptCodeSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTConceptCodeSequence::gotoNextItem()
+OFCondition DRTStrainCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -636,12 +665,12 @@ OFCondition DRTConceptCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTConceptCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTStrainCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTConceptCodeSequence::gotoItem(const unsigned long num, OFListIter
 }
 
 
-OFCondition DRTConceptCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTStrainCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,13 +705,13 @@ OFCondition DRTConceptCodeSequence::gotoItem(const unsigned long num, OFListCons
 }
 
 
-OFCondition DRTConceptCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTStrainCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTConceptCodeSequence::getCurrentItem(Item *&item) const
+OFCondition DRTStrainCodeSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -694,7 +723,7 @@ OFCondition DRTConceptCodeSequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getCurrentItem()
+DRTStrainCodeSequence::Item &DRTStrainCodeSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -703,7 +732,7 @@ DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getCurrentItem()
 }
 
 
-const DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getCurrentItem() const
+const DRTStrainCodeSequence::Item &DRTStrainCodeSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -712,7 +741,7 @@ const DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getCurrentItem() con
 }
 
 
-OFCondition DRTConceptCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTStrainCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTConceptCodeSequence::getItem(const unsigned long num, Item *&item
 }
 
 
-DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getItem(const unsigned long num)
+DRTStrainCodeSequence::Item &DRTStrainCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getItem(const unsigned lon
 }
 
 
-const DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getItem(const unsigned long num) const
+const DRTStrainCodeSequence::Item &DRTStrainCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,19 +771,19 @@ const DRTConceptCodeSequence::Item &DRTConceptCodeSequence::getItem(const unsign
 }
 
 
-DRTConceptCodeSequence::Item &DRTConceptCodeSequence::operator[](const unsigned long num)
+DRTStrainCodeSequence::Item &DRTStrainCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTConceptCodeSequence::Item &DRTConceptCodeSequence::operator[](const unsigned long num) const
+const DRTStrainCodeSequence::Item &DRTStrainCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTConceptCodeSequence::addItem(Item *&item)
+OFCondition DRTStrainCodeSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -771,7 +800,7 @@ OFCondition DRTConceptCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTConceptCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTStrainCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTConceptCodeSequence::insertItem(const unsigned long pos, Item *&i
 }
 
 
-OFCondition DRTConceptCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTStrainCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -812,10 +841,10 @@ OFCondition DRTConceptCodeSequence::removeItem(const unsigned long pos)
 }
 
 
-OFCondition DRTConceptCodeSequence::read(DcmItem &dataset,
-                                         const OFString &card,
-                                         const OFString &type,
-                                         const char *moduleName)
+OFCondition DRTStrainCodeSequence::read(DcmItem &dataset,
+                                        const OFString &card,
+                                        const OFString &type,
+                                        const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -824,7 +853,7 @@ OFCondition DRTConceptCodeSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ConceptCodeSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_StrainCodeSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -854,7 +883,7 @@ OFCondition DRTConceptCodeSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_ConceptCodeSequence);
+            DcmSequenceOfItems element(DCM_StrainCodeSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -862,16 +891,16 @@ OFCondition DRTConceptCodeSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTConceptCodeSequence::write(DcmItem &dataset,
-                                          const OFString &card,
-                                          const OFString &type,
-                                          const char *moduleName)
+OFCondition DRTStrainCodeSequence::write(DcmItem &dataset,
+                                         const OFString &card,
+                                         const OFString &type,
+                                         const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ConceptCodeSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_StrainCodeSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtsdcs.cc b/dcmrt/libsrc/drtsdcs.cc
index 5dd75d9..811f0b5 100644
--- a/dcmrt/libsrc/drtsdcs.cc
+++ b/dcmrt/libsrc/drtsdcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSeriesDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTSeriesDescriptionCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTSeriesDescriptionCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::Item::
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTSeriesDescriptionCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTSeriesDescriptionCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "SeriesDescriptionCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "SeriesDescriptionCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "SeriesDescriptionCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "SeriesDescriptionCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTSeriesDescriptionCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTSeriesDescriptionCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTSeriesDescriptionCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTSeriesDescriptionCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTSeriesDescriptionCodeSequence::isValid() const
 }
 
 
-unsigned long DRTSeriesDescriptionCodeSequence::getNumberOfItems() const
+size_t DRTSeriesDescriptionCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTSeriesDescriptionCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTSeriesDescriptionCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTSeriesDescriptionCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTSeriesDescriptionCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTSeriesDescriptionCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTSeriesDescriptionCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTSeriesDescriptionCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTSeriesDescriptionCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTSeriesDescriptionCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::
 }
 
 
-OFCondition DRTSeriesDescriptionCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTSeriesDescriptionCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTSeriesDescriptionCodeSequence::getItem(const unsigned long num, I
 }
 
 
-DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::getItem(const unsigned long num)
+DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::getIte
 }
 
 
-const DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::getItem(const unsigned long num) const
+const DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::
 }
 
 
-DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::operator[](const unsigned long num)
+DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::operator[](const unsigned long num) const
+const DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTSeriesDescriptionCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTSeriesDescriptionCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTSeriesDescriptionCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTSeriesDescriptionCodeSequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTSeriesDescriptionCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTSeriesDescriptionCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtsds.cc b/dcmrt/libsrc/drtsds.cc
index 946e593..718ec2d 100644
--- a/dcmrt/libsrc/drtsds.cc
+++ b/dcmrt/libsrc/drtsds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSetupDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -376,7 +376,7 @@ OFBool DRTSetupDeviceSequence::isValid() const
 }
 
 
-unsigned long DRTSetupDeviceSequence::getNumberOfItems() const
+size_t DRTSetupDeviceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -406,12 +406,12 @@ OFCondition DRTSetupDeviceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTSetupDeviceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTSetupDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -426,12 +426,12 @@ OFCondition DRTSetupDeviceSequence::gotoItem(const unsigned long num, OFListIter
 }
 
 
-OFCondition DRTSetupDeviceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTSetupDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -446,7 +446,7 @@ OFCondition DRTSetupDeviceSequence::gotoItem(const unsigned long num, OFListCons
 }
 
 
-OFCondition DRTSetupDeviceSequence::gotoItem(const unsigned long num)
+OFCondition DRTSetupDeviceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -482,7 +482,7 @@ const DRTSetupDeviceSequence::Item &DRTSetupDeviceSequence::getCurrentItem() con
 }
 
 
-OFCondition DRTSetupDeviceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTSetupDeviceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -492,7 +492,7 @@ OFCondition DRTSetupDeviceSequence::getItem(const unsigned long num, Item *&item
 }
 
 
-DRTSetupDeviceSequence::Item &DRTSetupDeviceSequence::getItem(const unsigned long num)
+DRTSetupDeviceSequence::Item &DRTSetupDeviceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -502,7 +502,7 @@ DRTSetupDeviceSequence::Item &DRTSetupDeviceSequence::getItem(const unsigned lon
 }
 
 
-const DRTSetupDeviceSequence::Item &DRTSetupDeviceSequence::getItem(const unsigned long num) const
+const DRTSetupDeviceSequence::Item &DRTSetupDeviceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -512,13 +512,13 @@ const DRTSetupDeviceSequence::Item &DRTSetupDeviceSequence::getItem(const unsign
 }
 
 
-DRTSetupDeviceSequence::Item &DRTSetupDeviceSequence::operator[](const unsigned long num)
+DRTSetupDeviceSequence::Item &DRTSetupDeviceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTSetupDeviceSequence::Item &DRTSetupDeviceSequence::operator[](const unsigned long num) const
+const DRTSetupDeviceSequence::Item &DRTSetupDeviceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -541,7 +541,7 @@ OFCondition DRTSetupDeviceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTSetupDeviceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTSetupDeviceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -564,7 +564,7 @@ OFCondition DRTSetupDeviceSequence::insertItem(const unsigned long pos, Item *&i
 }
 
 
-OFCondition DRTSetupDeviceSequence::removeItem(const unsigned long pos)
+OFCondition DRTSetupDeviceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtshds.cc b/dcmrt/libsrc/drtshds.cc
index 844fc95..909ae1b 100644
--- a/dcmrt/libsrc/drtshds.cc
+++ b/dcmrt/libsrc/drtshds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTShieldingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -338,7 +338,7 @@ OFBool DRTShieldingDeviceSequence::isValid() const
 }
 
 
-unsigned long DRTShieldingDeviceSequence::getNumberOfItems() const
+size_t DRTShieldingDeviceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -368,12 +368,12 @@ OFCondition DRTShieldingDeviceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTShieldingDeviceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTShieldingDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -388,12 +388,12 @@ OFCondition DRTShieldingDeviceSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTShieldingDeviceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTShieldingDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -408,7 +408,7 @@ OFCondition DRTShieldingDeviceSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTShieldingDeviceSequence::gotoItem(const unsigned long num)
+OFCondition DRTShieldingDeviceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -444,7 +444,7 @@ const DRTShieldingDeviceSequence::Item &DRTShieldingDeviceSequence::getCurrentIt
 }
 
 
-OFCondition DRTShieldingDeviceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTShieldingDeviceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -454,7 +454,7 @@ OFCondition DRTShieldingDeviceSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTShieldingDeviceSequence::Item &DRTShieldingDeviceSequence::getItem(const unsigned long num)
+DRTShieldingDeviceSequence::Item &DRTShieldingDeviceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -464,7 +464,7 @@ DRTShieldingDeviceSequence::Item &DRTShieldingDeviceSequence::getItem(const unsi
 }
 
 
-const DRTShieldingDeviceSequence::Item &DRTShieldingDeviceSequence::getItem(const unsigned long num) const
+const DRTShieldingDeviceSequence::Item &DRTShieldingDeviceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -474,13 +474,13 @@ const DRTShieldingDeviceSequence::Item &DRTShieldingDeviceSequence::getItem(cons
 }
 
 
-DRTShieldingDeviceSequence::Item &DRTShieldingDeviceSequence::operator[](const unsigned long num)
+DRTShieldingDeviceSequence::Item &DRTShieldingDeviceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTShieldingDeviceSequence::Item &DRTShieldingDeviceSequence::operator[](const unsigned long num) const
+const DRTShieldingDeviceSequence::Item &DRTShieldingDeviceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -503,7 +503,7 @@ OFCondition DRTShieldingDeviceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTShieldingDeviceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTShieldingDeviceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -526,7 +526,7 @@ OFCondition DRTShieldingDeviceSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTShieldingDeviceSequence::removeItem(const unsigned long pos)
+OFCondition DRTShieldingDeviceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrds.cc b/dcmrt/libsrc/drtsins.cc
similarity index 76%
copy from dcmrt/libsrc/drtrds.cc
copy to dcmrt/libsrc/drtsins.cc
index 9db4526..bbbabf5 100644
--- a/dcmrt/libsrc/drtrds.cc
+++ b/dcmrt/libsrc/drtsins.cc
@@ -1,50 +1,53 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTReferencedDoseSequence
+ *  Source file for class DRTSourceInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtrds.h"
+#include "dcmtk/dcmrt/seq/drtsins.h"
 
 
 // --- item class ---
 
-DRTReferencedDoseSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTSourceInstanceSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
+    PurposeOfReferenceCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
     ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
 {
 }
 
 
-DRTReferencedDoseSequence::Item::Item(const Item &copy)
+DRTSourceInstanceSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
+    PurposeOfReferenceCodeSequence(copy.PurposeOfReferenceCodeSequence),
     ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
     ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
 {
 }
 
 
-DRTReferencedDoseSequence::Item::~Item()
+DRTSourceInstanceSequence::Item::~Item()
 {
 }
 
 
-DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::Item::operator=(const Item &copy)
+DRTSourceInstanceSequence::Item &DRTSourceInstanceSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
+        PurposeOfReferenceCodeSequence = copy.PurposeOfReferenceCodeSequence;
         ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
         ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
     }
@@ -52,59 +55,63 @@ DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::Item::operator=(cons
 }
 
 
-void DRTReferencedDoseSequence::Item::clear()
+void DRTSourceInstanceSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
         ReferencedSOPClassUID.clear();
         ReferencedSOPInstanceUID.clear();
+        PurposeOfReferenceCodeSequence.clear();
     }
 }
 
 
-OFBool DRTReferencedDoseSequence::Item::isEmpty()
+OFBool DRTSourceInstanceSequence::Item::isEmpty()
 {
     return ReferencedSOPClassUID.isEmpty() &&
-           ReferencedSOPInstanceUID.isEmpty();
+           ReferencedSOPInstanceUID.isEmpty() &&
+           PurposeOfReferenceCodeSequence.isEmpty();
 }
 
 
-OFBool DRTReferencedDoseSequence::Item::isValid() const
+OFBool DRTSourceInstanceSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTReferencedDoseSequence::Item::read(DcmItem &item)
+OFCondition DRTSourceInstanceSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedDoseSequence");
-        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedDoseSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "SourceInstanceSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "SourceInstanceSequence");
+        PurposeOfReferenceCodeSequence.read(item, "1-n", "3", "SourceInstanceSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTReferencedDoseSequence::Item::write(DcmItem &item)
+OFCondition DRTSourceInstanceSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedDoseSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedDoseSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "SourceInstanceSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "SourceInstanceSequence");
+        if (result.good()) result = PurposeOfReferenceCodeSequence.write(item, "1-n", "3", "SourceInstanceSequence");
     }
     return result;
 }
 
 
-OFCondition DRTReferencedDoseSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+OFCondition DRTSourceInstanceSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -113,7 +120,7 @@ OFCondition DRTReferencedDoseSequence::Item::getReferencedSOPClassUID(OFString &
 }
 
 
-OFCondition DRTReferencedDoseSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+OFCondition DRTSourceInstanceSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -122,7 +129,7 @@ OFCondition DRTReferencedDoseSequence::Item::getReferencedSOPInstanceUID(OFStrin
 }
 
 
-OFCondition DRTReferencedDoseSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+OFCondition DRTSourceInstanceSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -135,7 +142,7 @@ OFCondition DRTReferencedDoseSequence::Item::setReferencedSOPClassUID(const OFSt
 }
 
 
-OFCondition DRTReferencedDoseSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+OFCondition DRTSourceInstanceSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -150,7 +157,7 @@ OFCondition DRTReferencedDoseSequence::Item::setReferencedSOPInstanceUID(const O
 
 // --- sequence class ---
 
-DRTReferencedDoseSequence::DRTReferencedDoseSequence(const OFBool emptyDefaultSequence)
+DRTSourceInstanceSequence::DRTSourceInstanceSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -160,7 +167,7 @@ DRTReferencedDoseSequence::DRTReferencedDoseSequence(const OFBool emptyDefaultSe
 }
 
 
-DRTReferencedDoseSequence::DRTReferencedDoseSequence(const DRTReferencedDoseSequence &copy)
+DRTSourceInstanceSequence::DRTSourceInstanceSequence(const DRTSourceInstanceSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -186,7 +193,7 @@ DRTReferencedDoseSequence::DRTReferencedDoseSequence(const DRTReferencedDoseSequ
 }
 
 
-DRTReferencedDoseSequence &DRTReferencedDoseSequence::operator=(const DRTReferencedDoseSequence &copy)
+DRTSourceInstanceSequence &DRTSourceInstanceSequence::operator=(const DRTSourceInstanceSequence &copy)
 {
     if (this != &copy)
     {
@@ -214,13 +221,13 @@ DRTReferencedDoseSequence &DRTReferencedDoseSequence::operator=(const DRTReferen
 }
 
 
-DRTReferencedDoseSequence::~DRTReferencedDoseSequence()
+DRTSourceInstanceSequence::~DRTSourceInstanceSequence()
 {
     clear();
 }
 
 
-void DRTReferencedDoseSequence::clear()
+void DRTSourceInstanceSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -239,25 +246,25 @@ void DRTReferencedDoseSequence::clear()
 }
 
 
-OFBool DRTReferencedDoseSequence::isEmpty()
+OFBool DRTSourceInstanceSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTReferencedDoseSequence::isValid() const
+OFBool DRTSourceInstanceSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTReferencedDoseSequence::getNumberOfItems() const
+size_t DRTSourceInstanceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTReferencedDoseSequence::gotoFirstItem()
+OFCondition DRTSourceInstanceSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -269,7 +276,7 @@ OFCondition DRTReferencedDoseSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTReferencedDoseSequence::gotoNextItem()
+OFCondition DRTSourceInstanceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -281,12 +288,12 @@ OFCondition DRTReferencedDoseSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedDoseSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTSourceInstanceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +308,12 @@ OFCondition DRTReferencedDoseSequence::gotoItem(const unsigned long num, OFListI
 }
 
 
-OFCondition DRTReferencedDoseSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTSourceInstanceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,13 +328,13 @@ OFCondition DRTReferencedDoseSequence::gotoItem(const unsigned long num, OFListC
 }
 
 
-OFCondition DRTReferencedDoseSequence::gotoItem(const unsigned long num)
+OFCondition DRTSourceInstanceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTReferencedDoseSequence::getCurrentItem(Item *&item) const
+OFCondition DRTSourceInstanceSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -339,7 +346,7 @@ OFCondition DRTReferencedDoseSequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getCurrentItem()
+DRTSourceInstanceSequence::Item &DRTSourceInstanceSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -348,7 +355,7 @@ DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getCurrentItem()
 }
 
 
-const DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getCurrentItem() const
+const DRTSourceInstanceSequence::Item &DRTSourceInstanceSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -357,7 +364,7 @@ const DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getCurrentItem
 }
 
 
-OFCondition DRTReferencedDoseSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTSourceInstanceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +374,7 @@ OFCondition DRTReferencedDoseSequence::getItem(const unsigned long num, Item *&i
 }
 
 
-DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getItem(const unsigned long num)
+DRTSourceInstanceSequence::Item &DRTSourceInstanceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +384,7 @@ DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getItem(const unsign
 }
 
 
-const DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getItem(const unsigned long num) const
+const DRTSourceInstanceSequence::Item &DRTSourceInstanceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,19 +394,19 @@ const DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::getItem(const
 }
 
 
-DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::operator[](const unsigned long num)
+DRTSourceInstanceSequence::Item &DRTSourceInstanceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedDoseSequence::Item &DRTReferencedDoseSequence::operator[](const unsigned long num) const
+const DRTSourceInstanceSequence::Item &DRTSourceInstanceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTReferencedDoseSequence::addItem(Item *&item)
+OFCondition DRTSourceInstanceSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -416,7 +423,7 @@ OFCondition DRTReferencedDoseSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedDoseSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTSourceInstanceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +446,7 @@ OFCondition DRTReferencedDoseSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTReferencedDoseSequence::removeItem(const unsigned long pos)
+OFCondition DRTSourceInstanceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -457,7 +464,7 @@ OFCondition DRTReferencedDoseSequence::removeItem(const unsigned long pos)
 }
 
 
-OFCondition DRTReferencedDoseSequence::read(DcmItem &dataset,
+OFCondition DRTSourceInstanceSequence::read(DcmItem &dataset,
                                             const OFString &card,
                                             const OFString &type,
                                             const char *moduleName)
@@ -469,7 +476,7 @@ OFCondition DRTReferencedDoseSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedDoseSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_SourceInstanceSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -499,7 +506,7 @@ OFCondition DRTReferencedDoseSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_ReferencedDoseSequence);
+            DcmSequenceOfItems element(DCM_SourceInstanceSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -507,7 +514,7 @@ OFCondition DRTReferencedDoseSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTReferencedDoseSequence::write(DcmItem &dataset,
+OFCondition DRTSourceInstanceSequence::write(DcmItem &dataset,
                                              const OFString &card,
                                              const OFString &type,
                                              const char *moduleName)
@@ -516,7 +523,7 @@ OFCondition DRTReferencedDoseSequence::write(DcmItem &dataset,
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDoseSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_SourceInstanceSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtsis.cc b/dcmrt/libsrc/drtsis.cc
index 85b953c..5f1fad7 100644
--- a/dcmrt/libsrc/drtsis.cc
+++ b/dcmrt/libsrc/drtsis.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSourceImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -379,7 +379,7 @@ OFBool DRTSourceImageSequence::isValid() const
 }
 
 
-unsigned long DRTSourceImageSequence::getNumberOfItems() const
+size_t DRTSourceImageSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -409,12 +409,12 @@ OFCondition DRTSourceImageSequence::gotoNextItem()
 }
 
 
-OFCondition DRTSourceImageSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTSourceImageSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -429,12 +429,12 @@ OFCondition DRTSourceImageSequence::gotoItem(const unsigned long num, OFListIter
 }
 
 
-OFCondition DRTSourceImageSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTSourceImageSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -449,7 +449,7 @@ OFCondition DRTSourceImageSequence::gotoItem(const unsigned long num, OFListCons
 }
 
 
-OFCondition DRTSourceImageSequence::gotoItem(const unsigned long num)
+OFCondition DRTSourceImageSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -485,7 +485,7 @@ const DRTSourceImageSequence::Item &DRTSourceImageSequence::getCurrentItem() con
 }
 
 
-OFCondition DRTSourceImageSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTSourceImageSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -495,7 +495,7 @@ OFCondition DRTSourceImageSequence::getItem(const unsigned long num, Item *&item
 }
 
 
-DRTSourceImageSequence::Item &DRTSourceImageSequence::getItem(const unsigned long num)
+DRTSourceImageSequence::Item &DRTSourceImageSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -505,7 +505,7 @@ DRTSourceImageSequence::Item &DRTSourceImageSequence::getItem(const unsigned lon
 }
 
 
-const DRTSourceImageSequence::Item &DRTSourceImageSequence::getItem(const unsigned long num) const
+const DRTSourceImageSequence::Item &DRTSourceImageSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -515,13 +515,13 @@ const DRTSourceImageSequence::Item &DRTSourceImageSequence::getItem(const unsign
 }
 
 
-DRTSourceImageSequence::Item &DRTSourceImageSequence::operator[](const unsigned long num)
+DRTSourceImageSequence::Item &DRTSourceImageSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTSourceImageSequence::Item &DRTSourceImageSequence::operator[](const unsigned long num) const
+const DRTSourceImageSequence::Item &DRTSourceImageSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -544,7 +544,7 @@ OFCondition DRTSourceImageSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTSourceImageSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTSourceImageSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -567,7 +567,7 @@ OFCondition DRTSourceImageSequence::insertItem(const unsigned long pos, Item *&i
 }
 
 
-OFCondition DRTSourceImageSequence::removeItem(const unsigned long pos)
+OFCondition DRTSourceImageSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtsns.cc b/dcmrt/libsrc/drtsns.cc
index b0febd2..1586885 100644
--- a/dcmrt/libsrc/drtsns.cc
+++ b/dcmrt/libsrc/drtsns.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTSnoutSequence::isValid() const
 }
 
 
-unsigned long DRTSnoutSequence::getNumberOfItems() const
+size_t DRTSnoutSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTSnoutSequence::gotoNextItem()
 }
 
 
-OFCondition DRTSnoutSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTSnoutSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTSnoutSequence::gotoItem(const unsigned long num, OFListIterator(I
 }
 
 
-OFCondition DRTSnoutSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTSnoutSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTSnoutSequence::gotoItem(const unsigned long num, OFListConstItera
 }
 
 
-OFCondition DRTSnoutSequence::gotoItem(const unsigned long num)
+OFCondition DRTSnoutSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTSnoutSequence::Item &DRTSnoutSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTSnoutSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTSnoutSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTSnoutSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTSnoutSequence::Item &DRTSnoutSequence::getItem(const unsigned long num)
+DRTSnoutSequence::Item &DRTSnoutSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTSnoutSequence::Item &DRTSnoutSequence::getItem(const unsigned long num)
 }
 
 
-const DRTSnoutSequence::Item &DRTSnoutSequence::getItem(const unsigned long num) const
+const DRTSnoutSequence::Item &DRTSnoutSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTSnoutSequence::Item &DRTSnoutSequence::getItem(const unsigned long num)
 }
 
 
-DRTSnoutSequence::Item &DRTSnoutSequence::operator[](const unsigned long num)
+DRTSnoutSequence::Item &DRTSnoutSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTSnoutSequence::Item &DRTSnoutSequence::operator[](const unsigned long num) const
+const DRTSnoutSequence::Item &DRTSnoutSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTSnoutSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTSnoutSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTSnoutSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTSnoutSequence::insertItem(const unsigned long pos, Item *&item)
 }
 
 
-OFCondition DRTSnoutSequence::removeItem(const unsigned long pos)
+OFCondition DRTSnoutSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtspccs.cc b/dcmrt/libsrc/drtspccs.cc
index be55f83..6e9a9e0 100644
--- a/dcmrt/libsrc/drtspccs.cc
+++ b/dcmrt/libsrc/drtspccs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSegmentedPropertyCategoryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTSegmentedPropertyCategoryCodeSequence::Item::Item(const OFBool emptyDefaultIt
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
@@ -55,6 +56,7 @@ DRTSegmentedPropertyCategoryCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
@@ -84,6 +86,7 @@ DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCode
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -107,6 +110,7 @@ void DRTSegmentedPropertyCategoryCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -128,6 +132,7 @@ OFBool DRTSegmentedPropertyCategoryCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -159,6 +164,7 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "SegmentedPropertyCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
@@ -186,6 +192,7 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "SegmentedPropertyCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
@@ -303,6 +310,15 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getMappingResource(O
 }
 
 
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -477,6 +493,19 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setMappingResource(c
 }
 
 
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -606,7 +635,7 @@ OFBool DRTSegmentedPropertyCategoryCodeSequence::isValid() const
 }
 
 
-unsigned long DRTSegmentedPropertyCategoryCodeSequence::getNumberOfItems() const
+size_t DRTSegmentedPropertyCategoryCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -636,12 +665,12 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoItem(const unsigned lo
 }
 
 
-OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,7 +705,7 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoItem(const unsigned lo
 }
 
 
-OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -712,7 +741,7 @@ const DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCatego
 }
 
 
-OFCondition DRTSegmentedPropertyCategoryCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::getItem(const unsigned lon
 }
 
 
-DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCodeSequence::getItem(const unsigned long num)
+DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCode
 }
 
 
-const DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCodeSequence::getItem(const unsigned long num) const
+const DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,13 +771,13 @@ const DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCatego
 }
 
 
-DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCodeSequence::operator[](const unsigned long num)
+DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCodeSequence::operator[](const unsigned long num) const
+const DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -771,7 +800,7 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTSegmentedPropertyCategoryCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::insertItem(const unsigned
 }
 
 
-OFCondition DRTSegmentedPropertyCategoryCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtspcs.cc b/dcmrt/libsrc/drtspcs.cc
index 7f47f65..0e16b73 100644
--- a/dcmrt/libsrc/drtspcs.cc
+++ b/dcmrt/libsrc/drtspcs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTScheduledProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -34,6 +34,7 @@ DRTScheduledProtocolCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     ProtocolContextSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     URNCodeValue(DCM_URNCodeValue)
@@ -56,6 +57,7 @@ DRTScheduledProtocolCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     ProtocolContextSequence(copy.ProtocolContextSequence),
     URNCodeValue(copy.URNCodeValue)
@@ -86,6 +88,7 @@ DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::Item::
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         ProtocolContextSequence = copy.ProtocolContextSequence;
         URNCodeValue = copy.URNCodeValue;
@@ -110,6 +113,7 @@ void DRTScheduledProtocolCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -132,6 +136,7 @@ OFBool DRTScheduledProtocolCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -164,6 +169,7 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ScheduledProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ScheduledProtocolCodeSequence");
@@ -192,6 +198,7 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ScheduledProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ScheduledProtocolCodeSequence");
@@ -310,6 +317,15 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTScheduledProtocolCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
 OFCondition DRTScheduledProtocolCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -484,6 +500,19 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTScheduledProtocolCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTScheduledProtocolCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -613,7 +642,7 @@ OFBool DRTScheduledProtocolCodeSequence::isValid() const
 }
 
 
-unsigned long DRTScheduledProtocolCodeSequence::getNumberOfItems() const
+size_t DRTScheduledProtocolCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -643,12 +672,12 @@ OFCondition DRTScheduledProtocolCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTScheduledProtocolCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTScheduledProtocolCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -663,12 +692,12 @@ OFCondition DRTScheduledProtocolCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTScheduledProtocolCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTScheduledProtocolCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -683,7 +712,7 @@ OFCondition DRTScheduledProtocolCodeSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTScheduledProtocolCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTScheduledProtocolCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -719,7 +748,7 @@ const DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::
 }
 
 
-OFCondition DRTScheduledProtocolCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTScheduledProtocolCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -729,7 +758,7 @@ OFCondition DRTScheduledProtocolCodeSequence::getItem(const unsigned long num, I
 }
 
 
-DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::getItem(const unsigned long num)
+DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -739,7 +768,7 @@ DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::getIte
 }
 
 
-const DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::getItem(const unsigned long num) const
+const DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -749,13 +778,13 @@ const DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::
 }
 
 
-DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::operator[](const unsigned long num)
+DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::operator[](const unsigned long num) const
+const DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -778,7 +807,7 @@ OFCondition DRTScheduledProtocolCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTScheduledProtocolCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTScheduledProtocolCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -801,7 +830,7 @@ OFCondition DRTScheduledProtocolCodeSequence::insertItem(const unsigned long pos
 }
 
 
-OFCondition DRTScheduledProtocolCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTScheduledProtocolCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtopis.cc b/dcmrt/libsrc/drtspgis.cc
similarity index 69%
copy from dcmrt/libsrc/drtopis.cc
copy to dcmrt/libsrc/drtspgis.cc
index a47bd1e..5c7924b 100644
--- a/dcmrt/libsrc/drtopis.cc
+++ b/dcmrt/libsrc/drtspgis.cc
@@ -1,50 +1,48 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTOtherPatientIDsSequence
+ *  Source file for class DRTSourcePatientGroupIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtopis.h"
+#include "dcmtk/dcmrt/seq/drtspgis.h"
 
 
 // --- item class ---
 
-DRTOtherPatientIDsSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTSourcePatientGroupIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(emptyDefaultItem /*emptyDefaultSequence*/),
-    PatientID(DCM_PatientID),
-    TypeOfPatientID(DCM_TypeOfPatientID)
+    PatientID(DCM_PatientID)
 {
 }
 
 
-DRTOtherPatientIDsSequence::Item::Item(const Item &copy)
+DRTSourcePatientGroupIdentificationSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
-    PatientID(copy.PatientID),
-    TypeOfPatientID(copy.TypeOfPatientID)
+    PatientID(copy.PatientID)
 {
 }
 
 
-DRTOtherPatientIDsSequence::Item::~Item()
+DRTSourcePatientGroupIdentificationSequence::Item::~Item()
 {
 }
 
 
-DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::Item::operator=(const Item &copy)
+DRTSourcePatientGroupIdentificationSequence::Item &DRTSourcePatientGroupIdentificationSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
@@ -52,13 +50,12 @@ DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::Item::operator=(co
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
         PatientID = copy.PatientID;
-        TypeOfPatientID = copy.TypeOfPatientID;
     }
     return *this;
 }
 
 
-void DRTOtherPatientIDsSequence::Item::clear()
+void DRTSourcePatientGroupIdentificationSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
@@ -66,59 +63,55 @@ void DRTOtherPatientIDsSequence::Item::clear()
         PatientID.clear();
         IssuerOfPatientID.clear();
         IssuerOfPatientIDQualifiersSequence.clear();
-        TypeOfPatientID.clear();
     }
 }
 
 
-OFBool DRTOtherPatientIDsSequence::Item::isEmpty()
+OFBool DRTSourcePatientGroupIdentificationSequence::Item::isEmpty()
 {
     return PatientID.isEmpty() &&
            IssuerOfPatientID.isEmpty() &&
-           IssuerOfPatientIDQualifiersSequence.isEmpty() &&
-           TypeOfPatientID.isEmpty();
+           IssuerOfPatientIDQualifiersSequence.isEmpty();
 }
 
 
-OFBool DRTOtherPatientIDsSequence::Item::isValid() const
+OFBool DRTSourcePatientGroupIdentificationSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::read(DcmItem &item)
+OFCondition DRTSourcePatientGroupIdentificationSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, PatientID, "1", "1", "OtherPatientIDsSequence");
-        getAndCheckElementFromDataset(item, IssuerOfPatientID, "1", "3", "OtherPatientIDsSequence");
-        IssuerOfPatientIDQualifiersSequence.read(item, "1-n", "3", "OtherPatientIDsSequence");
-        getAndCheckElementFromDataset(item, TypeOfPatientID, "1", "1", "OtherPatientIDsSequence");
+        getAndCheckElementFromDataset(item, PatientID, "1", "1", "SourcePatientGroupIdentificationSequence");
+        getAndCheckElementFromDataset(item, IssuerOfPatientID, "1", "3", "SourcePatientGroupIdentificationSequence");
+        IssuerOfPatientIDQualifiersSequence.read(item, "1-n", "3", "SourcePatientGroupIdentificationSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::write(DcmItem &item)
+OFCondition DRTSourcePatientGroupIdentificationSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmLongString(PatientID), "1", "1", "OtherPatientIDsSequence");
-        addElementToDataset(result, item, new DcmLongString(IssuerOfPatientID), "1", "3", "OtherPatientIDsSequence");
-        if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(item, "1-n", "3", "OtherPatientIDsSequence");
-        addElementToDataset(result, item, new DcmCodeString(TypeOfPatientID), "1", "1", "OtherPatientIDsSequence");
+        addElementToDataset(result, item, new DcmLongString(PatientID), "1", "1", "SourcePatientGroupIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(IssuerOfPatientID), "1", "3", "SourcePatientGroupIdentificationSequence");
+        if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(item, "1-n", "3", "SourcePatientGroupIdentificationSequence");
     }
     return result;
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::getIssuerOfPatientID(OFString &value, const signed long pos) const
+OFCondition DRTSourcePatientGroupIdentificationSequence::Item::getIssuerOfPatientID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -127,7 +120,7 @@ OFCondition DRTOtherPatientIDsSequence::Item::getIssuerOfPatientID(OFString &val
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::getPatientID(OFString &value, const signed long pos) const
+OFCondition DRTSourcePatientGroupIdentificationSequence::Item::getPatientID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -136,16 +129,7 @@ OFCondition DRTOtherPatientIDsSequence::Item::getPatientID(OFString &value, cons
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::getTypeOfPatientID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(TypeOfPatientID, value, pos);
-}
-
-
-OFCondition DRTOtherPatientIDsSequence::Item::setIssuerOfPatientID(const OFString &value, const OFBool check)
+OFCondition DRTSourcePatientGroupIdentificationSequence::Item::setIssuerOfPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -158,7 +142,7 @@ OFCondition DRTOtherPatientIDsSequence::Item::setIssuerOfPatientID(const OFStrin
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::setPatientID(const OFString &value, const OFBool check)
+OFCondition DRTSourcePatientGroupIdentificationSequence::Item::setPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -171,22 +155,9 @@ OFCondition DRTOtherPatientIDsSequence::Item::setPatientID(const OFString &value
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::Item::setTypeOfPatientID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = TypeOfPatientID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
 // --- sequence class ---
 
-DRTOtherPatientIDsSequence::DRTOtherPatientIDsSequence(const OFBool emptyDefaultSequence)
+DRTSourcePatientGroupIdentificationSequence::DRTSourcePatientGroupIdentificationSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -196,7 +167,7 @@ DRTOtherPatientIDsSequence::DRTOtherPatientIDsSequence(const OFBool emptyDefault
 }
 
 
-DRTOtherPatientIDsSequence::DRTOtherPatientIDsSequence(const DRTOtherPatientIDsSequence &copy)
+DRTSourcePatientGroupIdentificationSequence::DRTSourcePatientGroupIdentificationSequence(const DRTSourcePatientGroupIdentificationSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -222,7 +193,7 @@ DRTOtherPatientIDsSequence::DRTOtherPatientIDsSequence(const DRTOtherPatientIDsS
 }
 
 
-DRTOtherPatientIDsSequence &DRTOtherPatientIDsSequence::operator=(const DRTOtherPatientIDsSequence &copy)
+DRTSourcePatientGroupIdentificationSequence &DRTSourcePatientGroupIdentificationSequence::operator=(const DRTSourcePatientGroupIdentificationSequence &copy)
 {
     if (this != &copy)
     {
@@ -250,13 +221,13 @@ DRTOtherPatientIDsSequence &DRTOtherPatientIDsSequence::operator=(const DRTOther
 }
 
 
-DRTOtherPatientIDsSequence::~DRTOtherPatientIDsSequence()
+DRTSourcePatientGroupIdentificationSequence::~DRTSourcePatientGroupIdentificationSequence()
 {
     clear();
 }
 
 
-void DRTOtherPatientIDsSequence::clear()
+void DRTSourcePatientGroupIdentificationSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -275,25 +246,25 @@ void DRTOtherPatientIDsSequence::clear()
 }
 
 
-OFBool DRTOtherPatientIDsSequence::isEmpty()
+OFBool DRTSourcePatientGroupIdentificationSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTOtherPatientIDsSequence::isValid() const
+OFBool DRTSourcePatientGroupIdentificationSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTOtherPatientIDsSequence::getNumberOfItems() const
+size_t DRTSourcePatientGroupIdentificationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoFirstItem()
+OFCondition DRTSourcePatientGroupIdentificationSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -305,7 +276,7 @@ OFCondition DRTOtherPatientIDsSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoNextItem()
+OFCondition DRTSourcePatientGroupIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -317,12 +288,12 @@ OFCondition DRTOtherPatientIDsSequence::gotoNextItem()
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTSourcePatientGroupIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -337,12 +308,12 @@ OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTSourcePatientGroupIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -357,13 +328,13 @@ OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::gotoItem(const unsigned long num)
+OFCondition DRTSourcePatientGroupIdentificationSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::getCurrentItem(Item *&item) const
+OFCondition DRTSourcePatientGroupIdentificationSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -375,7 +346,7 @@ OFCondition DRTOtherPatientIDsSequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getCurrentItem()
+DRTSourcePatientGroupIdentificationSequence::Item &DRTSourcePatientGroupIdentificationSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -384,7 +355,7 @@ DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getCurrentItem()
 }
 
 
-const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getCurrentItem() const
+const DRTSourcePatientGroupIdentificationSequence::Item &DRTSourcePatientGroupIdentificationSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -393,7 +364,7 @@ const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getCurrentIt
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTSourcePatientGroupIdentificationSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -403,7 +374,7 @@ OFCondition DRTOtherPatientIDsSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(const unsigned long num)
+DRTSourcePatientGroupIdentificationSequence::Item &DRTSourcePatientGroupIdentificationSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -413,7 +384,7 @@ DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(const unsi
 }
 
 
-const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(const unsigned long num) const
+const DRTSourcePatientGroupIdentificationSequence::Item &DRTSourcePatientGroupIdentificationSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -423,19 +394,19 @@ const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::getItem(cons
 }
 
 
-DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::operator[](const unsigned long num)
+DRTSourcePatientGroupIdentificationSequence::Item &DRTSourcePatientGroupIdentificationSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTOtherPatientIDsSequence::Item &DRTOtherPatientIDsSequence::operator[](const unsigned long num) const
+const DRTSourcePatientGroupIdentificationSequence::Item &DRTSourcePatientGroupIdentificationSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::addItem(Item *&item)
+OFCondition DRTSourcePatientGroupIdentificationSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -452,7 +423,7 @@ OFCondition DRTOtherPatientIDsSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTSourcePatientGroupIdentificationSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -475,7 +446,7 @@ OFCondition DRTOtherPatientIDsSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::removeItem(const unsigned long pos)
+OFCondition DRTSourcePatientGroupIdentificationSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -493,10 +464,10 @@ OFCondition DRTOtherPatientIDsSequence::removeItem(const unsigned long pos)
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::read(DcmItem &dataset,
-                                             const OFString &card,
-                                             const OFString &type,
-                                             const char *moduleName)
+OFCondition DRTSourcePatientGroupIdentificationSequence::read(DcmItem &dataset,
+                                                              const OFString &card,
+                                                              const OFString &type,
+                                                              const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -505,7 +476,7 @@ OFCondition DRTOtherPatientIDsSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_OtherPatientIDsSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_SourcePatientGroupIdentificationSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -535,7 +506,7 @@ OFCondition DRTOtherPatientIDsSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_OtherPatientIDsSequence);
+            DcmSequenceOfItems element(DCM_SourcePatientGroupIdentificationSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -543,16 +514,16 @@ OFCondition DRTOtherPatientIDsSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTOtherPatientIDsSequence::write(DcmItem &dataset,
-                                              const OFString &card,
-                                              const OFString &type,
-                                              const char *moduleName)
+OFCondition DRTSourcePatientGroupIdentificationSequence::write(DcmItem &dataset,
+                                                               const OFString &card,
+                                                               const OFString &type,
+                                                               const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_OtherPatientIDsSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_SourcePatientGroupIdentificationSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtarics.cc b/dcmrt/libsrc/drtsptcs.cc
similarity index 73%
rename from dcmrt/libsrc/drtarics.cc
rename to dcmrt/libsrc/drtsptcs.cc
index 7e6d530..b0b49c7 100644
--- a/dcmrt/libsrc/drtarics.cc
+++ b/dcmrt/libsrc/drtsptcs.cc
@@ -1,25 +1,25 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTAdditionalRTROIIdentificationCodeSequence
+ *  Source file for class DRTSegmentedPropertyTypeModifierCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtarics.h"
+#include "dcmtk/dcmrt/seq/drtsptcs.h"
 
 
 // --- item class ---
 
-DRTAdditionalRTROIIdentificationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTSegmentedPropertyTypeModifierCodeSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     CodeMeaning(DCM_CodeMeaning),
     CodeValue(DCM_CodeValue),
@@ -34,14 +34,14 @@ DRTAdditionalRTROIIdentificationCodeSequence::Item::Item(const OFBool emptyDefau
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
-    PurposeOfReferenceCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     URNCodeValue(DCM_URNCodeValue)
 {
 }
 
 
-DRTAdditionalRTROIIdentificationCodeSequence::Item::Item(const Item &copy)
+DRTSegmentedPropertyTypeModifierCodeSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     CodeMeaning(copy.CodeMeaning),
     CodeValue(copy.CodeValue),
@@ -56,19 +56,19 @@ DRTAdditionalRTROIIdentificationCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
-    PurposeOfReferenceCodeSequence(copy.PurposeOfReferenceCodeSequence),
     URNCodeValue(copy.URNCodeValue)
 {
 }
 
 
-DRTAdditionalRTROIIdentificationCodeSequence::Item::~Item()
+DRTSegmentedPropertyTypeModifierCodeSequence::Item::~Item()
 {
 }
 
 
-DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentificationCodeSequence::Item::operator=(const Item &copy)
+DRTSegmentedPropertyTypeModifierCodeSequence::Item &DRTSegmentedPropertyTypeModifierCodeSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
@@ -86,15 +86,15 @@ DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentifica
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
-        PurposeOfReferenceCodeSequence = copy.PurposeOfReferenceCodeSequence;
         URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
 
 
-void DRTAdditionalRTROIIdentificationCodeSequence::Item::clear()
+void DRTSegmentedPropertyTypeModifierCodeSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
@@ -110,16 +110,16 @@ void DRTAdditionalRTROIIdentificationCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
         ContextGroupExtensionCreatorUID.clear();
-        PurposeOfReferenceCodeSequence.clear();
     }
 }
 
 
-OFBool DRTAdditionalRTROIIdentificationCodeSequence::Item::isEmpty()
+OFBool DRTSegmentedPropertyTypeModifierCodeSequence::Item::isEmpty()
 {
     return CodeValue.isEmpty() &&
            CodingSchemeDesignator.isEmpty() &&
@@ -132,77 +132,77 @@ OFBool DRTAdditionalRTROIIdentificationCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
-           ContextGroupExtensionCreatorUID.isEmpty() &&
-           PurposeOfReferenceCodeSequence.isEmpty();
+           ContextGroupExtensionCreatorUID.isEmpty();
 }
 
 
-OFBool DRTAdditionalRTROIIdentificationCodeSequence::Item::isValid() const
+OFBool DRTSegmentedPropertyTypeModifierCodeSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::read(DcmItem &item)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        EquivalentCodeSequence.read(item, "1-n", "3", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        PurposeOfReferenceCodeSequence.read(item, "1-n", "1", "AdditionalRTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::write(DcmItem &item)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
-        if (result.good()) result = PurposeOfReferenceCodeSequence.write(item, "1-n", "1", "AdditionalRTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "SegmentedPropertyTypeModifierCodeSequence");
     }
     return result;
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -211,7 +211,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getCodeMeaning(O
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -220,7 +220,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getCodeValue(OFS
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -229,7 +229,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getCodingSchemeD
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -238,7 +238,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getCodingSchemeV
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -247,7 +247,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextGroupE
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -256,7 +256,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextGroupE
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -265,7 +265,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextGroupL
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -274,7 +274,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextGroupV
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -283,7 +283,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextIdenti
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -292,7 +292,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextUID(OF
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -301,7 +301,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getLongCodeValue
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -310,7 +310,16 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getMappingResour
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -319,7 +328,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getMappingResour
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -328,7 +337,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getURNCodeValue(
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -341,7 +350,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setCodeMeaning(c
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -354,7 +363,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setCodeValue(con
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -367,7 +376,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setCodingSchemeD
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -380,7 +389,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setCodingSchemeV
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -393,7 +402,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextGroupE
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -406,7 +415,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextGroupE
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -419,7 +428,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextGroupL
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -432,7 +441,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextGroupV
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -445,7 +454,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextIdenti
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -458,7 +467,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextUID(co
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -471,7 +480,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setLongCodeValue
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -484,7 +493,20 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setMappingResour
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -497,7 +519,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setMappingResour
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -512,7 +534,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setURNCodeValue(
 
 // --- sequence class ---
 
-DRTAdditionalRTROIIdentificationCodeSequence::DRTAdditionalRTROIIdentificationCodeSequence(const OFBool emptyDefaultSequence)
+DRTSegmentedPropertyTypeModifierCodeSequence::DRTSegmentedPropertyTypeModifierCodeSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -522,7 +544,7 @@ DRTAdditionalRTROIIdentificationCodeSequence::DRTAdditionalRTROIIdentificationCo
 }
 
 
-DRTAdditionalRTROIIdentificationCodeSequence::DRTAdditionalRTROIIdentificationCodeSequence(const DRTAdditionalRTROIIdentificationCodeSequence &copy)
+DRTSegmentedPropertyTypeModifierCodeSequence::DRTSegmentedPropertyTypeModifierCodeSequence(const DRTSegmentedPropertyTypeModifierCodeSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -548,7 +570,7 @@ DRTAdditionalRTROIIdentificationCodeSequence::DRTAdditionalRTROIIdentificationCo
 }
 
 
-DRTAdditionalRTROIIdentificationCodeSequence &DRTAdditionalRTROIIdentificationCodeSequence::operator=(const DRTAdditionalRTROIIdentificationCodeSequence &copy)
+DRTSegmentedPropertyTypeModifierCodeSequence &DRTSegmentedPropertyTypeModifierCodeSequence::operator=(const DRTSegmentedPropertyTypeModifierCodeSequence &copy)
 {
     if (this != &copy)
     {
@@ -576,13 +598,13 @@ DRTAdditionalRTROIIdentificationCodeSequence &DRTAdditionalRTROIIdentificationCo
 }
 
 
-DRTAdditionalRTROIIdentificationCodeSequence::~DRTAdditionalRTROIIdentificationCodeSequence()
+DRTSegmentedPropertyTypeModifierCodeSequence::~DRTSegmentedPropertyTypeModifierCodeSequence()
 {
     clear();
 }
 
 
-void DRTAdditionalRTROIIdentificationCodeSequence::clear()
+void DRTSegmentedPropertyTypeModifierCodeSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -601,25 +623,25 @@ void DRTAdditionalRTROIIdentificationCodeSequence::clear()
 }
 
 
-OFBool DRTAdditionalRTROIIdentificationCodeSequence::isEmpty()
+OFBool DRTSegmentedPropertyTypeModifierCodeSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTAdditionalRTROIIdentificationCodeSequence::isValid() const
+OFBool DRTSegmentedPropertyTypeModifierCodeSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTAdditionalRTROIIdentificationCodeSequence::getNumberOfItems() const
+size_t DRTSegmentedPropertyTypeModifierCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::gotoFirstItem()
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -631,7 +653,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::gotoNextItem()
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -643,12 +665,12 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -663,12 +685,12 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::gotoItem(const unsigne
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -683,13 +705,13 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::gotoItem(const unsigne
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::getCurrentItem(Item *&item) const
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -701,7 +723,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::getCurrentItem(Item *&
 }
 
 
-DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentificationCodeSequence::getCurrentItem()
+DRTSegmentedPropertyTypeModifierCodeSequence::Item &DRTSegmentedPropertyTypeModifierCodeSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -710,7 +732,7 @@ DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentifica
 }
 
 
-const DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentificationCodeSequence::getCurrentItem() const
+const DRTSegmentedPropertyTypeModifierCodeSequence::Item &DRTSegmentedPropertyTypeModifierCodeSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -719,7 +741,7 @@ const DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIden
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -729,7 +751,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::getItem(const unsigned
 }
 
 
-DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentificationCodeSequence::getItem(const unsigned long num)
+DRTSegmentedPropertyTypeModifierCodeSequence::Item &DRTSegmentedPropertyTypeModifierCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -739,7 +761,7 @@ DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentifica
 }
 
 
-const DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentificationCodeSequence::getItem(const unsigned long num) const
+const DRTSegmentedPropertyTypeModifierCodeSequence::Item &DRTSegmentedPropertyTypeModifierCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -749,19 +771,19 @@ const DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIden
 }
 
 
-DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentificationCodeSequence::operator[](const unsigned long num)
+DRTSegmentedPropertyTypeModifierCodeSequence::Item &DRTSegmentedPropertyTypeModifierCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentificationCodeSequence::operator[](const unsigned long num) const
+const DRTSegmentedPropertyTypeModifierCodeSequence::Item &DRTSegmentedPropertyTypeModifierCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::addItem(Item *&item)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -778,7 +800,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -801,7 +823,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::insertItem(const unsig
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -819,7 +841,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::removeItem(const unsig
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::read(DcmItem &dataset,
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::read(DcmItem &dataset,
                                                                const OFString &card,
                                                                const OFString &type,
                                                                const char *moduleName)
@@ -831,7 +853,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_AdditionalRTROIIdentificationCodeSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_SegmentedPropertyTypeModifierCodeSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -861,7 +883,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_AdditionalRTROIIdentificationCodeSequence);
+            DcmSequenceOfItems element(DCM_SegmentedPropertyTypeModifierCodeSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -869,7 +891,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTAdditionalRTROIIdentificationCodeSequence::write(DcmItem &dataset,
+OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::write(DcmItem &dataset,
                                                                 const OFString &card,
                                                                 const OFString &type,
                                                                 const char *moduleName)
@@ -878,7 +900,7 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::write(DcmItem &dataset
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_AdditionalRTROIIdentificationCodeSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_SegmentedPropertyTypeModifierCodeSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtss.cc b/dcmrt/libsrc/drtss.cc
index 0bfbd0c..3fb57ac 100644
--- a/dcmrt/libsrc/drtss.cc
+++ b/dcmrt/libsrc/drtss.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -787,7 +787,7 @@ OFBool DRTSourceSequence::isValid() const
 }
 
 
-unsigned long DRTSourceSequence::getNumberOfItems() const
+size_t DRTSourceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -817,12 +817,12 @@ OFCondition DRTSourceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTSourceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTSourceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -837,12 +837,12 @@ OFCondition DRTSourceSequence::gotoItem(const unsigned long num, OFListIterator(
 }
 
 
-OFCondition DRTSourceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTSourceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -857,7 +857,7 @@ OFCondition DRTSourceSequence::gotoItem(const unsigned long num, OFListConstIter
 }
 
 
-OFCondition DRTSourceSequence::gotoItem(const unsigned long num)
+OFCondition DRTSourceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -893,7 +893,7 @@ const DRTSourceSequence::Item &DRTSourceSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTSourceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTSourceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -903,7 +903,7 @@ OFCondition DRTSourceSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTSourceSequence::Item &DRTSourceSequence::getItem(const unsigned long num)
+DRTSourceSequence::Item &DRTSourceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -913,7 +913,7 @@ DRTSourceSequence::Item &DRTSourceSequence::getItem(const unsigned long num)
 }
 
 
-const DRTSourceSequence::Item &DRTSourceSequence::getItem(const unsigned long num) const
+const DRTSourceSequence::Item &DRTSourceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -923,13 +923,13 @@ const DRTSourceSequence::Item &DRTSourceSequence::getItem(const unsigned long nu
 }
 
 
-DRTSourceSequence::Item &DRTSourceSequence::operator[](const unsigned long num)
+DRTSourceSequence::Item &DRTSourceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTSourceSequence::Item &DRTSourceSequence::operator[](const unsigned long num) const
+const DRTSourceSequence::Item &DRTSourceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -952,7 +952,7 @@ OFCondition DRTSourceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTSourceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTSourceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -975,7 +975,7 @@ OFCondition DRTSourceSequence::insertItem(const unsigned long pos, Item *&item)
 }
 
 
-OFCondition DRTSourceSequence::removeItem(const unsigned long pos)
+OFCondition DRTSourceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpics.cc b/dcmrt/libsrc/drtssrcs.cc
similarity index 75%
copy from dcmrt/libsrc/drtpics.cc
copy to dcmrt/libsrc/drtssrcs.cc
index 77b1ad8..5af054c 100644
--- a/dcmrt/libsrc/drtpics.cc
+++ b/dcmrt/libsrc/drtssrcs.cc
@@ -1,25 +1,25 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTPersonIdentificationCodeSequence
+ *  Source file for class DRTStrainSourceRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtpics.h"
+#include "dcmtk/dcmrt/seq/drtssrcs.h"
 
 
 // --- item class ---
 
-DRTPersonIdentificationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTStrainSourceRegistryCodeSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     CodeMeaning(DCM_CodeMeaning),
     CodeValue(DCM_CodeValue),
@@ -34,13 +34,14 @@ DRTPersonIdentificationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
     MappingResourceUID(DCM_MappingResourceUID),
     URNCodeValue(DCM_URNCodeValue)
 {
 }
 
 
-DRTPersonIdentificationCodeSequence::Item::Item(const Item &copy)
+DRTStrainSourceRegistryCodeSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     CodeMeaning(copy.CodeMeaning),
     CodeValue(copy.CodeValue),
@@ -55,18 +56,19 @@ DRTPersonIdentificationCodeSequence::Item::Item(const Item &copy)
     EquivalentCodeSequence(copy.EquivalentCodeSequence),
     LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
     MappingResourceUID(copy.MappingResourceUID),
     URNCodeValue(copy.URNCodeValue)
 {
 }
 
 
-DRTPersonIdentificationCodeSequence::Item::~Item()
+DRTStrainSourceRegistryCodeSequence::Item::~Item()
 {
 }
 
 
-DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::Item::operator=(const Item &copy)
+DRTStrainSourceRegistryCodeSequence::Item &DRTStrainSourceRegistryCodeSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
@@ -84,6 +86,7 @@ DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::
         EquivalentCodeSequence = copy.EquivalentCodeSequence;
         LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
         MappingResourceUID = copy.MappingResourceUID;
         URNCodeValue = copy.URNCodeValue;
     }
@@ -91,7 +94,7 @@ DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::
 }
 
 
-void DRTPersonIdentificationCodeSequence::Item::clear()
+void DRTStrainSourceRegistryCodeSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
@@ -107,6 +110,7 @@ void DRTPersonIdentificationCodeSequence::Item::clear()
         ContextUID.clear();
         MappingResource.clear();
         MappingResourceUID.clear();
+        MappingResourceName.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -115,7 +119,7 @@ void DRTPersonIdentificationCodeSequence::Item::clear()
 }
 
 
-OFBool DRTPersonIdentificationCodeSequence::Item::isEmpty()
+OFBool DRTStrainSourceRegistryCodeSequence::Item::isEmpty()
 {
     return CodeValue.isEmpty() &&
            CodingSchemeDesignator.isEmpty() &&
@@ -128,6 +132,7 @@ OFBool DRTPersonIdentificationCodeSequence::Item::isEmpty()
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
            MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -135,67 +140,69 @@ OFBool DRTPersonIdentificationCodeSequence::Item::isEmpty()
 }
 
 
-OFBool DRTPersonIdentificationCodeSequence::Item::isValid() const
+OFBool DRTStrainSourceRegistryCodeSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::read(DcmItem &item)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PersonIdentificationCodeSequence");
-        EquivalentCodeSequence.read(item, "1-n", "3", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "PersonIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "StrainSourceRegistryCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "StrainSourceRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "StrainSourceRegistryCodeSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::write(DcmItem &item)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PersonIdentificationCodeSequence");
-        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "PersonIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "StrainSourceRegistryCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "StrainSourceRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "StrainSourceRegistryCodeSequence");
     }
     return result;
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -204,7 +211,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getCodeMeaning(OFString &
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -213,7 +220,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getCodeValue(OFString &va
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -222,7 +229,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getCodingSchemeDesignator
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -231,7 +238,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getCodingSchemeVersion(OF
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -240,7 +247,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getContextGroupExtensionC
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -249,7 +256,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getContextGroupExtensionF
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -258,7 +265,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getContextGroupLocalVersi
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -267,7 +274,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getContextGroupVersion(OF
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -276,7 +283,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getContextIdentifier(OFSt
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -285,7 +292,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getContextUID(OFString &v
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -294,7 +301,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getLongCodeValue(OFString
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -303,7 +310,16 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResource(OFStri
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -312,7 +328,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResourceUID(OFS
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -321,7 +337,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getURNCodeValue(OFString
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -334,7 +350,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setCodeMeaning(const OFSt
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -347,7 +363,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setCodeValue(const OFStri
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -360,7 +376,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setCodingSchemeDesignator
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -373,7 +389,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setCodingSchemeVersion(co
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -386,7 +402,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setContextGroupExtensionC
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -399,7 +415,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setContextGroupExtensionF
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -412,7 +428,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setContextGroupLocalVersi
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -425,7 +441,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setContextGroupVersion(co
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -438,7 +454,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setContextIdentifier(cons
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -451,7 +467,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setContextUID(const OFStr
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -464,7 +480,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setLongCodeValue(const OF
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -477,7 +493,20 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResource(const
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -490,7 +519,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResourceUID(con
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+OFCondition DRTStrainSourceRegistryCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -505,7 +534,7 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setURNCodeValue(const OFS
 
 // --- sequence class ---
 
-DRTPersonIdentificationCodeSequence::DRTPersonIdentificationCodeSequence(const OFBool emptyDefaultSequence)
+DRTStrainSourceRegistryCodeSequence::DRTStrainSourceRegistryCodeSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -515,7 +544,7 @@ DRTPersonIdentificationCodeSequence::DRTPersonIdentificationCodeSequence(const O
 }
 
 
-DRTPersonIdentificationCodeSequence::DRTPersonIdentificationCodeSequence(const DRTPersonIdentificationCodeSequence &copy)
+DRTStrainSourceRegistryCodeSequence::DRTStrainSourceRegistryCodeSequence(const DRTStrainSourceRegistryCodeSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -541,7 +570,7 @@ DRTPersonIdentificationCodeSequence::DRTPersonIdentificationCodeSequence(const D
 }
 
 
-DRTPersonIdentificationCodeSequence &DRTPersonIdentificationCodeSequence::operator=(const DRTPersonIdentificationCodeSequence &copy)
+DRTStrainSourceRegistryCodeSequence &DRTStrainSourceRegistryCodeSequence::operator=(const DRTStrainSourceRegistryCodeSequence &copy)
 {
     if (this != &copy)
     {
@@ -569,13 +598,13 @@ DRTPersonIdentificationCodeSequence &DRTPersonIdentificationCodeSequence::operat
 }
 
 
-DRTPersonIdentificationCodeSequence::~DRTPersonIdentificationCodeSequence()
+DRTStrainSourceRegistryCodeSequence::~DRTStrainSourceRegistryCodeSequence()
 {
     clear();
 }
 
 
-void DRTPersonIdentificationCodeSequence::clear()
+void DRTStrainSourceRegistryCodeSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -594,25 +623,25 @@ void DRTPersonIdentificationCodeSequence::clear()
 }
 
 
-OFBool DRTPersonIdentificationCodeSequence::isEmpty()
+OFBool DRTStrainSourceRegistryCodeSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTPersonIdentificationCodeSequence::isValid() const
+OFBool DRTStrainSourceRegistryCodeSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTPersonIdentificationCodeSequence::getNumberOfItems() const
+size_t DRTStrainSourceRegistryCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::gotoFirstItem()
+OFCondition DRTStrainSourceRegistryCodeSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -624,7 +653,7 @@ OFCondition DRTPersonIdentificationCodeSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::gotoNextItem()
+OFCondition DRTStrainSourceRegistryCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -636,12 +665,12 @@ OFCondition DRTPersonIdentificationCodeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTStrainSourceRegistryCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -656,12 +685,12 @@ OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const unsigned long nu
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTStrainSourceRegistryCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -676,13 +705,13 @@ OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const unsigned long nu
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::gotoItem(const unsigned long num)
+OFCondition DRTStrainSourceRegistryCodeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::getCurrentItem(Item *&item) const
+OFCondition DRTStrainSourceRegistryCodeSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -694,7 +723,7 @@ OFCondition DRTPersonIdentificationCodeSequence::getCurrentItem(Item *&item) con
 }
 
 
-DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::getCurrentItem()
+DRTStrainSourceRegistryCodeSequence::Item &DRTStrainSourceRegistryCodeSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -703,7 +732,7 @@ DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::
 }
 
 
-const DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::getCurrentItem() const
+const DRTStrainSourceRegistryCodeSequence::Item &DRTStrainSourceRegistryCodeSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -712,7 +741,7 @@ const DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequ
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTStrainSourceRegistryCodeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -722,7 +751,7 @@ OFCondition DRTPersonIdentificationCodeSequence::getItem(const unsigned long num
 }
 
 
-DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::getItem(const unsigned long num)
+DRTStrainSourceRegistryCodeSequence::Item &DRTStrainSourceRegistryCodeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -732,7 +761,7 @@ DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::
 }
 
 
-const DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::getItem(const unsigned long num) const
+const DRTStrainSourceRegistryCodeSequence::Item &DRTStrainSourceRegistryCodeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -742,19 +771,19 @@ const DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequ
 }
 
 
-DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::operator[](const unsigned long num)
+DRTStrainSourceRegistryCodeSequence::Item &DRTStrainSourceRegistryCodeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::operator[](const unsigned long num) const
+const DRTStrainSourceRegistryCodeSequence::Item &DRTStrainSourceRegistryCodeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::addItem(Item *&item)
+OFCondition DRTStrainSourceRegistryCodeSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -771,7 +800,7 @@ OFCondition DRTPersonIdentificationCodeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTStrainSourceRegistryCodeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -794,7 +823,7 @@ OFCondition DRTPersonIdentificationCodeSequence::insertItem(const unsigned long
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::removeItem(const unsigned long pos)
+OFCondition DRTStrainSourceRegistryCodeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -812,7 +841,7 @@ OFCondition DRTPersonIdentificationCodeSequence::removeItem(const unsigned long
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::read(DcmItem &dataset,
+OFCondition DRTStrainSourceRegistryCodeSequence::read(DcmItem &dataset,
                                                       const OFString &card,
                                                       const OFString &type,
                                                       const char *moduleName)
@@ -824,7 +853,7 @@ OFCondition DRTPersonIdentificationCodeSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_PersonIdentificationCodeSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_StrainSourceRegistryCodeSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -854,7 +883,7 @@ OFCondition DRTPersonIdentificationCodeSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_PersonIdentificationCodeSequence);
+            DcmSequenceOfItems element(DCM_StrainSourceRegistryCodeSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -862,7 +891,7 @@ OFCondition DRTPersonIdentificationCodeSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTPersonIdentificationCodeSequence::write(DcmItem &dataset,
+OFCondition DRTStrainSourceRegistryCodeSequence::write(DcmItem &dataset,
                                                        const OFString &card,
                                                        const OFString &type,
                                                        const char *moduleName)
@@ -871,7 +900,7 @@ OFCondition DRTPersonIdentificationCodeSequence::write(DcmItem &dataset,
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PersonIdentificationCodeSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_StrainSourceRegistryCodeSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtssrs.cc b/dcmrt/libsrc/drtssrs.cc
index bf467a7..68f77e2 100644
--- a/dcmrt/libsrc/drtssrs.cc
+++ b/dcmrt/libsrc/drtssrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStructureSetROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -421,7 +421,7 @@ OFBool DRTStructureSetROISequence::isValid() const
 }
 
 
-unsigned long DRTStructureSetROISequence::getNumberOfItems() const
+size_t DRTStructureSetROISequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -451,12 +451,12 @@ OFCondition DRTStructureSetROISequence::gotoNextItem()
 }
 
 
-OFCondition DRTStructureSetROISequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTStructureSetROISequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -471,12 +471,12 @@ OFCondition DRTStructureSetROISequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTStructureSetROISequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTStructureSetROISequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -491,7 +491,7 @@ OFCondition DRTStructureSetROISequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTStructureSetROISequence::gotoItem(const unsigned long num)
+OFCondition DRTStructureSetROISequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -527,7 +527,7 @@ const DRTStructureSetROISequence::Item &DRTStructureSetROISequence::getCurrentIt
 }
 
 
-OFCondition DRTStructureSetROISequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTStructureSetROISequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -537,7 +537,7 @@ OFCondition DRTStructureSetROISequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTStructureSetROISequence::Item &DRTStructureSetROISequence::getItem(const unsigned long num)
+DRTStructureSetROISequence::Item &DRTStructureSetROISequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -547,7 +547,7 @@ DRTStructureSetROISequence::Item &DRTStructureSetROISequence::getItem(const unsi
 }
 
 
-const DRTStructureSetROISequence::Item &DRTStructureSetROISequence::getItem(const unsigned long num) const
+const DRTStructureSetROISequence::Item &DRTStructureSetROISequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -557,13 +557,13 @@ const DRTStructureSetROISequence::Item &DRTStructureSetROISequence::getItem(cons
 }
 
 
-DRTStructureSetROISequence::Item &DRTStructureSetROISequence::operator[](const unsigned long num)
+DRTStructureSetROISequence::Item &DRTStructureSetROISequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTStructureSetROISequence::Item &DRTStructureSetROISequence::operator[](const unsigned long num) const
+const DRTStructureSetROISequence::Item &DRTStructureSetROISequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -586,7 +586,7 @@ OFCondition DRTStructureSetROISequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTStructureSetROISequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTStructureSetROISequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -609,7 +609,7 @@ OFCondition DRTStructureSetROISequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTStructureSetROISequence::removeItem(const unsigned long pos)
+OFCondition DRTStructureSetROISequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrrs.cc b/dcmrt/libsrc/drtsss.cc
similarity index 68%
copy from dcmrt/libsrc/drtrrs.cc
copy to dcmrt/libsrc/drtsss.cc
index d149cb8..b127777 100644
--- a/dcmrt/libsrc/drtrrs.cc
+++ b/dcmrt/libsrc/drtsss.cc
@@ -1,157 +1,155 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTRTRelatedROISequence
+ *  Source file for class DRTStrainStockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtrrs.h"
+#include "dcmtk/dcmrt/seq/drtsss.h"
 
 
 // --- item class ---
 
-DRTRTRelatedROISequence::Item::Item(const OFBool emptyDefaultItem)
+DRTStrainStockSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    RTROIRelationship(DCM_RTROIRelationship),
-    ReferencedROINumber(DCM_ReferencedROINumber)
+    StrainSource(DCM_StrainSource),
+    StrainSourceRegistryCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    StrainStockNumber(DCM_StrainStockNumber)
 {
 }
 
 
-DRTRTRelatedROISequence::Item::Item(const Item &copy)
+DRTStrainStockSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    RTROIRelationship(copy.RTROIRelationship),
-    ReferencedROINumber(copy.ReferencedROINumber)
+    StrainSource(copy.StrainSource),
+    StrainSourceRegistryCodeSequence(copy.StrainSourceRegistryCodeSequence),
+    StrainStockNumber(copy.StrainStockNumber)
 {
 }
 
 
-DRTRTRelatedROISequence::Item::~Item()
+DRTStrainStockSequence::Item::~Item()
 {
 }
 
 
-DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::Item::operator=(const Item &copy)
+DRTStrainStockSequence::Item &DRTStrainStockSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        RTROIRelationship = copy.RTROIRelationship;
-        ReferencedROINumber = copy.ReferencedROINumber;
+        StrainSource = copy.StrainSource;
+        StrainSourceRegistryCodeSequence = copy.StrainSourceRegistryCodeSequence;
+        StrainStockNumber = copy.StrainStockNumber;
     }
     return *this;
 }
 
 
-void DRTRTRelatedROISequence::Item::clear()
+void DRTStrainStockSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
-        ReferencedROINumber.clear();
-        RTROIRelationship.clear();
+        StrainStockNumber.clear();
+        StrainSource.clear();
+        StrainSourceRegistryCodeSequence.clear();
     }
 }
 
 
-OFBool DRTRTRelatedROISequence::Item::isEmpty()
+OFBool DRTStrainStockSequence::Item::isEmpty()
 {
-    return ReferencedROINumber.isEmpty() &&
-           RTROIRelationship.isEmpty();
+    return StrainStockNumber.isEmpty() &&
+           StrainSource.isEmpty() &&
+           StrainSourceRegistryCodeSequence.isEmpty();
 }
 
 
-OFBool DRTRTRelatedROISequence::Item::isValid() const
+OFBool DRTStrainStockSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTRTRelatedROISequence::Item::read(DcmItem &item)
+OFCondition DRTStrainStockSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "RTRelatedROISequence");
-        getAndCheckElementFromDataset(item, RTROIRelationship, "1", "3", "RTRelatedROISequence");
+        getAndCheckElementFromDataset(item, StrainStockNumber, "1", "1", "StrainStockSequence");
+        getAndCheckElementFromDataset(item, StrainSource, "1", "1", "StrainStockSequence");
+        StrainSourceRegistryCodeSequence.read(item, "1-n", "1", "StrainStockSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTRTRelatedROISequence::Item::write(DcmItem &item)
+OFCondition DRTStrainStockSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "RTRelatedROISequence");
-        addElementToDataset(result, item, new DcmCodeString(RTROIRelationship), "1", "3", "RTRelatedROISequence");
+        addElementToDataset(result, item, new DcmLongString(StrainStockNumber), "1", "1", "StrainStockSequence");
+        addElementToDataset(result, item, new DcmLongString(StrainSource), "1", "1", "StrainStockSequence");
+        if (result.good()) result = StrainSourceRegistryCodeSequence.write(item, "1-n", "1", "StrainStockSequence");
     }
     return result;
 }
 
 
-OFCondition DRTRTRelatedROISequence::Item::getRTROIRelationship(OFString &value, const signed long pos) const
+OFCondition DRTStrainStockSequence::Item::getStrainSource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(RTROIRelationship, value, pos);
+        return getStringValueFromElement(StrainSource, value, pos);
 }
 
 
-OFCondition DRTRTRelatedROISequence::Item::getReferencedROINumber(OFString &value, const signed long pos) const
+OFCondition DRTStrainStockSequence::Item::getStrainStockNumber(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ReferencedROINumber, value, pos);
+        return getStringValueFromElement(StrainStockNumber, value, pos);
 }
 
 
-OFCondition DRTRTRelatedROISequence::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTRTRelatedROISequence::Item::setRTROIRelationship(const OFString &value, const OFBool check)
+OFCondition DRTStrainStockSequence::Item::setStrainSource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = RTROIRelationship.putOFStringArray(value);
+            result = StrainSource.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTRTRelatedROISequence::Item::setReferencedROINumber(const OFString &value, const OFBool check)
+OFCondition DRTStrainStockSequence::Item::setStrainStockNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = ReferencedROINumber.putOFStringArray(value);
+            result = StrainStockNumber.putOFStringArray(value);
     }
     return result;
 }
@@ -159,7 +157,7 @@ OFCondition DRTRTRelatedROISequence::Item::setReferencedROINumber(const OFString
 
 // --- sequence class ---
 
-DRTRTRelatedROISequence::DRTRTRelatedROISequence(const OFBool emptyDefaultSequence)
+DRTStrainStockSequence::DRTStrainStockSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -169,7 +167,7 @@ DRTRTRelatedROISequence::DRTRTRelatedROISequence(const OFBool emptyDefaultSequen
 }
 
 
-DRTRTRelatedROISequence::DRTRTRelatedROISequence(const DRTRTRelatedROISequence &copy)
+DRTStrainStockSequence::DRTStrainStockSequence(const DRTStrainStockSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -195,7 +193,7 @@ DRTRTRelatedROISequence::DRTRTRelatedROISequence(const DRTRTRelatedROISequence &
 }
 
 
-DRTRTRelatedROISequence &DRTRTRelatedROISequence::operator=(const DRTRTRelatedROISequence &copy)
+DRTStrainStockSequence &DRTStrainStockSequence::operator=(const DRTStrainStockSequence &copy)
 {
     if (this != &copy)
     {
@@ -223,13 +221,13 @@ DRTRTRelatedROISequence &DRTRTRelatedROISequence::operator=(const DRTRTRelatedRO
 }
 
 
-DRTRTRelatedROISequence::~DRTRTRelatedROISequence()
+DRTStrainStockSequence::~DRTStrainStockSequence()
 {
     clear();
 }
 
 
-void DRTRTRelatedROISequence::clear()
+void DRTStrainStockSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -248,25 +246,25 @@ void DRTRTRelatedROISequence::clear()
 }
 
 
-OFBool DRTRTRelatedROISequence::isEmpty()
+OFBool DRTStrainStockSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTRTRelatedROISequence::isValid() const
+OFBool DRTStrainStockSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTRTRelatedROISequence::getNumberOfItems() const
+size_t DRTStrainStockSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTRTRelatedROISequence::gotoFirstItem()
+OFCondition DRTStrainStockSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -278,7 +276,7 @@ OFCondition DRTRTRelatedROISequence::gotoFirstItem()
 }
 
 
-OFCondition DRTRTRelatedROISequence::gotoNextItem()
+OFCondition DRTStrainStockSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -290,12 +288,12 @@ OFCondition DRTRTRelatedROISequence::gotoNextItem()
 }
 
 
-OFCondition DRTRTRelatedROISequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTStrainStockSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -310,12 +308,12 @@ OFCondition DRTRTRelatedROISequence::gotoItem(const unsigned long num, OFListIte
 }
 
 
-OFCondition DRTRTRelatedROISequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTStrainStockSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,13 +328,13 @@ OFCondition DRTRTRelatedROISequence::gotoItem(const unsigned long num, OFListCon
 }
 
 
-OFCondition DRTRTRelatedROISequence::gotoItem(const unsigned long num)
+OFCondition DRTStrainStockSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTRTRelatedROISequence::getCurrentItem(Item *&item) const
+OFCondition DRTStrainStockSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -348,7 +346,7 @@ OFCondition DRTRTRelatedROISequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getCurrentItem()
+DRTStrainStockSequence::Item &DRTStrainStockSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -357,7 +355,7 @@ DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getCurrentItem()
 }
 
 
-const DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getCurrentItem() const
+const DRTStrainStockSequence::Item &DRTStrainStockSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -366,7 +364,7 @@ const DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getCurrentItem() c
 }
 
 
-OFCondition DRTRTRelatedROISequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTStrainStockSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -376,7 +374,7 @@ OFCondition DRTRTRelatedROISequence::getItem(const unsigned long num, Item *&ite
 }
 
 
-DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getItem(const unsigned long num)
+DRTStrainStockSequence::Item &DRTStrainStockSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -386,7 +384,7 @@ DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getItem(const unsigned l
 }
 
 
-const DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getItem(const unsigned long num) const
+const DRTStrainStockSequence::Item &DRTStrainStockSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -396,19 +394,19 @@ const DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::getItem(const unsi
 }
 
 
-DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::operator[](const unsigned long num)
+DRTStrainStockSequence::Item &DRTStrainStockSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTRTRelatedROISequence::Item &DRTRTRelatedROISequence::operator[](const unsigned long num) const
+const DRTStrainStockSequence::Item &DRTStrainStockSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTRTRelatedROISequence::addItem(Item *&item)
+OFCondition DRTStrainStockSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -425,7 +423,7 @@ OFCondition DRTRTRelatedROISequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRTRelatedROISequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTStrainStockSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -448,7 +446,7 @@ OFCondition DRTRTRelatedROISequence::insertItem(const unsigned long pos, Item *&
 }
 
 
-OFCondition DRTRTRelatedROISequence::removeItem(const unsigned long pos)
+OFCondition DRTStrainStockSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -466,10 +464,10 @@ OFCondition DRTRTRelatedROISequence::removeItem(const unsigned long pos)
 }
 
 
-OFCondition DRTRTRelatedROISequence::read(DcmItem &dataset,
-                                          const OFString &card,
-                                          const OFString &type,
-                                          const char *moduleName)
+OFCondition DRTStrainStockSequence::read(DcmItem &dataset,
+                                         const OFString &card,
+                                         const OFString &type,
+                                         const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -478,7 +476,7 @@ OFCondition DRTRTRelatedROISequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_RTRelatedROISequence, sequence);
+        result = dataset.findAndGetSequence(DCM_StrainStockSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -508,7 +506,7 @@ OFCondition DRTRTRelatedROISequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_RTRelatedROISequence);
+            DcmSequenceOfItems element(DCM_StrainStockSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -516,16 +514,16 @@ OFCondition DRTRTRelatedROISequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTRTRelatedROISequence::write(DcmItem &dataset,
-                                           const OFString &card,
-                                           const OFString &type,
-                                           const char *moduleName)
+OFCondition DRTStrainStockSequence::write(DcmItem &dataset,
+                                          const OFString &card,
+                                          const OFString &type,
+                                          const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RTRelatedROISequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_StrainStockSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtstrct.cc b/dcmrt/libsrc/drtstrct.cc
index 29308f0..233cc14 100644
--- a/dcmrt/libsrc/drtstrct.cc
+++ b/dcmrt/libsrc/drtstrct.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStructureSetIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -23,6 +23,9 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
     PatientBirthDate(DCM_PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(DCM_PatientAlternativeCalendar),
     PatientSex(DCM_PatientSex),
     ReferencedPatientPhotoSequence(),
     QualityControlSubject(DCM_QualityControlSubject),
@@ -38,12 +41,19 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     PatientBreedDescription(DCM_PatientBreedDescription),
     PatientBreedCodeSequence(),
     BreedRegistrationSequence(),
+    StrainDescription(DCM_StrainDescription),
+    StrainNomenclature(DCM_StrainNomenclature),
+    StrainCodeSequence(),
+    StrainAdditionalInformation(DCM_StrainAdditionalInformation),
+    StrainStockSequence(),
     ResponsiblePerson(DCM_ResponsiblePerson),
     ResponsiblePersonRole(DCM_ResponsiblePersonRole),
     ResponsibleOrganization(DCM_ResponsibleOrganization),
     PatientIdentityRemoved(DCM_PatientIdentityRemoved),
     DeidentificationMethod(DCM_DeidentificationMethod),
     DeidentificationMethodCodeSequence(),
+    SourcePatientGroupIdentificationSequence(),
+    GroupOfPatientsIdentificationSequence(),
     ClinicalTrialSponsorName(DCM_ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(DCM_ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(DCM_ClinicalTrialProtocolName),
@@ -77,7 +87,16 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     PatientAge(DCM_PatientAge),
     PatientSize(DCM_PatientSize),
     PatientWeight(DCM_PatientWeight),
+    PatientBodyMassIndex(DCM_PatientBodyMassIndex),
+    MeasuredAPDimension(DCM_MeasuredAPDimension),
+    MeasuredLateralDimension(DCM_MeasuredLateralDimension),
     PatientSizeCodeSequence(),
+    MedicalAlerts(DCM_MedicalAlerts),
+    Allergies(DCM_Allergies),
+    SmokingStatus(DCM_SmokingStatus),
+    PregnancyStatus(DCM_PregnancyStatus),
+    LastMenstrualDate(DCM_LastMenstrualDate),
+    PatientState(DCM_PatientState),
     Occupation(DCM_Occupation),
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
@@ -97,6 +116,7 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     SeriesDescription(DCM_SeriesDescription),
     SeriesDescriptionCodeSequence(),
     OperatorsName(DCM_OperatorsName),
+    OperatorIdentificationSequence(),
     ReferencedPerformedProcedureStepSequence(),
     RequestAttributesSequence(),
     PerformedProcedureStepID(DCM_PerformedProcedureStepID),
@@ -119,6 +139,7 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
+    UDISequence(),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -140,6 +161,12 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     ReviewDate(DCM_ReviewDate),
     ReviewTime(DCM_ReviewTime),
     ReviewerName(DCM_ReviewerName),
+    ReferencedImageSequence(),
+    ReferencedInstanceSequence(),
+    DerivationDescription(DCM_DerivationDescription),
+    DerivationCodeSequence(),
+    SourceImageSequence(),
+    SourceInstanceSequence(),
     SOPClassUID(DCM_SOPClassUID),
     SOPInstanceUID(DCM_SOPInstanceUID),
     SpecificCharacterSet(DCM_SpecificCharacterSet),
@@ -150,6 +177,8 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     RelatedGeneralSOPClassUID(DCM_RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(DCM_OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(),
+    ContextGroupIdentificationSequence(),
+    MappingResourceIdentificationSequence(),
     TimezoneOffsetFromUTC(DCM_TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(),
     SOPInstanceStatus(DCM_SOPInstanceStatus),
@@ -180,6 +209,9 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
     PatientBirthDate(copy.PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(copy.PatientAlternativeCalendar),
     PatientSex(copy.PatientSex),
     ReferencedPatientPhotoSequence(copy.ReferencedPatientPhotoSequence),
     QualityControlSubject(copy.QualityControlSubject),
@@ -195,12 +227,19 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     PatientBreedDescription(copy.PatientBreedDescription),
     PatientBreedCodeSequence(copy.PatientBreedCodeSequence),
     BreedRegistrationSequence(copy.BreedRegistrationSequence),
+    StrainDescription(copy.StrainDescription),
+    StrainNomenclature(copy.StrainNomenclature),
+    StrainCodeSequence(copy.StrainCodeSequence),
+    StrainAdditionalInformation(copy.StrainAdditionalInformation),
+    StrainStockSequence(copy.StrainStockSequence),
     ResponsiblePerson(copy.ResponsiblePerson),
     ResponsiblePersonRole(copy.ResponsiblePersonRole),
     ResponsibleOrganization(copy.ResponsibleOrganization),
     PatientIdentityRemoved(copy.PatientIdentityRemoved),
     DeidentificationMethod(copy.DeidentificationMethod),
     DeidentificationMethodCodeSequence(copy.DeidentificationMethodCodeSequence),
+    SourcePatientGroupIdentificationSequence(copy.SourcePatientGroupIdentificationSequence),
+    GroupOfPatientsIdentificationSequence(copy.GroupOfPatientsIdentificationSequence),
     ClinicalTrialSponsorName(copy.ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(copy.ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(copy.ClinicalTrialProtocolName),
@@ -234,7 +273,16 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     PatientAge(copy.PatientAge),
     PatientSize(copy.PatientSize),
     PatientWeight(copy.PatientWeight),
+    PatientBodyMassIndex(copy.PatientBodyMassIndex),
+    MeasuredAPDimension(copy.MeasuredAPDimension),
+    MeasuredLateralDimension(copy.MeasuredLateralDimension),
     PatientSizeCodeSequence(copy.PatientSizeCodeSequence),
+    MedicalAlerts(copy.MedicalAlerts),
+    Allergies(copy.Allergies),
+    SmokingStatus(copy.SmokingStatus),
+    PregnancyStatus(copy.PregnancyStatus),
+    LastMenstrualDate(copy.LastMenstrualDate),
+    PatientState(copy.PatientState),
     Occupation(copy.Occupation),
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
@@ -254,6 +302,7 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     SeriesDescription(copy.SeriesDescription),
     SeriesDescriptionCodeSequence(copy.SeriesDescriptionCodeSequence),
     OperatorsName(copy.OperatorsName),
+    OperatorIdentificationSequence(copy.OperatorIdentificationSequence),
     ReferencedPerformedProcedureStepSequence(copy.ReferencedPerformedProcedureStepSequence),
     RequestAttributesSequence(copy.RequestAttributesSequence),
     PerformedProcedureStepID(copy.PerformedProcedureStepID),
@@ -276,6 +325,7 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
+    UDISequence(copy.UDISequence),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -297,6 +347,12 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     ReviewDate(copy.ReviewDate),
     ReviewTime(copy.ReviewTime),
     ReviewerName(copy.ReviewerName),
+    ReferencedImageSequence(copy.ReferencedImageSequence),
+    ReferencedInstanceSequence(copy.ReferencedInstanceSequence),
+    DerivationDescription(copy.DerivationDescription),
+    DerivationCodeSequence(copy.DerivationCodeSequence),
+    SourceImageSequence(copy.SourceImageSequence),
+    SourceInstanceSequence(copy.SourceInstanceSequence),
     SOPClassUID(copy.SOPClassUID),
     SOPInstanceUID(copy.SOPInstanceUID),
     SpecificCharacterSet(copy.SpecificCharacterSet),
@@ -307,6 +363,8 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     RelatedGeneralSOPClassUID(copy.RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(copy.OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(copy.CodingSchemeIdentificationSequence),
+    ContextGroupIdentificationSequence(copy.ContextGroupIdentificationSequence),
+    MappingResourceIdentificationSequence(copy.MappingResourceIdentificationSequence),
     TimezoneOffsetFromUTC(copy.TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(copy.ContributingEquipmentSequence),
     SOPInstanceStatus(copy.SOPInstanceStatus),
@@ -343,6 +401,9 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
         PatientBirthDate = copy.PatientBirthDate;
+        PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
+        PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
+        PatientAlternativeCalendar = copy.PatientAlternativeCalendar;
         PatientSex = copy.PatientSex;
         ReferencedPatientPhotoSequence = copy.ReferencedPatientPhotoSequence;
         QualityControlSubject = copy.QualityControlSubject;
@@ -358,12 +419,19 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         PatientBreedDescription = copy.PatientBreedDescription;
         PatientBreedCodeSequence = copy.PatientBreedCodeSequence;
         BreedRegistrationSequence = copy.BreedRegistrationSequence;
+        StrainDescription = copy.StrainDescription;
+        StrainNomenclature = copy.StrainNomenclature;
+        StrainCodeSequence = copy.StrainCodeSequence;
+        StrainAdditionalInformation = copy.StrainAdditionalInformation;
+        StrainStockSequence = copy.StrainStockSequence;
         ResponsiblePerson = copy.ResponsiblePerson;
         ResponsiblePersonRole = copy.ResponsiblePersonRole;
         ResponsibleOrganization = copy.ResponsibleOrganization;
         PatientIdentityRemoved = copy.PatientIdentityRemoved;
         DeidentificationMethod = copy.DeidentificationMethod;
         DeidentificationMethodCodeSequence = copy.DeidentificationMethodCodeSequence;
+        SourcePatientGroupIdentificationSequence = copy.SourcePatientGroupIdentificationSequence;
+        GroupOfPatientsIdentificationSequence = copy.GroupOfPatientsIdentificationSequence;
         ClinicalTrialSponsorName = copy.ClinicalTrialSponsorName;
         ClinicalTrialProtocolID = copy.ClinicalTrialProtocolID;
         ClinicalTrialProtocolName = copy.ClinicalTrialProtocolName;
@@ -397,7 +465,16 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         PatientAge = copy.PatientAge;
         PatientSize = copy.PatientSize;
         PatientWeight = copy.PatientWeight;
+        PatientBodyMassIndex = copy.PatientBodyMassIndex;
+        MeasuredAPDimension = copy.MeasuredAPDimension;
+        MeasuredLateralDimension = copy.MeasuredLateralDimension;
         PatientSizeCodeSequence = copy.PatientSizeCodeSequence;
+        MedicalAlerts = copy.MedicalAlerts;
+        Allergies = copy.Allergies;
+        SmokingStatus = copy.SmokingStatus;
+        PregnancyStatus = copy.PregnancyStatus;
+        LastMenstrualDate = copy.LastMenstrualDate;
+        PatientState = copy.PatientState;
         Occupation = copy.Occupation;
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
@@ -417,6 +494,7 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         SeriesDescription = copy.SeriesDescription;
         SeriesDescriptionCodeSequence = copy.SeriesDescriptionCodeSequence;
         OperatorsName = copy.OperatorsName;
+        OperatorIdentificationSequence = copy.OperatorIdentificationSequence;
         ReferencedPerformedProcedureStepSequence = copy.ReferencedPerformedProcedureStepSequence;
         RequestAttributesSequence = copy.RequestAttributesSequence;
         PerformedProcedureStepID = copy.PerformedProcedureStepID;
@@ -439,6 +517,7 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
+        UDISequence = copy.UDISequence;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -460,6 +539,12 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         ReviewDate = copy.ReviewDate;
         ReviewTime = copy.ReviewTime;
         ReviewerName = copy.ReviewerName;
+        ReferencedImageSequence = copy.ReferencedImageSequence;
+        ReferencedInstanceSequence = copy.ReferencedInstanceSequence;
+        DerivationDescription = copy.DerivationDescription;
+        DerivationCodeSequence = copy.DerivationCodeSequence;
+        SourceImageSequence = copy.SourceImageSequence;
+        SourceInstanceSequence = copy.SourceInstanceSequence;
         SOPClassUID = copy.SOPClassUID;
         SOPInstanceUID = copy.SOPInstanceUID;
         SpecificCharacterSet = copy.SpecificCharacterSet;
@@ -470,6 +555,8 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         RelatedGeneralSOPClassUID = copy.RelatedGeneralSOPClassUID;
         OriginalSpecializedSOPClassUID = copy.OriginalSpecializedSOPClassUID;
         CodingSchemeIdentificationSequence = copy.CodingSchemeIdentificationSequence;
+        ContextGroupIdentificationSequence = copy.ContextGroupIdentificationSequence;
+        MappingResourceIdentificationSequence = copy.MappingResourceIdentificationSequence;
         TimezoneOffsetFromUTC = copy.TimezoneOffsetFromUTC;
         ContributingEquipmentSequence = copy.ContributingEquipmentSequence;
         SOPInstanceStatus = copy.SOPInstanceStatus;
@@ -501,6 +588,9 @@ void DRTStructureSetIOD::clear()
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
     PatientBirthDate.clear();
+    PatientBirthDateInAlternativeCalendar.clear();
+    PatientDeathDateInAlternativeCalendar.clear();
+    PatientAlternativeCalendar.clear();
     PatientSex.clear();
     ReferencedPatientPhotoSequence.clear();
     QualityControlSubject.clear();
@@ -516,12 +606,19 @@ void DRTStructureSetIOD::clear()
     PatientBreedDescription.clear();
     PatientBreedCodeSequence.clear();
     BreedRegistrationSequence.clear();
+    StrainDescription.clear();
+    StrainNomenclature.clear();
+    StrainCodeSequence.clear();
+    StrainAdditionalInformation.clear();
+    StrainStockSequence.clear();
     ResponsiblePerson.clear();
     ResponsiblePersonRole.clear();
     ResponsibleOrganization.clear();
     PatientIdentityRemoved.clear();
     DeidentificationMethod.clear();
     DeidentificationMethodCodeSequence.clear();
+    SourcePatientGroupIdentificationSequence.clear();
+    GroupOfPatientsIdentificationSequence.clear();
     ClinicalTrialSponsorName.clear();
     ClinicalTrialProtocolID.clear();
     ClinicalTrialProtocolName.clear();
@@ -555,7 +652,16 @@ void DRTStructureSetIOD::clear()
     PatientAge.clear();
     PatientSize.clear();
     PatientWeight.clear();
+    PatientBodyMassIndex.clear();
+    MeasuredAPDimension.clear();
+    MeasuredLateralDimension.clear();
     PatientSizeCodeSequence.clear();
+    MedicalAlerts.clear();
+    Allergies.clear();
+    SmokingStatus.clear();
+    PregnancyStatus.clear();
+    LastMenstrualDate.clear();
+    PatientState.clear();
     Occupation.clear();
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
@@ -575,6 +681,7 @@ void DRTStructureSetIOD::clear()
     SeriesDescription.clear();
     SeriesDescriptionCodeSequence.clear();
     OperatorsName.clear();
+    OperatorIdentificationSequence.clear();
     ReferencedPerformedProcedureStepSequence.clear();
     RequestAttributesSequence.clear();
     PerformedProcedureStepID.clear();
@@ -597,6 +704,7 @@ void DRTStructureSetIOD::clear()
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
+    UDISequence.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -618,6 +726,12 @@ void DRTStructureSetIOD::clear()
     ReviewDate.clear();
     ReviewTime.clear();
     ReviewerName.clear();
+    ReferencedImageSequence.clear();
+    ReferencedInstanceSequence.clear();
+    DerivationDescription.clear();
+    DerivationCodeSequence.clear();
+    SourceImageSequence.clear();
+    SourceInstanceSequence.clear();
     SOPClassUID.clear();
     SOPInstanceUID.clear();
     SpecificCharacterSet.clear();
@@ -628,6 +742,8 @@ void DRTStructureSetIOD::clear()
     RelatedGeneralSOPClassUID.clear();
     OriginalSpecializedSOPClassUID.clear();
     CodingSchemeIdentificationSequence.clear();
+    ContextGroupIdentificationSequence.clear();
+    MappingResourceIdentificationSequence.clear();
     TimezoneOffsetFromUTC.clear();
     ContributingEquipmentSequence.clear();
     SOPInstanceStatus.clear();
@@ -703,6 +819,7 @@ OFCondition DRTStructureSetIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
+        UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -742,6 +859,14 @@ OFCondition DRTStructureSetIOD::read(DcmItem &dataset)
             getAndCheckElementFromDataset(dataset, ReviewerName, "1", "2C", "ApprovalModule");
         }
 
+        // --- GeneralReferenceModule (U) ---
+        ReferencedImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        ReferencedInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        getAndCheckElementFromDataset(dataset, DerivationDescription, "1", "3", "GeneralReferenceModule");
+        DerivationCodeSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+
         // --- SOPCommonModule (M) ---
         getAndCheckElementFromDataset(dataset, SOPClassUID, "1", "1", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, SOPInstanceUID, "1", "1", "SOPCommonModule");
@@ -753,6 +878,8 @@ OFCondition DRTStructureSetIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, RelatedGeneralSOPClassUID, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, OriginalSpecializedSOPClassUID, "1", "3", "SOPCommonModule");
         CodingSchemeIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        ContextGroupIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        MappingResourceIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, TimezoneOffsetFromUTC, "1", "3", "SOPCommonModule");
         ContributingEquipmentSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         // getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "3", "SOPCommonModule");
@@ -789,6 +916,9 @@ OFCondition DRTStructureSetIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientAlternativeCalendar, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientSex, "1", "2", "PatientModule");
     ReferencedPatientPhotoSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, QualityControlSubject, "1", "3", "PatientModule");
@@ -804,12 +934,19 @@ OFCondition DRTStructureSetIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientBreedDescription, "1", "2C", "PatientModule");
     PatientBreedCodeSequence.read(dataset, "1-n", "2C", "PatientModule");
     BreedRegistrationSequence.read(dataset, "1-n", "2C", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainDescription, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainNomenclature, "1", "3", "PatientModule");
+    StrainCodeSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainAdditionalInformation, "1", "3", "PatientModule");
+    StrainStockSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePerson, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePersonRole, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsibleOrganization, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientIdentityRemoved, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, DeidentificationMethod, "1-n", "1C", "PatientModule");
     DeidentificationMethodCodeSequence.read(dataset, "1-n", "1C", "PatientModule");
+    SourcePatientGroupIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
+    GroupOfPatientsIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
 
     // --- ClinicalTrialSubjectModule (U) ---
     if (dataset.tagExists(DCM_ClinicalTrialSponsorName) ||
@@ -865,7 +1002,16 @@ OFCondition DRTStructureSetIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PatientAge, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientSize, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientWeight, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientBodyMassIndex, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredAPDimension, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredLateralDimension, "1", "3", "PatientStudyModule");
         PatientSizeCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MedicalAlerts, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, Allergies, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, SmokingStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PregnancyStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, LastMenstrualDate, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientState, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, Occupation, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
@@ -902,6 +1048,7 @@ OFCondition DRTStructureSetIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, SeriesDescription, "1", "3", "RTSeriesModule");
         SeriesDescriptionCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, OperatorsName, "1-n", "2", "RTSeriesModule");
+        OperatorIdentificationSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         ReferencedPerformedProcedureStepSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         RequestAttributesSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepID, "1", "3", "RTSeriesModule");
@@ -940,6 +1087,9 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(PatientAlternativeCalendar), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientSex), "1", "2", "PatientModule");
         if (result.good()) result = ReferencedPatientPhotoSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(QualityControlSubject), "1", "3", "PatientModule");
@@ -955,12 +1105,19 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientBreedDescription), "1", "2C", "PatientModule");
         if (result.good()) result = PatientBreedCodeSequence.write(dataset, "1-n" ,"2C", "PatientModule");
         if (result.good()) result = BreedRegistrationSequence.write(dataset, "1-n" ,"2C", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedCharacters(StrainDescription), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(StrainNomenclature), "1", "3", "PatientModule");
+        if (result.good()) result = StrainCodeSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedText(StrainAdditionalInformation), "1", "3", "PatientModule");
+        if (result.good()) result = StrainStockSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmPersonName(ResponsiblePerson), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(ResponsiblePersonRole), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(ResponsibleOrganization), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientIdentityRemoved), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(DeidentificationMethod), "1-n", "1C", "PatientModule");
         if (result.good()) result = DeidentificationMethodCodeSequence.write(dataset, "1-n" ,"1C", "PatientModule");
+        if (result.good()) result = SourcePatientGroupIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        if (result.good()) result = GroupOfPatientsIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
 
         // --- ClinicalTrialSubjectModule (U) ---
         if (isClinicalTrialSubjectModulePresent(OFFalse /*complete*/))
@@ -1005,7 +1162,16 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmAgeString(PatientAge), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientSize), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientWeight), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(PatientBodyMassIndex), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredAPDimension), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredLateralDimension), "1", "3", "PatientStudyModule");
             if (result.good()) result = PatientSizeCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(MedicalAlerts), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(Allergies), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmCodeString(SmokingStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnsignedShort(PregnancyStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDate(LastMenstrualDate), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(PatientState), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmShortString(Occupation), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
@@ -1033,6 +1199,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(SeriesDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = SeriesDescriptionCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmPersonName(OperatorsName), "1-n", "2", "RTSeriesModule");
+        if (result.good()) result = OperatorIdentificationSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = ReferencedPerformedProcedureStepSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = RequestAttributesSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortString(PerformedProcedureStepID), "1", "3", "RTSeriesModule");
@@ -1062,6 +1229,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1100,6 +1268,17 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmPersonName(ReviewerName), "1", "2C", "ApprovalModule");
         }
 
+        // --- GeneralReferenceModule (U) ---
+        if (isGeneralReferenceModulePresent(OFFalse /*complete*/))
+        {
+            if (result.good()) result = ReferencedImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = ReferencedInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            addElementToDataset(result, dataset, new DcmShortText(DerivationDescription), "1", "3", "GeneralReferenceModule");
+            if (result.good()) result = DerivationCodeSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+        }
+
         // --- SOPCommonModule (M) ---
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPClassUID), "1", "1", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPInstanceUID), "1", "1", "SOPCommonModule");
@@ -1111,6 +1290,8 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(RelatedGeneralSOPClassUID), "1-n", "3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(OriginalSpecializedSOPClassUID), "1", "3", "SOPCommonModule");
         if (result.good()) result = CodingSchemeIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = ContextGroupIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = MappingResourceIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmShortString(TimezoneOffsetFromUTC), "1", "3", "SOPCommonModule");
         if (result.good()) result = ContributingEquipmentSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         // addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "3", "SOPCommonModule");
@@ -1171,7 +1352,16 @@ OFBool DRTStructureSetIOD::isPatientStudyModulePresent(const OFBool /*complete*/
            !PatientAge.isEmpty() ||
            !PatientSize.isEmpty() ||
            !PatientWeight.isEmpty() ||
+           !PatientBodyMassIndex.isEmpty() ||
+           !MeasuredAPDimension.isEmpty() ||
+           !MeasuredLateralDimension.isEmpty() ||
            !PatientSizeCodeSequence.isEmpty() ||
+           !MedicalAlerts.isEmpty() ||
+           !Allergies.isEmpty() ||
+           !SmokingStatus.isEmpty() ||
+           !PregnancyStatus.isEmpty() ||
+           !LastMenstrualDate.isEmpty() ||
+           !PatientState.isEmpty() ||
            !Occupation.isEmpty() ||
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
@@ -1231,6 +1421,18 @@ OFBool DRTStructureSetIOD::isApprovalModulePresent(const OFBool complete)
 }
 
 
+OFBool DRTStructureSetIOD::isGeneralReferenceModulePresent(const OFBool /*complete*/)
+{
+    /* check whether at least one attribute is present */
+    return !ReferencedImageSequence.isEmpty() ||
+           !ReferencedInstanceSequence.isEmpty() ||
+           !DerivationDescription.isEmpty() ||
+           !DerivationCodeSequence.isEmpty() ||
+           !SourceImageSequence.isEmpty() ||
+           !SourceInstanceSequence.isEmpty();
+}
+
+
 OFBool DRTStructureSetIOD::isCommonInstanceReferenceModulePresent(const OFBool /*complete*/)
 {
     /* check whether at least one attribute is present */
@@ -1263,6 +1465,12 @@ OFCondition DRTStructureSetIOD::getAdmittingDiagnosesDescription(OFString &value
 }
 
 
+OFCondition DRTStructureSetIOD::getAllergies(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(Allergies, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getApprovalStatus(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ApprovalStatus, value, pos);
@@ -1389,6 +1597,12 @@ OFCondition DRTStructureSetIOD::getDeidentificationMethod(OFString &value, const
 }
 
 
+OFCondition DRTStructureSetIOD::getDerivationDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DerivationDescription, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getDeviceSerialNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(DeviceSerialNumber, value, pos);
@@ -1473,6 +1687,12 @@ OFCondition DRTStructureSetIOD::getIssuerOfPatientID(OFString &value, const sign
 }
 
 
+OFCondition DRTStructureSetIOD::getLastMenstrualDate(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(LastMenstrualDate, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getLongitudinalTemporalInformationModified(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(LongitudinalTemporalInformationModified, value, pos);
@@ -1491,6 +1711,36 @@ OFCondition DRTStructureSetIOD::getManufacturerModelName(OFString &value, const
 }
 
 
+OFCondition DRTStructureSetIOD::getMeasuredAPDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredAPDimension, value, pos);
+}
+
+
+OFCondition DRTStructureSetIOD::getMeasuredAPDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredAPDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTStructureSetIOD::getMeasuredLateralDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredLateralDimension, value, pos);
+}
+
+
+OFCondition DRTStructureSetIOD::getMeasuredLateralDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredLateralDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTStructureSetIOD::getMedicalAlerts(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MedicalAlerts, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getModality(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(Modality, value, pos);
@@ -1539,18 +1789,42 @@ OFCondition DRTStructureSetIOD::getPatientAge(OFString &value, const signed long
 }
 
 
+OFCondition DRTStructureSetIOD::getPatientAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getPatientBirthDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthDate, value, pos);
 }
 
 
+OFCondition DRTStructureSetIOD::getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBirthDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getPatientBirthTime(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthTime, value, pos);
 }
 
 
+OFCondition DRTStructureSetIOD::getPatientBodyMassIndex(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBodyMassIndex, value, pos);
+}
+
+
+OFCondition DRTStructureSetIOD::getPatientBodyMassIndex(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, PatientBodyMassIndex).getFloat64(value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getPatientBreedDescription(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBreedDescription, value, pos);
@@ -1563,6 +1837,12 @@ OFCondition DRTStructureSetIOD::getPatientComments(OFString &value, const signed
 }
 
 
+OFCondition DRTStructureSetIOD::getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientDeathDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getPatientID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientID, value, pos);
@@ -1611,6 +1891,12 @@ OFCondition DRTStructureSetIOD::getPatientSpeciesDescription(OFString &value, co
 }
 
 
+OFCondition DRTStructureSetIOD::getPatientState(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientState, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getPatientWeight(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientWeight, value, pos);
@@ -1677,6 +1963,12 @@ OFCondition DRTStructureSetIOD::getPositionReferenceIndicator(OFString &value, c
 }
 
 
+OFCondition DRTStructureSetIOD::getPregnancyStatus(Uint16 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmUnsignedShort &, PregnancyStatus).getUint16(value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getQualityControlSubject(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(QualityControlSubject, value, pos);
@@ -1815,6 +2107,12 @@ OFCondition DRTStructureSetIOD::getServiceEpisodeID(OFString &value, const signe
 }
 
 
+OFCondition DRTStructureSetIOD::getSmokingStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(SmokingStatus, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getSoftwareVersions(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(SoftwareVersions, value, pos);
@@ -1845,6 +2143,24 @@ OFCondition DRTStructureSetIOD::getStationName(OFString &value, const signed lon
 }
 
 
+OFCondition DRTStructureSetIOD::getStrainAdditionalInformation(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainAdditionalInformation, value, pos);
+}
+
+
+OFCondition DRTStructureSetIOD::getStrainDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainDescription, value, pos);
+}
+
+
+OFCondition DRTStructureSetIOD::getStrainNomenclature(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainNomenclature, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getStructureSetDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StructureSetDate, value, pos);
@@ -1953,6 +2269,15 @@ OFCondition DRTStructureSetIOD::setAdmittingDiagnosesDescription(const OFString
 }
 
 
+OFCondition DRTStructureSetIOD::setAllergies(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = Allergies.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setApprovalStatus(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2142,6 +2467,15 @@ OFCondition DRTStructureSetIOD::setDeidentificationMethod(const OFString &value,
 }
 
 
+OFCondition DRTStructureSetIOD::setDerivationDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = DerivationDescription.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setDeviceSerialNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2259,6 +2593,15 @@ OFCondition DRTStructureSetIOD::setIssuerOfPatientID(const OFString &value, cons
 }
 
 
+OFCondition DRTStructureSetIOD::setLastMenstrualDate(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = LastMenstrualDate.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setLongitudinalTemporalInformationModified(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2286,6 +2629,33 @@ OFCondition DRTStructureSetIOD::setManufacturerModelName(const OFString &value,
 }
 
 
+OFCondition DRTStructureSetIOD::setMeasuredAPDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredAPDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTStructureSetIOD::setMeasuredLateralDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredLateralDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTStructureSetIOD::setMedicalAlerts(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = MedicalAlerts.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setModality(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2358,6 +2728,15 @@ OFCondition DRTStructureSetIOD::setPatientAge(const OFString &value, const OFBoo
 }
 
 
+OFCondition DRTStructureSetIOD::setPatientAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setPatientBirthDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -2367,6 +2746,15 @@ OFCondition DRTStructureSetIOD::setPatientBirthDate(const OFString &value, const
 }
 
 
+OFCondition DRTStructureSetIOD::setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBirthDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setPatientBirthTime(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
@@ -2376,6 +2764,15 @@ OFCondition DRTStructureSetIOD::setPatientBirthTime(const OFString &value, const
 }
 
 
+OFCondition DRTStructureSetIOD::setPatientBodyMassIndex(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBodyMassIndex.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setPatientBreedDescription(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2394,6 +2791,15 @@ OFCondition DRTStructureSetIOD::setPatientComments(const OFString &value, const
 }
 
 
+OFCondition DRTStructureSetIOD::setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientDeathDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2457,6 +2863,15 @@ OFCondition DRTStructureSetIOD::setPatientSpeciesDescription(const OFString &val
 }
 
 
+OFCondition DRTStructureSetIOD::setPatientState(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientState.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setPatientWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -2544,6 +2959,12 @@ OFCondition DRTStructureSetIOD::setPositionReferenceIndicator(const OFString &va
 }
 
 
+OFCondition DRTStructureSetIOD::setPregnancyStatus(const Uint16 value, const unsigned long pos)
+{
+    return PregnancyStatus.putUint16(value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::setQualityControlSubject(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2742,6 +3163,15 @@ OFCondition DRTStructureSetIOD::setServiceEpisodeID(const OFString &value, const
 }
 
 
+OFCondition DRTStructureSetIOD::setSmokingStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = SmokingStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setSoftwareVersions(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
@@ -2778,6 +3208,33 @@ OFCondition DRTStructureSetIOD::setStationName(const OFString &value, const OFBo
 }
 
 
+OFCondition DRTStructureSetIOD::setStrainAdditionalInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = StrainAdditionalInformation.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTStructureSetIOD::setStrainDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainDescription.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTStructureSetIOD::setStrainNomenclature(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainNomenclature.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setStructureSetDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drttms0.cc b/dcmrt/libsrc/drttms0.cc
index 60acc41..d6955bf 100644
--- a/dcmrt/libsrc/drttms0.cc
+++ b/dcmrt/libsrc/drttms0.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -396,7 +396,7 @@ OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::isValid() co
 }
 
 
-unsigned long DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getNumberOfItems() const
+size_t DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -426,12 +426,12 @@ OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoNex
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -446,12 +446,12 @@ OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoIte
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -466,7 +466,7 @@ OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoIte
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const unsigned long num)
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -502,7 +502,7 @@ const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTrea
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -512,7 +512,7 @@ OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem
 }
 
 
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const unsigned long num)
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -522,7 +522,7 @@ DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentM
 }
 
 
-const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const unsigned long num) const
+const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -532,13 +532,13 @@ const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTrea
 }
 
 
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const unsigned long num)
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const unsigned long num) const
+const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -561,7 +561,7 @@ OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::addItem
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -584,7 +584,7 @@ OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::insertI
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::removeItem(const unsigned long pos)
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drttms9.cc b/dcmrt/libsrc/drttms9.cc
index 8d9d2f5..0e336eb 100644
--- a/dcmrt/libsrc/drttms9.cc
+++ b/dcmrt/libsrc/drttms9.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -396,7 +396,7 @@ OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::isValid() c
 }
 
 
-unsigned long DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const
+size_t DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -426,12 +426,12 @@ OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoNe
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -446,12 +446,12 @@ OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoIt
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -466,7 +466,7 @@ OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoIt
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const unsigned long num)
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -502,7 +502,7 @@ const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTre
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const unsigned long num, Item *&item)
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -512,7 +512,7 @@ OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getIte
 }
 
 
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const unsigned long num)
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -522,7 +522,7 @@ DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatment
 }
 
 
-const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const unsigned long num) const
+const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -532,13 +532,13 @@ const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTre
 }
 
 
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const unsigned long num)
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const unsigned long num) const
+const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -561,7 +561,7 @@ OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::addIte
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -584,7 +584,7 @@ OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::insert
 }
 
 
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::removeItem(const unsigned long pos)
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drttreat.cc b/dcmrt/libsrc/drttreat.cc
index 9748d14..6684827 100644
--- a/dcmrt/libsrc/drttreat.cc
+++ b/dcmrt/libsrc/drttreat.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -23,6 +23,9 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
     PatientBirthDate(DCM_PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(DCM_PatientAlternativeCalendar),
     PatientSex(DCM_PatientSex),
     ReferencedPatientPhotoSequence(),
     QualityControlSubject(DCM_QualityControlSubject),
@@ -38,12 +41,19 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     PatientBreedDescription(DCM_PatientBreedDescription),
     PatientBreedCodeSequence(),
     BreedRegistrationSequence(),
+    StrainDescription(DCM_StrainDescription),
+    StrainNomenclature(DCM_StrainNomenclature),
+    StrainCodeSequence(),
+    StrainAdditionalInformation(DCM_StrainAdditionalInformation),
+    StrainStockSequence(),
     ResponsiblePerson(DCM_ResponsiblePerson),
     ResponsiblePersonRole(DCM_ResponsiblePersonRole),
     ResponsibleOrganization(DCM_ResponsibleOrganization),
     PatientIdentityRemoved(DCM_PatientIdentityRemoved),
     DeidentificationMethod(DCM_DeidentificationMethod),
     DeidentificationMethodCodeSequence(),
+    SourcePatientGroupIdentificationSequence(),
+    GroupOfPatientsIdentificationSequence(),
     ClinicalTrialSponsorName(DCM_ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(DCM_ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(DCM_ClinicalTrialProtocolName),
@@ -77,7 +87,16 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     PatientAge(DCM_PatientAge),
     PatientSize(DCM_PatientSize),
     PatientWeight(DCM_PatientWeight),
+    PatientBodyMassIndex(DCM_PatientBodyMassIndex),
+    MeasuredAPDimension(DCM_MeasuredAPDimension),
+    MeasuredLateralDimension(DCM_MeasuredLateralDimension),
     PatientSizeCodeSequence(),
+    MedicalAlerts(DCM_MedicalAlerts),
+    Allergies(DCM_Allergies),
+    SmokingStatus(DCM_SmokingStatus),
+    PregnancyStatus(DCM_PregnancyStatus),
+    LastMenstrualDate(DCM_LastMenstrualDate),
+    PatientState(DCM_PatientState),
     Occupation(DCM_Occupation),
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
@@ -97,6 +116,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     SeriesDescription(DCM_SeriesDescription),
     SeriesDescriptionCodeSequence(),
     OperatorsName(DCM_OperatorsName),
+    OperatorIdentificationSequence(),
     ReferencedPerformedProcedureStepSequence(),
     RequestAttributesSequence(),
     PerformedProcedureStepID(DCM_PerformedProcedureStepID),
@@ -119,6 +139,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
+    UDISequence(),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -135,6 +156,12 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     FractionGroupSummarySequence(),
     TreatmentSummaryMeasuredDoseReferenceSequence(),
     TreatmentSummaryCalculatedDoseReferenceSequence(),
+    ReferencedImageSequence(),
+    ReferencedInstanceSequence(),
+    DerivationDescription(DCM_DerivationDescription),
+    DerivationCodeSequence(),
+    SourceImageSequence(),
+    SourceInstanceSequence(),
     SOPClassUID(DCM_SOPClassUID),
     SOPInstanceUID(DCM_SOPInstanceUID),
     SpecificCharacterSet(DCM_SpecificCharacterSet),
@@ -145,6 +172,8 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     RelatedGeneralSOPClassUID(DCM_RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(DCM_OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(),
+    ContextGroupIdentificationSequence(),
+    MappingResourceIdentificationSequence(),
     TimezoneOffsetFromUTC(DCM_TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(),
     SOPInstanceStatus(DCM_SOPInstanceStatus),
@@ -175,6 +204,9 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
     PatientBirthDate(copy.PatientBirthDate),
+    PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
+    PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
+    PatientAlternativeCalendar(copy.PatientAlternativeCalendar),
     PatientSex(copy.PatientSex),
     ReferencedPatientPhotoSequence(copy.ReferencedPatientPhotoSequence),
     QualityControlSubject(copy.QualityControlSubject),
@@ -190,12 +222,19 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     PatientBreedDescription(copy.PatientBreedDescription),
     PatientBreedCodeSequence(copy.PatientBreedCodeSequence),
     BreedRegistrationSequence(copy.BreedRegistrationSequence),
+    StrainDescription(copy.StrainDescription),
+    StrainNomenclature(copy.StrainNomenclature),
+    StrainCodeSequence(copy.StrainCodeSequence),
+    StrainAdditionalInformation(copy.StrainAdditionalInformation),
+    StrainStockSequence(copy.StrainStockSequence),
     ResponsiblePerson(copy.ResponsiblePerson),
     ResponsiblePersonRole(copy.ResponsiblePersonRole),
     ResponsibleOrganization(copy.ResponsibleOrganization),
     PatientIdentityRemoved(copy.PatientIdentityRemoved),
     DeidentificationMethod(copy.DeidentificationMethod),
     DeidentificationMethodCodeSequence(copy.DeidentificationMethodCodeSequence),
+    SourcePatientGroupIdentificationSequence(copy.SourcePatientGroupIdentificationSequence),
+    GroupOfPatientsIdentificationSequence(copy.GroupOfPatientsIdentificationSequence),
     ClinicalTrialSponsorName(copy.ClinicalTrialSponsorName),
     ClinicalTrialProtocolID(copy.ClinicalTrialProtocolID),
     ClinicalTrialProtocolName(copy.ClinicalTrialProtocolName),
@@ -229,7 +268,16 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     PatientAge(copy.PatientAge),
     PatientSize(copy.PatientSize),
     PatientWeight(copy.PatientWeight),
+    PatientBodyMassIndex(copy.PatientBodyMassIndex),
+    MeasuredAPDimension(copy.MeasuredAPDimension),
+    MeasuredLateralDimension(copy.MeasuredLateralDimension),
     PatientSizeCodeSequence(copy.PatientSizeCodeSequence),
+    MedicalAlerts(copy.MedicalAlerts),
+    Allergies(copy.Allergies),
+    SmokingStatus(copy.SmokingStatus),
+    PregnancyStatus(copy.PregnancyStatus),
+    LastMenstrualDate(copy.LastMenstrualDate),
+    PatientState(copy.PatientState),
     Occupation(copy.Occupation),
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
@@ -249,6 +297,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     SeriesDescription(copy.SeriesDescription),
     SeriesDescriptionCodeSequence(copy.SeriesDescriptionCodeSequence),
     OperatorsName(copy.OperatorsName),
+    OperatorIdentificationSequence(copy.OperatorIdentificationSequence),
     ReferencedPerformedProcedureStepSequence(copy.ReferencedPerformedProcedureStepSequence),
     RequestAttributesSequence(copy.RequestAttributesSequence),
     PerformedProcedureStepID(copy.PerformedProcedureStepID),
@@ -271,6 +320,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
+    UDISequence(copy.UDISequence),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -287,6 +337,12 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     FractionGroupSummarySequence(copy.FractionGroupSummarySequence),
     TreatmentSummaryMeasuredDoseReferenceSequence(copy.TreatmentSummaryMeasuredDoseReferenceSequence),
     TreatmentSummaryCalculatedDoseReferenceSequence(copy.TreatmentSummaryCalculatedDoseReferenceSequence),
+    ReferencedImageSequence(copy.ReferencedImageSequence),
+    ReferencedInstanceSequence(copy.ReferencedInstanceSequence),
+    DerivationDescription(copy.DerivationDescription),
+    DerivationCodeSequence(copy.DerivationCodeSequence),
+    SourceImageSequence(copy.SourceImageSequence),
+    SourceInstanceSequence(copy.SourceInstanceSequence),
     SOPClassUID(copy.SOPClassUID),
     SOPInstanceUID(copy.SOPInstanceUID),
     SpecificCharacterSet(copy.SpecificCharacterSet),
@@ -297,6 +353,8 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     RelatedGeneralSOPClassUID(copy.RelatedGeneralSOPClassUID),
     OriginalSpecializedSOPClassUID(copy.OriginalSpecializedSOPClassUID),
     CodingSchemeIdentificationSequence(copy.CodingSchemeIdentificationSequence),
+    ContextGroupIdentificationSequence(copy.ContextGroupIdentificationSequence),
+    MappingResourceIdentificationSequence(copy.MappingResourceIdentificationSequence),
     TimezoneOffsetFromUTC(copy.TimezoneOffsetFromUTC),
     ContributingEquipmentSequence(copy.ContributingEquipmentSequence),
     SOPInstanceStatus(copy.SOPInstanceStatus),
@@ -333,6 +391,9 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
         PatientBirthDate = copy.PatientBirthDate;
+        PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
+        PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
+        PatientAlternativeCalendar = copy.PatientAlternativeCalendar;
         PatientSex = copy.PatientSex;
         ReferencedPatientPhotoSequence = copy.ReferencedPatientPhotoSequence;
         QualityControlSubject = copy.QualityControlSubject;
@@ -348,12 +409,19 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         PatientBreedDescription = copy.PatientBreedDescription;
         PatientBreedCodeSequence = copy.PatientBreedCodeSequence;
         BreedRegistrationSequence = copy.BreedRegistrationSequence;
+        StrainDescription = copy.StrainDescription;
+        StrainNomenclature = copy.StrainNomenclature;
+        StrainCodeSequence = copy.StrainCodeSequence;
+        StrainAdditionalInformation = copy.StrainAdditionalInformation;
+        StrainStockSequence = copy.StrainStockSequence;
         ResponsiblePerson = copy.ResponsiblePerson;
         ResponsiblePersonRole = copy.ResponsiblePersonRole;
         ResponsibleOrganization = copy.ResponsibleOrganization;
         PatientIdentityRemoved = copy.PatientIdentityRemoved;
         DeidentificationMethod = copy.DeidentificationMethod;
         DeidentificationMethodCodeSequence = copy.DeidentificationMethodCodeSequence;
+        SourcePatientGroupIdentificationSequence = copy.SourcePatientGroupIdentificationSequence;
+        GroupOfPatientsIdentificationSequence = copy.GroupOfPatientsIdentificationSequence;
         ClinicalTrialSponsorName = copy.ClinicalTrialSponsorName;
         ClinicalTrialProtocolID = copy.ClinicalTrialProtocolID;
         ClinicalTrialProtocolName = copy.ClinicalTrialProtocolName;
@@ -387,7 +455,16 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         PatientAge = copy.PatientAge;
         PatientSize = copy.PatientSize;
         PatientWeight = copy.PatientWeight;
+        PatientBodyMassIndex = copy.PatientBodyMassIndex;
+        MeasuredAPDimension = copy.MeasuredAPDimension;
+        MeasuredLateralDimension = copy.MeasuredLateralDimension;
         PatientSizeCodeSequence = copy.PatientSizeCodeSequence;
+        MedicalAlerts = copy.MedicalAlerts;
+        Allergies = copy.Allergies;
+        SmokingStatus = copy.SmokingStatus;
+        PregnancyStatus = copy.PregnancyStatus;
+        LastMenstrualDate = copy.LastMenstrualDate;
+        PatientState = copy.PatientState;
         Occupation = copy.Occupation;
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
@@ -407,6 +484,7 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         SeriesDescription = copy.SeriesDescription;
         SeriesDescriptionCodeSequence = copy.SeriesDescriptionCodeSequence;
         OperatorsName = copy.OperatorsName;
+        OperatorIdentificationSequence = copy.OperatorIdentificationSequence;
         ReferencedPerformedProcedureStepSequence = copy.ReferencedPerformedProcedureStepSequence;
         RequestAttributesSequence = copy.RequestAttributesSequence;
         PerformedProcedureStepID = copy.PerformedProcedureStepID;
@@ -429,6 +507,7 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
+        UDISequence = copy.UDISequence;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -445,6 +524,12 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         FractionGroupSummarySequence = copy.FractionGroupSummarySequence;
         TreatmentSummaryMeasuredDoseReferenceSequence = copy.TreatmentSummaryMeasuredDoseReferenceSequence;
         TreatmentSummaryCalculatedDoseReferenceSequence = copy.TreatmentSummaryCalculatedDoseReferenceSequence;
+        ReferencedImageSequence = copy.ReferencedImageSequence;
+        ReferencedInstanceSequence = copy.ReferencedInstanceSequence;
+        DerivationDescription = copy.DerivationDescription;
+        DerivationCodeSequence = copy.DerivationCodeSequence;
+        SourceImageSequence = copy.SourceImageSequence;
+        SourceInstanceSequence = copy.SourceInstanceSequence;
         SOPClassUID = copy.SOPClassUID;
         SOPInstanceUID = copy.SOPInstanceUID;
         SpecificCharacterSet = copy.SpecificCharacterSet;
@@ -455,6 +540,8 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         RelatedGeneralSOPClassUID = copy.RelatedGeneralSOPClassUID;
         OriginalSpecializedSOPClassUID = copy.OriginalSpecializedSOPClassUID;
         CodingSchemeIdentificationSequence = copy.CodingSchemeIdentificationSequence;
+        ContextGroupIdentificationSequence = copy.ContextGroupIdentificationSequence;
+        MappingResourceIdentificationSequence = copy.MappingResourceIdentificationSequence;
         TimezoneOffsetFromUTC = copy.TimezoneOffsetFromUTC;
         ContributingEquipmentSequence = copy.ContributingEquipmentSequence;
         SOPInstanceStatus = copy.SOPInstanceStatus;
@@ -486,6 +573,9 @@ void DRTTreatmentSummaryRecordIOD::clear()
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
     PatientBirthDate.clear();
+    PatientBirthDateInAlternativeCalendar.clear();
+    PatientDeathDateInAlternativeCalendar.clear();
+    PatientAlternativeCalendar.clear();
     PatientSex.clear();
     ReferencedPatientPhotoSequence.clear();
     QualityControlSubject.clear();
@@ -501,12 +591,19 @@ void DRTTreatmentSummaryRecordIOD::clear()
     PatientBreedDescription.clear();
     PatientBreedCodeSequence.clear();
     BreedRegistrationSequence.clear();
+    StrainDescription.clear();
+    StrainNomenclature.clear();
+    StrainCodeSequence.clear();
+    StrainAdditionalInformation.clear();
+    StrainStockSequence.clear();
     ResponsiblePerson.clear();
     ResponsiblePersonRole.clear();
     ResponsibleOrganization.clear();
     PatientIdentityRemoved.clear();
     DeidentificationMethod.clear();
     DeidentificationMethodCodeSequence.clear();
+    SourcePatientGroupIdentificationSequence.clear();
+    GroupOfPatientsIdentificationSequence.clear();
     ClinicalTrialSponsorName.clear();
     ClinicalTrialProtocolID.clear();
     ClinicalTrialProtocolName.clear();
@@ -540,7 +637,16 @@ void DRTTreatmentSummaryRecordIOD::clear()
     PatientAge.clear();
     PatientSize.clear();
     PatientWeight.clear();
+    PatientBodyMassIndex.clear();
+    MeasuredAPDimension.clear();
+    MeasuredLateralDimension.clear();
     PatientSizeCodeSequence.clear();
+    MedicalAlerts.clear();
+    Allergies.clear();
+    SmokingStatus.clear();
+    PregnancyStatus.clear();
+    LastMenstrualDate.clear();
+    PatientState.clear();
     Occupation.clear();
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
@@ -560,6 +666,7 @@ void DRTTreatmentSummaryRecordIOD::clear()
     SeriesDescription.clear();
     SeriesDescriptionCodeSequence.clear();
     OperatorsName.clear();
+    OperatorIdentificationSequence.clear();
     ReferencedPerformedProcedureStepSequence.clear();
     RequestAttributesSequence.clear();
     PerformedProcedureStepID.clear();
@@ -582,6 +689,7 @@ void DRTTreatmentSummaryRecordIOD::clear()
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
+    UDISequence.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -598,6 +706,12 @@ void DRTTreatmentSummaryRecordIOD::clear()
     FractionGroupSummarySequence.clear();
     TreatmentSummaryMeasuredDoseReferenceSequence.clear();
     TreatmentSummaryCalculatedDoseReferenceSequence.clear();
+    ReferencedImageSequence.clear();
+    ReferencedInstanceSequence.clear();
+    DerivationDescription.clear();
+    DerivationCodeSequence.clear();
+    SourceImageSequence.clear();
+    SourceInstanceSequence.clear();
     SOPClassUID.clear();
     SOPInstanceUID.clear();
     SpecificCharacterSet.clear();
@@ -608,6 +722,8 @@ void DRTTreatmentSummaryRecordIOD::clear()
     RelatedGeneralSOPClassUID.clear();
     OriginalSpecializedSOPClassUID.clear();
     CodingSchemeIdentificationSequence.clear();
+    ContextGroupIdentificationSequence.clear();
+    MappingResourceIdentificationSequence.clear();
     TimezoneOffsetFromUTC.clear();
     ContributingEquipmentSequence.clear();
     SOPInstanceStatus.clear();
@@ -683,6 +799,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
+        UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -704,6 +821,14 @@ OFCondition DRTTreatmentSummaryRecordIOD::read(DcmItem &dataset)
         TreatmentSummaryMeasuredDoseReferenceSequence.read(dataset, "1-n", "3", "RTTreatmentSummaryRecordModule");
         TreatmentSummaryCalculatedDoseReferenceSequence.read(dataset, "1-n", "3", "RTTreatmentSummaryRecordModule");
 
+        // --- GeneralReferenceModule (U) ---
+        ReferencedImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        ReferencedInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        getAndCheckElementFromDataset(dataset, DerivationDescription, "1", "3", "GeneralReferenceModule");
+        DerivationCodeSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+        SourceInstanceSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
+
         // --- SOPCommonModule (M) ---
         getAndCheckElementFromDataset(dataset, SOPClassUID, "1", "1", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, SOPInstanceUID, "1", "1", "SOPCommonModule");
@@ -715,6 +840,8 @@ OFCondition DRTTreatmentSummaryRecordIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, RelatedGeneralSOPClassUID, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, OriginalSpecializedSOPClassUID, "1", "3", "SOPCommonModule");
         CodingSchemeIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        ContextGroupIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        MappingResourceIdentificationSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, TimezoneOffsetFromUTC, "1", "3", "SOPCommonModule");
         ContributingEquipmentSequence.read(dataset, "1-n", "3", "SOPCommonModule");
         // getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "3", "SOPCommonModule");
@@ -751,6 +878,9 @@ OFCondition DRTTreatmentSummaryRecordIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, PatientAlternativeCalendar, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientSex, "1", "2", "PatientModule");
     ReferencedPatientPhotoSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, QualityControlSubject, "1", "3", "PatientModule");
@@ -766,12 +896,19 @@ OFCondition DRTTreatmentSummaryRecordIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientBreedDescription, "1", "2C", "PatientModule");
     PatientBreedCodeSequence.read(dataset, "1-n", "2C", "PatientModule");
     BreedRegistrationSequence.read(dataset, "1-n", "2C", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainDescription, "1", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainNomenclature, "1", "3", "PatientModule");
+    StrainCodeSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, StrainAdditionalInformation, "1", "3", "PatientModule");
+    StrainStockSequence.read(dataset, "1-n", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePerson, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsiblePersonRole, "1", "1C", "PatientModule");
     getAndCheckElementFromDataset(dataset, ResponsibleOrganization, "1", "2C", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientIdentityRemoved, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, DeidentificationMethod, "1-n", "1C", "PatientModule");
     DeidentificationMethodCodeSequence.read(dataset, "1-n", "1C", "PatientModule");
+    SourcePatientGroupIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
+    GroupOfPatientsIdentificationSequence.read(dataset, "1-n", "3", "PatientModule");
 
     // --- ClinicalTrialSubjectModule (U) ---
     if (dataset.tagExists(DCM_ClinicalTrialSponsorName) ||
@@ -827,7 +964,16 @@ OFCondition DRTTreatmentSummaryRecordIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PatientAge, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientSize, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, PatientWeight, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientBodyMassIndex, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredAPDimension, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MeasuredLateralDimension, "1", "3", "PatientStudyModule");
         PatientSizeCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, MedicalAlerts, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, Allergies, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, SmokingStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PregnancyStatus, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, LastMenstrualDate, "1", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, PatientState, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, Occupation, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
@@ -864,6 +1010,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, SeriesDescription, "1", "3", "RTSeriesModule");
         SeriesDescriptionCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, OperatorsName, "1-n", "2", "RTSeriesModule");
+        OperatorIdentificationSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         ReferencedPerformedProcedureStepSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         RequestAttributesSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepID, "1", "3", "RTSeriesModule");
@@ -902,6 +1049,9 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(PatientAlternativeCalendar), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientSex), "1", "2", "PatientModule");
         if (result.good()) result = ReferencedPatientPhotoSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(QualityControlSubject), "1", "3", "PatientModule");
@@ -917,12 +1067,19 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientBreedDescription), "1", "2C", "PatientModule");
         if (result.good()) result = PatientBreedCodeSequence.write(dataset, "1-n" ,"2C", "PatientModule");
         if (result.good()) result = BreedRegistrationSequence.write(dataset, "1-n" ,"2C", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedCharacters(StrainDescription), "1", "3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmLongString(StrainNomenclature), "1", "3", "PatientModule");
+        if (result.good()) result = StrainCodeSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmUnlimitedText(StrainAdditionalInformation), "1", "3", "PatientModule");
+        if (result.good()) result = StrainStockSequence.write(dataset, "1-n" ,"3", "PatientModule");
         addElementToDataset(result, dataset, new DcmPersonName(ResponsiblePerson), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(ResponsiblePersonRole), "1", "1C", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(ResponsibleOrganization), "1", "2C", "PatientModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientIdentityRemoved), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(DeidentificationMethod), "1-n", "1C", "PatientModule");
         if (result.good()) result = DeidentificationMethodCodeSequence.write(dataset, "1-n" ,"1C", "PatientModule");
+        if (result.good()) result = SourcePatientGroupIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        if (result.good()) result = GroupOfPatientsIdentificationSequence.write(dataset, "1-n" ,"3", "PatientModule");
 
         // --- ClinicalTrialSubjectModule (U) ---
         if (isClinicalTrialSubjectModulePresent(OFFalse /*complete*/))
@@ -967,7 +1124,16 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmAgeString(PatientAge), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientSize), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmDecimalString(PatientWeight), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(PatientBodyMassIndex), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredAPDimension), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(MeasuredLateralDimension), "1", "3", "PatientStudyModule");
             if (result.good()) result = PatientSizeCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(MedicalAlerts), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(Allergies), "1-n", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmCodeString(SmokingStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnsignedShort(PregnancyStatus), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmDate(LastMenstrualDate), "1", "3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmLongString(PatientState), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmShortString(Occupation), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
@@ -995,6 +1161,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(SeriesDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = SeriesDescriptionCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmPersonName(OperatorsName), "1-n", "2", "RTSeriesModule");
+        if (result.good()) result = OperatorIdentificationSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = ReferencedPerformedProcedureStepSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         if (result.good()) result = RequestAttributesSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortString(PerformedProcedureStepID), "1", "3", "RTSeriesModule");
@@ -1024,6 +1191,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1045,6 +1213,17 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         if (result.good()) result = TreatmentSummaryMeasuredDoseReferenceSequence.write(dataset, "1-n" ,"3", "RTTreatmentSummaryRecordModule");
         if (result.good()) result = TreatmentSummaryCalculatedDoseReferenceSequence.write(dataset, "1-n" ,"3", "RTTreatmentSummaryRecordModule");
 
+        // --- GeneralReferenceModule (U) ---
+        if (isGeneralReferenceModulePresent(OFFalse /*complete*/))
+        {
+            if (result.good()) result = ReferencedImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = ReferencedInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            addElementToDataset(result, dataset, new DcmShortText(DerivationDescription), "1", "3", "GeneralReferenceModule");
+            if (result.good()) result = DerivationCodeSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceImageSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+            if (result.good()) result = SourceInstanceSequence.write(dataset, "1-n" ,"3", "GeneralReferenceModule");
+        }
+
         // --- SOPCommonModule (M) ---
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPClassUID), "1", "1", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPInstanceUID), "1", "1", "SOPCommonModule");
@@ -1056,6 +1235,8 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(RelatedGeneralSOPClassUID), "1-n", "3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(OriginalSpecializedSOPClassUID), "1", "3", "SOPCommonModule");
         if (result.good()) result = CodingSchemeIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = ContextGroupIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        if (result.good()) result = MappingResourceIdentificationSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmShortString(TimezoneOffsetFromUTC), "1", "3", "SOPCommonModule");
         if (result.good()) result = ContributingEquipmentSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
         // addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "3", "SOPCommonModule");
@@ -1116,7 +1297,16 @@ OFBool DRTTreatmentSummaryRecordIOD::isPatientStudyModulePresent(const OFBool /*
            !PatientAge.isEmpty() ||
            !PatientSize.isEmpty() ||
            !PatientWeight.isEmpty() ||
+           !PatientBodyMassIndex.isEmpty() ||
+           !MeasuredAPDimension.isEmpty() ||
+           !MeasuredLateralDimension.isEmpty() ||
            !PatientSizeCodeSequence.isEmpty() ||
+           !MedicalAlerts.isEmpty() ||
+           !Allergies.isEmpty() ||
+           !SmokingStatus.isEmpty() ||
+           !PregnancyStatus.isEmpty() ||
+           !LastMenstrualDate.isEmpty() ||
+           !PatientState.isEmpty() ||
            !Occupation.isEmpty() ||
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
@@ -1146,6 +1336,18 @@ OFBool DRTTreatmentSummaryRecordIOD::isClinicalTrialSeriesModulePresent(const OF
 }
 
 
+OFBool DRTTreatmentSummaryRecordIOD::isGeneralReferenceModulePresent(const OFBool /*complete*/)
+{
+    /* check whether at least one attribute is present */
+    return !ReferencedImageSequence.isEmpty() ||
+           !ReferencedInstanceSequence.isEmpty() ||
+           !DerivationDescription.isEmpty() ||
+           !DerivationCodeSequence.isEmpty() ||
+           !SourceImageSequence.isEmpty() ||
+           !SourceInstanceSequence.isEmpty();
+}
+
+
 OFBool DRTTreatmentSummaryRecordIOD::isCommonInstanceReferenceModulePresent(const OFBool /*complete*/)
 {
     /* check whether at least one attribute is present */
@@ -1178,6 +1380,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getAdmittingDiagnosesDescription(OFStr
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getAllergies(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(Allergies, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(AuthorizationEquipmentCertificationNumber, value, pos);
@@ -1304,6 +1512,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getDeidentificationMethod(OFString &va
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getDerivationDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DerivationDescription, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getDeviceSerialNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(DeviceSerialNumber, value, pos);
@@ -1388,6 +1602,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getIssuerOfPatientID(OFString &value,
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getLastMenstrualDate(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(LastMenstrualDate, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getLongitudinalTemporalInformationModified(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(LongitudinalTemporalInformationModified, value, pos);
@@ -1406,6 +1626,36 @@ OFCondition DRTTreatmentSummaryRecordIOD::getManufacturerModelName(OFString &val
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getMeasuredAPDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredAPDimension, value, pos);
+}
+
+
+OFCondition DRTTreatmentSummaryRecordIOD::getMeasuredAPDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredAPDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTTreatmentSummaryRecordIOD::getMeasuredLateralDimension(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MeasuredLateralDimension, value, pos);
+}
+
+
+OFCondition DRTTreatmentSummaryRecordIOD::getMeasuredLateralDimension(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, MeasuredLateralDimension).getFloat64(value, pos);
+}
+
+
+OFCondition DRTTreatmentSummaryRecordIOD::getMedicalAlerts(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(MedicalAlerts, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getModality(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(Modality, value, pos);
@@ -1460,18 +1710,42 @@ OFCondition DRTTreatmentSummaryRecordIOD::getPatientAge(OFString &value, const s
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getPatientAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getPatientBirthDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthDate, value, pos);
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getPatientBirthDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBirthDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getPatientBirthTime(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBirthTime, value, pos);
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getPatientBodyMassIndex(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientBodyMassIndex, value, pos);
+}
+
+
+OFCondition DRTTreatmentSummaryRecordIOD::getPatientBodyMassIndex(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, PatientBodyMassIndex).getFloat64(value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getPatientBreedDescription(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientBreedDescription, value, pos);
@@ -1484,6 +1758,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getPatientComments(OFString &value, co
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getPatientDeathDateInAlternativeCalendar(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientDeathDateInAlternativeCalendar, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getPatientID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientID, value, pos);
@@ -1532,6 +1812,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getPatientSpeciesDescription(OFString
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getPatientState(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PatientState, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getPatientWeight(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientWeight, value, pos);
@@ -1592,6 +1878,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getPixelPaddingValue(Uint16 &value, co
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getPregnancyStatus(Uint16 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmUnsignedShort &, PregnancyStatus).getUint16(value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getQualityControlSubject(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(QualityControlSubject, value, pos);
@@ -1712,6 +2004,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getServiceEpisodeID(OFString &value, c
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getSmokingStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(SmokingStatus, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getSoftwareVersions(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(SoftwareVersions, value, pos);
@@ -1742,6 +2040,24 @@ OFCondition DRTTreatmentSummaryRecordIOD::getStationName(OFString &value, const
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getStrainAdditionalInformation(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainAdditionalInformation, value, pos);
+}
+
+
+OFCondition DRTTreatmentSummaryRecordIOD::getStrainDescription(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainDescription, value, pos);
+}
+
+
+OFCondition DRTTreatmentSummaryRecordIOD::getStrainNomenclature(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StrainNomenclature, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getStudyDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StudyDate, value, pos);
@@ -1838,6 +2154,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setAdmittingDiagnosesDescription(const
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setAllergies(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = Allergies.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2027,6 +2352,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setDeidentificationMethod(const OFStri
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setDerivationDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = DerivationDescription.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setDeviceSerialNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2144,6 +2478,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setIssuerOfPatientID(const OFString &v
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setLastMenstrualDate(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = LastMenstrualDate.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setLongitudinalTemporalInformationModified(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2171,6 +2514,33 @@ OFCondition DRTTreatmentSummaryRecordIOD::setManufacturerModelName(const OFStrin
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setMeasuredAPDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredAPDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTTreatmentSummaryRecordIOD::setMeasuredLateralDimension(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = MeasuredLateralDimension.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTTreatmentSummaryRecordIOD::setMedicalAlerts(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = MedicalAlerts.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setModality(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2252,6 +2622,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setPatientAge(const OFString &value, c
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setPatientAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setPatientBirthDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -2261,6 +2640,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setPatientBirthDate(const OFString &va
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setPatientBirthDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBirthDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setPatientBirthTime(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
@@ -2270,6 +2658,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setPatientBirthTime(const OFString &va
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setPatientBodyMassIndex(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientBodyMassIndex.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setPatientBreedDescription(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2288,6 +2685,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setPatientComments(const OFString &val
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setPatientDeathDateInAlternativeCalendar(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientDeathDateInAlternativeCalendar.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2351,6 +2757,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setPatientSpeciesDescription(const OFS
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setPatientState(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PatientState.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setPatientWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -2429,6 +2844,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::setPixelPaddingValue(const Uint16 valu
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setPregnancyStatus(const Uint16 value, const unsigned long pos)
+{
+    return PregnancyStatus.putUint16(value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setQualityControlSubject(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2600,6 +3021,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setServiceEpisodeID(const OFString &va
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setSmokingStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = SmokingStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setSoftwareVersions(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
@@ -2636,6 +3066,33 @@ OFCondition DRTTreatmentSummaryRecordIOD::setStationName(const OFString &value,
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setStrainAdditionalInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = StrainAdditionalInformation.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTTreatmentSummaryRecordIOD::setStrainDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainDescription.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTTreatmentSummaryRecordIOD::setStrainNomenclature(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StrainNomenclature.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setStudyDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drttscds.cc b/dcmrt/libsrc/drttscds.cc
index e9b64a1..2c6067f 100644
--- a/dcmrt/libsrc/drttscds.cc
+++ b/dcmrt/libsrc/drttscds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -298,7 +298,7 @@ OFBool DRTTreatmentSummaryCalculatedDoseReferenceSequence::isValid() const
 }
 
 
-unsigned long DRTTreatmentSummaryCalculatedDoseReferenceSequence::getNumberOfItems() const
+size_t DRTTreatmentSummaryCalculatedDoseReferenceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -328,12 +328,12 @@ OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -348,12 +348,12 @@ OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoItem(const u
 }
 
 
-OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -368,7 +368,7 @@ OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoItem(const u
 }
 
 
-OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoItem(const unsigned long num)
+OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -404,7 +404,7 @@ const DRTTreatmentSummaryCalculatedDoseReferenceSequence::Item &DRTTreatmentSumm
 }
 
 
-OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -414,7 +414,7 @@ OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::getItem(const un
 }
 
 
-DRTTreatmentSummaryCalculatedDoseReferenceSequence::Item &DRTTreatmentSummaryCalculatedDoseReferenceSequence::getItem(const unsigned long num)
+DRTTreatmentSummaryCalculatedDoseReferenceSequence::Item &DRTTreatmentSummaryCalculatedDoseReferenceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -424,7 +424,7 @@ DRTTreatmentSummaryCalculatedDoseReferenceSequence::Item &DRTTreatmentSummaryCal
 }
 
 
-const DRTTreatmentSummaryCalculatedDoseReferenceSequence::Item &DRTTreatmentSummaryCalculatedDoseReferenceSequence::getItem(const unsigned long num) const
+const DRTTreatmentSummaryCalculatedDoseReferenceSequence::Item &DRTTreatmentSummaryCalculatedDoseReferenceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -434,13 +434,13 @@ const DRTTreatmentSummaryCalculatedDoseReferenceSequence::Item &DRTTreatmentSumm
 }
 
 
-DRTTreatmentSummaryCalculatedDoseReferenceSequence::Item &DRTTreatmentSummaryCalculatedDoseReferenceSequence::operator[](const unsigned long num)
+DRTTreatmentSummaryCalculatedDoseReferenceSequence::Item &DRTTreatmentSummaryCalculatedDoseReferenceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTTreatmentSummaryCalculatedDoseReferenceSequence::Item &DRTTreatmentSummaryCalculatedDoseReferenceSequence::operator[](const unsigned long num) const
+const DRTTreatmentSummaryCalculatedDoseReferenceSequence::Item &DRTTreatmentSummaryCalculatedDoseReferenceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -463,7 +463,7 @@ OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::addItem(Item *&i
 }
 
 
-OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -486,7 +486,7 @@ OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::insertItem(const
 }
 
 
-OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::removeItem(const unsigned long pos)
+OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drttsibs.cc b/dcmrt/libsrc/drttsibs.cc
index a69c892..b5a8948 100644
--- a/dcmrt/libsrc/drttsibs.cc
+++ b/dcmrt/libsrc/drttsibs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSessionIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -27,13 +27,16 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const OFBool emptyDefaultItem)
     BeamName(DCM_BeamName),
     BeamType(DCM_BeamType),
     CurrentFractionNumber(DCM_CurrentFractionNumber),
+    DeliveredDepthDoseParametersSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     DeliveredPrimaryMeterset(DCM_DeliveredPrimaryMeterset),
     DeliveredSecondaryMeterset(DCM_DeliveredSecondaryMeterset),
     DeliveredTreatmentTime(DCM_DeliveredTreatmentTime),
+    FixationEye(DCM_FixationEye),
     FixationLightAzimuthalAngle(DCM_FixationLightAzimuthalAngle),
     FixationLightPolarAngle(DCM_FixationLightPolarAngle),
     GeneralAccessorySequence(emptyDefaultItem /*emptyDefaultSequence*/),
     IonControlPointDeliverySequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ModulatedScanModeType(DCM_ModulatedScanModeType),
     NumberOfBlocks(DCM_NumberOfBlocks),
     NumberOfBoli(DCM_NumberOfBoli),
     NumberOfCompensators(DCM_NumberOfCompensators),
@@ -83,13 +86,16 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const Item &copy)
     BeamName(copy.BeamName),
     BeamType(copy.BeamType),
     CurrentFractionNumber(copy.CurrentFractionNumber),
+    DeliveredDepthDoseParametersSequence(copy.DeliveredDepthDoseParametersSequence),
     DeliveredPrimaryMeterset(copy.DeliveredPrimaryMeterset),
     DeliveredSecondaryMeterset(copy.DeliveredSecondaryMeterset),
     DeliveredTreatmentTime(copy.DeliveredTreatmentTime),
+    FixationEye(copy.FixationEye),
     FixationLightAzimuthalAngle(copy.FixationLightAzimuthalAngle),
     FixationLightPolarAngle(copy.FixationLightPolarAngle),
     GeneralAccessorySequence(copy.GeneralAccessorySequence),
     IonControlPointDeliverySequence(copy.IonControlPointDeliverySequence),
+    ModulatedScanModeType(copy.ModulatedScanModeType),
     NumberOfBlocks(copy.NumberOfBlocks),
     NumberOfBoli(copy.NumberOfBoli),
     NumberOfCompensators(copy.NumberOfCompensators),
@@ -147,13 +153,16 @@ DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::It
         BeamName = copy.BeamName;
         BeamType = copy.BeamType;
         CurrentFractionNumber = copy.CurrentFractionNumber;
+        DeliveredDepthDoseParametersSequence = copy.DeliveredDepthDoseParametersSequence;
         DeliveredPrimaryMeterset = copy.DeliveredPrimaryMeterset;
         DeliveredSecondaryMeterset = copy.DeliveredSecondaryMeterset;
         DeliveredTreatmentTime = copy.DeliveredTreatmentTime;
+        FixationEye = copy.FixationEye;
         FixationLightAzimuthalAngle = copy.FixationLightAzimuthalAngle;
         FixationLightPolarAngle = copy.FixationLightPolarAngle;
         GeneralAccessorySequence = copy.GeneralAccessorySequence;
         IonControlPointDeliverySequence = copy.IonControlPointDeliverySequence;
+        ModulatedScanModeType = copy.ModulatedScanModeType;
         NumberOfBlocks = copy.NumberOfBlocks;
         NumberOfBoli = copy.NumberOfBoli;
         NumberOfCompensators = copy.NumberOfCompensators;
@@ -210,6 +219,7 @@ void DRTTreatmentSessionIonBeamSequence::Item::clear()
         RadiationAtomicNumber.clear();
         RadiationChargeState.clear();
         ScanMode.clear();
+        ModulatedScanModeType.clear();
         ReferencedToleranceTableNumber.clear();
         BeamLimitingDeviceLeafPairsSequence.clear();
         ReferencedPatientSetupNumber.clear();
@@ -238,6 +248,7 @@ void DRTTreatmentSessionIonBeamSequence::Item::clear()
         PatientSupportAccessoryCode.clear();
         FixationLightAzimuthalAngle.clear();
         FixationLightPolarAngle.clear();
+        FixationEye.clear();
         CurrentFractionNumber.clear();
         TreatmentDeliveryType.clear();
         TreatmentTerminationStatus.clear();
@@ -249,6 +260,7 @@ void DRTTreatmentSessionIonBeamSequence::Item::clear()
         DeliveredSecondaryMeterset.clear();
         SpecifiedTreatmentTime.clear();
         DeliveredTreatmentTime.clear();
+        DeliveredDepthDoseParametersSequence.clear();
         NumberOfControlPoints.clear();
         IonControlPointDeliverySequence.clear();
     }
@@ -266,6 +278,7 @@ OFBool DRTTreatmentSessionIonBeamSequence::Item::isEmpty()
            RadiationAtomicNumber.isEmpty() &&
            RadiationChargeState.isEmpty() &&
            ScanMode.isEmpty() &&
+           ModulatedScanModeType.isEmpty() &&
            ReferencedToleranceTableNumber.isEmpty() &&
            BeamLimitingDeviceLeafPairsSequence.isEmpty() &&
            ReferencedPatientSetupNumber.isEmpty() &&
@@ -294,6 +307,7 @@ OFBool DRTTreatmentSessionIonBeamSequence::Item::isEmpty()
            PatientSupportAccessoryCode.isEmpty() &&
            FixationLightAzimuthalAngle.isEmpty() &&
            FixationLightPolarAngle.isEmpty() &&
+           FixationEye.isEmpty() &&
            CurrentFractionNumber.isEmpty() &&
            TreatmentDeliveryType.isEmpty() &&
            TreatmentTerminationStatus.isEmpty() &&
@@ -305,6 +319,7 @@ OFBool DRTTreatmentSessionIonBeamSequence::Item::isEmpty()
            DeliveredSecondaryMeterset.isEmpty() &&
            SpecifiedTreatmentTime.isEmpty() &&
            DeliveredTreatmentTime.isEmpty() &&
+           DeliveredDepthDoseParametersSequence.isEmpty() &&
            NumberOfControlPoints.isEmpty() &&
            IonControlPointDeliverySequence.isEmpty();
 }
@@ -332,6 +347,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, RadiationAtomicNumber, "1", "1C", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, RadiationChargeState, "1", "1C", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, ScanMode, "1", "1", "TreatmentSessionIonBeamSequence");
+        getAndCheckElementFromDataset(item, ModulatedScanModeType, "1", "1C", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, ReferencedToleranceTableNumber, "1", "3", "TreatmentSessionIonBeamSequence");
         BeamLimitingDeviceLeafPairsSequence.read(item, "1-n", "3", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, ReferencedPatientSetupNumber, "1", "3", "TreatmentSessionIonBeamSequence");
@@ -360,6 +376,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, PatientSupportAccessoryCode, "1", "3", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, FixationLightAzimuthalAngle, "1", "3", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, FixationLightPolarAngle, "1", "3", "TreatmentSessionIonBeamSequence");
+        getAndCheckElementFromDataset(item, FixationEye, "1", "3", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, CurrentFractionNumber, "1", "2", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, TreatmentDeliveryType, "1", "2", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, TreatmentTerminationStatus, "1", "1", "TreatmentSessionIonBeamSequence");
@@ -371,6 +388,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, DeliveredSecondaryMeterset, "1", "3", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, SpecifiedTreatmentTime, "1", "3", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, DeliveredTreatmentTime, "1", "3", "TreatmentSessionIonBeamSequence");
+        DeliveredDepthDoseParametersSequence.read(item, "1-n", "3", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, NumberOfControlPoints, "1", "1", "TreatmentSessionIonBeamSequence");
         IonControlPointDeliverySequence.read(item, "1-n", "1", "TreatmentSessionIonBeamSequence");
         result = EC_Normal;
@@ -394,6 +412,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmIntegerString(RadiationAtomicNumber), "1", "1C", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmSignedShort(RadiationChargeState), "1", "1C", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(ScanMode), "1", "1", "TreatmentSessionIonBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(ModulatedScanModeType), "1", "1C", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmIntegerString(ReferencedToleranceTableNumber), "1", "3", "TreatmentSessionIonBeamSequence");
         if (result.good()) result = BeamLimitingDeviceLeafPairsSequence.write(item, "1-n", "3", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmIntegerString(ReferencedPatientSetupNumber), "1", "3", "TreatmentSessionIonBeamSequence");
@@ -422,6 +441,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmLongString(PatientSupportAccessoryCode), "1", "3", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(FixationLightAzimuthalAngle), "1", "3", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(FixationLightPolarAngle), "1", "3", "TreatmentSessionIonBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(FixationEye), "1", "3", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmIntegerString(CurrentFractionNumber), "1", "2", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(TreatmentDeliveryType), "1", "2", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(TreatmentTerminationStatus), "1", "1", "TreatmentSessionIonBeamSequence");
@@ -433,6 +453,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmDecimalString(DeliveredSecondaryMeterset), "1", "3", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(SpecifiedTreatmentTime), "1", "3", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(DeliveredTreatmentTime), "1", "3", "TreatmentSessionIonBeamSequence");
+        if (result.good()) result = DeliveredDepthDoseParametersSequence.write(item, "1-n", "3", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmIntegerString(NumberOfControlPoints), "1", "1", "TreatmentSessionIonBeamSequence");
         if (result.good()) result = IonControlPointDeliverySequence.write(item, "1-n", "1", "TreatmentSessionIonBeamSequence");
     }
@@ -539,6 +560,15 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::getDeliveredTreatmentTime(
 }
 
 
+OFCondition DRTTreatmentSessionIonBeamSequence::Item::getFixationEye(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(FixationEye, value, pos);
+}
+
+
 OFCondition DRTTreatmentSessionIonBeamSequence::Item::getFixationLightAzimuthalAngle(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
@@ -557,6 +587,15 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::getFixationLightPolarAngle
 }
 
 
+OFCondition DRTTreatmentSessionIonBeamSequence::Item::getModulatedScanModeType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ModulatedScanModeType, value, pos);
+}
+
+
 OFCondition DRTTreatmentSessionIonBeamSequence::Item::getNumberOfBlocks(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -1026,6 +1065,19 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::setDeliveredTreatmentTime(
 }
 
 
+OFCondition DRTTreatmentSessionIonBeamSequence::Item::setFixationEye(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = FixationEye.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTTreatmentSessionIonBeamSequence::Item::setFixationLightAzimuthalAngle(const Float32 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
@@ -1044,6 +1096,19 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::setFixationLightPolarAngle
 }
 
 
+OFCondition DRTTreatmentSessionIonBeamSequence::Item::setModulatedScanModeType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ModulatedScanModeType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTTreatmentSessionIonBeamSequence::Item::setNumberOfBlocks(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -1481,7 +1546,7 @@ OFBool DRTTreatmentSessionIonBeamSequence::isValid() const
 }
 
 
-unsigned long DRTTreatmentSessionIonBeamSequence::getNumberOfItems() const
+size_t DRTTreatmentSessionIonBeamSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -1511,12 +1576,12 @@ OFCondition DRTTreatmentSessionIonBeamSequence::gotoNextItem()
 }
 
 
-OFCondition DRTTreatmentSessionIonBeamSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTTreatmentSessionIonBeamSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1531,12 +1596,12 @@ OFCondition DRTTreatmentSessionIonBeamSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTTreatmentSessionIonBeamSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTTreatmentSessionIonBeamSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -1551,7 +1616,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::gotoItem(const unsigned long num
 }
 
 
-OFCondition DRTTreatmentSessionIonBeamSequence::gotoItem(const unsigned long num)
+OFCondition DRTTreatmentSessionIonBeamSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -1587,7 +1652,7 @@ const DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequen
 }
 
 
-OFCondition DRTTreatmentSessionIonBeamSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTTreatmentSessionIonBeamSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -1597,7 +1662,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::getItem(const unsigned long num,
 }
 
 
-DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::getItem(const unsigned long num)
+DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1607,7 +1672,7 @@ DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::ge
 }
 
 
-const DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::getItem(const unsigned long num) const
+const DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -1617,13 +1682,13 @@ const DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequen
 }
 
 
-DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::operator[](const unsigned long num)
+DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::operator[](const unsigned long num) const
+const DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -1646,7 +1711,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTTreatmentSessionIonBeamSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTTreatmentSessionIonBeamSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -1669,7 +1734,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::insertItem(const unsigned long p
 }
 
 
-OFCondition DRTTreatmentSessionIonBeamSequence::removeItem(const unsigned long pos)
+OFCondition DRTTreatmentSessionIonBeamSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drttsmds.cc b/dcmrt/libsrc/drttsmds.cc
index c70d66c..9803b93 100644
--- a/dcmrt/libsrc/drttsmds.cc
+++ b/dcmrt/libsrc/drttsmds.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -298,7 +298,7 @@ OFBool DRTTreatmentSummaryMeasuredDoseReferenceSequence::isValid() const
 }
 
 
-unsigned long DRTTreatmentSummaryMeasuredDoseReferenceSequence::getNumberOfItems() const
+size_t DRTTreatmentSummaryMeasuredDoseReferenceSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -328,12 +328,12 @@ OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -348,12 +348,12 @@ OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoItem(const uns
 }
 
 
-OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -368,7 +368,7 @@ OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoItem(const uns
 }
 
 
-OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoItem(const unsigned long num)
+OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -404,7 +404,7 @@ const DRTTreatmentSummaryMeasuredDoseReferenceSequence::Item &DRTTreatmentSummar
 }
 
 
-OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -414,7 +414,7 @@ OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::getItem(const unsi
 }
 
 
-DRTTreatmentSummaryMeasuredDoseReferenceSequence::Item &DRTTreatmentSummaryMeasuredDoseReferenceSequence::getItem(const unsigned long num)
+DRTTreatmentSummaryMeasuredDoseReferenceSequence::Item &DRTTreatmentSummaryMeasuredDoseReferenceSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -424,7 +424,7 @@ DRTTreatmentSummaryMeasuredDoseReferenceSequence::Item &DRTTreatmentSummaryMeasu
 }
 
 
-const DRTTreatmentSummaryMeasuredDoseReferenceSequence::Item &DRTTreatmentSummaryMeasuredDoseReferenceSequence::getItem(const unsigned long num) const
+const DRTTreatmentSummaryMeasuredDoseReferenceSequence::Item &DRTTreatmentSummaryMeasuredDoseReferenceSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -434,13 +434,13 @@ const DRTTreatmentSummaryMeasuredDoseReferenceSequence::Item &DRTTreatmentSummar
 }
 
 
-DRTTreatmentSummaryMeasuredDoseReferenceSequence::Item &DRTTreatmentSummaryMeasuredDoseReferenceSequence::operator[](const unsigned long num)
+DRTTreatmentSummaryMeasuredDoseReferenceSequence::Item &DRTTreatmentSummaryMeasuredDoseReferenceSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTTreatmentSummaryMeasuredDoseReferenceSequence::Item &DRTTreatmentSummaryMeasuredDoseReferenceSequence::operator[](const unsigned long num) const
+const DRTTreatmentSummaryMeasuredDoseReferenceSequence::Item &DRTTreatmentSummaryMeasuredDoseReferenceSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -463,7 +463,7 @@ OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::addItem(Item *&ite
 }
 
 
-OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -486,7 +486,7 @@ OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::insertItem(const u
 }
 
 
-OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::removeItem(const unsigned long pos)
+OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drttts.cc b/dcmrt/libsrc/drttts.cc
index bb271cd..65d2776 100644
--- a/dcmrt/libsrc/drttts.cc
+++ b/dcmrt/libsrc/drttts.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -608,7 +608,7 @@ OFBool DRTToleranceTableSequence::isValid() const
 }
 
 
-unsigned long DRTToleranceTableSequence::getNumberOfItems() const
+size_t DRTToleranceTableSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -638,12 +638,12 @@ OFCondition DRTToleranceTableSequence::gotoNextItem()
 }
 
 
-OFCondition DRTToleranceTableSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTToleranceTableSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -658,12 +658,12 @@ OFCondition DRTToleranceTableSequence::gotoItem(const unsigned long num, OFListI
 }
 
 
-OFCondition DRTToleranceTableSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTToleranceTableSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -678,7 +678,7 @@ OFCondition DRTToleranceTableSequence::gotoItem(const unsigned long num, OFListC
 }
 
 
-OFCondition DRTToleranceTableSequence::gotoItem(const unsigned long num)
+OFCondition DRTToleranceTableSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -714,7 +714,7 @@ const DRTToleranceTableSequence::Item &DRTToleranceTableSequence::getCurrentItem
 }
 
 
-OFCondition DRTToleranceTableSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTToleranceTableSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -724,7 +724,7 @@ OFCondition DRTToleranceTableSequence::getItem(const unsigned long num, Item *&i
 }
 
 
-DRTToleranceTableSequence::Item &DRTToleranceTableSequence::getItem(const unsigned long num)
+DRTToleranceTableSequence::Item &DRTToleranceTableSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -734,7 +734,7 @@ DRTToleranceTableSequence::Item &DRTToleranceTableSequence::getItem(const unsign
 }
 
 
-const DRTToleranceTableSequence::Item &DRTToleranceTableSequence::getItem(const unsigned long num) const
+const DRTToleranceTableSequence::Item &DRTToleranceTableSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -744,13 +744,13 @@ const DRTToleranceTableSequence::Item &DRTToleranceTableSequence::getItem(const
 }
 
 
-DRTToleranceTableSequence::Item &DRTToleranceTableSequence::operator[](const unsigned long num)
+DRTToleranceTableSequence::Item &DRTToleranceTableSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTToleranceTableSequence::Item &DRTToleranceTableSequence::operator[](const unsigned long num) const
+const DRTToleranceTableSequence::Item &DRTToleranceTableSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -773,7 +773,7 @@ OFCondition DRTToleranceTableSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTToleranceTableSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTToleranceTableSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -796,7 +796,7 @@ OFCondition DRTToleranceTableSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTToleranceTableSequence::removeItem(const unsigned long pos)
+OFCondition DRTToleranceTableSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtsns.cc b/dcmrt/libsrc/drtudis.cc
similarity index 71%
copy from dcmrt/libsrc/drtsns.cc
copy to dcmrt/libsrc/drtudis.cc
index b0febd2..6905be2 100644
--- a/dcmrt/libsrc/drtsns.cc
+++ b/dcmrt/libsrc/drtudis.cc
@@ -1,148 +1,148 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTSnoutSequence
+ *  Source file for class DRTUDISequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtsns.h"
+#include "dcmtk/dcmrt/seq/drtudis.h"
 
 
 // --- item class ---
 
-DRTSnoutSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTUDISequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    AccessoryCode(DCM_AccessoryCode),
-    SnoutID(DCM_SnoutID)
+    DeviceDescription(DCM_DeviceDescription),
+    UniqueDeviceIdentifier(DCM_UniqueDeviceIdentifier)
 {
 }
 
 
-DRTSnoutSequence::Item::Item(const Item &copy)
+DRTUDISequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AccessoryCode(copy.AccessoryCode),
-    SnoutID(copy.SnoutID)
+    DeviceDescription(copy.DeviceDescription),
+    UniqueDeviceIdentifier(copy.UniqueDeviceIdentifier)
 {
 }
 
 
-DRTSnoutSequence::Item::~Item()
+DRTUDISequence::Item::~Item()
 {
 }
 
 
-DRTSnoutSequence::Item &DRTSnoutSequence::Item::operator=(const Item &copy)
+DRTUDISequence::Item &DRTUDISequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        AccessoryCode = copy.AccessoryCode;
-        SnoutID = copy.SnoutID;
+        DeviceDescription = copy.DeviceDescription;
+        UniqueDeviceIdentifier = copy.UniqueDeviceIdentifier;
     }
     return *this;
 }
 
 
-void DRTSnoutSequence::Item::clear()
+void DRTUDISequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
-        SnoutID.clear();
-        AccessoryCode.clear();
+        UniqueDeviceIdentifier.clear();
+        DeviceDescription.clear();
     }
 }
 
 
-OFBool DRTSnoutSequence::Item::isEmpty()
+OFBool DRTUDISequence::Item::isEmpty()
 {
-    return SnoutID.isEmpty() &&
-           AccessoryCode.isEmpty();
+    return UniqueDeviceIdentifier.isEmpty() &&
+           DeviceDescription.isEmpty();
 }
 
 
-OFBool DRTSnoutSequence::Item::isValid() const
+OFBool DRTUDISequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTSnoutSequence::Item::read(DcmItem &item)
+OFCondition DRTUDISequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, SnoutID, "1", "1", "SnoutSequence");
-        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "SnoutSequence");
+        getAndCheckElementFromDataset(item, UniqueDeviceIdentifier, "1", "1", "UDISequence");
+        getAndCheckElementFromDataset(item, DeviceDescription, "1", "3", "UDISequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTSnoutSequence::Item::write(DcmItem &item)
+OFCondition DRTUDISequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(SnoutID), "1", "1", "SnoutSequence");
-        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "SnoutSequence");
+        addElementToDataset(result, item, new DcmUnlimitedText(UniqueDeviceIdentifier), "1", "1", "UDISequence");
+        addElementToDataset(result, item, new DcmLongString(DeviceDescription), "1", "3", "UDISequence");
     }
     return result;
 }
 
 
-OFCondition DRTSnoutSequence::Item::getAccessoryCode(OFString &value, const signed long pos) const
+OFCondition DRTUDISequence::Item::getDeviceDescription(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(AccessoryCode, value, pos);
+        return getStringValueFromElement(DeviceDescription, value, pos);
 }
 
 
-OFCondition DRTSnoutSequence::Item::getSnoutID(OFString &value, const signed long pos) const
+OFCondition DRTUDISequence::Item::getUniqueDeviceIdentifier(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(SnoutID, value, pos);
+        return getStringValueFromElement(UniqueDeviceIdentifier, value, pos);
 }
 
 
-OFCondition DRTSnoutSequence::Item::setAccessoryCode(const OFString &value, const OFBool check)
+OFCondition DRTUDISequence::Item::setDeviceDescription(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = AccessoryCode.putOFStringArray(value);
+            result = DeviceDescription.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTSnoutSequence::Item::setSnoutID(const OFString &value, const OFBool check)
+OFCondition DRTUDISequence::Item::setUniqueDeviceIdentifier(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
         if (result.good())
-            result = SnoutID.putOFStringArray(value);
+            result = UniqueDeviceIdentifier.putOFStringArray(value);
     }
     return result;
 }
@@ -150,7 +150,7 @@ OFCondition DRTSnoutSequence::Item::setSnoutID(const OFString &value, const OFBo
 
 // --- sequence class ---
 
-DRTSnoutSequence::DRTSnoutSequence(const OFBool emptyDefaultSequence)
+DRTUDISequence::DRTUDISequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -160,7 +160,7 @@ DRTSnoutSequence::DRTSnoutSequence(const OFBool emptyDefaultSequence)
 }
 
 
-DRTSnoutSequence::DRTSnoutSequence(const DRTSnoutSequence &copy)
+DRTUDISequence::DRTUDISequence(const DRTUDISequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -186,7 +186,7 @@ DRTSnoutSequence::DRTSnoutSequence(const DRTSnoutSequence &copy)
 }
 
 
-DRTSnoutSequence &DRTSnoutSequence::operator=(const DRTSnoutSequence &copy)
+DRTUDISequence &DRTUDISequence::operator=(const DRTUDISequence &copy)
 {
     if (this != &copy)
     {
@@ -214,13 +214,13 @@ DRTSnoutSequence &DRTSnoutSequence::operator=(const DRTSnoutSequence &copy)
 }
 
 
-DRTSnoutSequence::~DRTSnoutSequence()
+DRTUDISequence::~DRTUDISequence()
 {
     clear();
 }
 
 
-void DRTSnoutSequence::clear()
+void DRTUDISequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -239,25 +239,25 @@ void DRTSnoutSequence::clear()
 }
 
 
-OFBool DRTSnoutSequence::isEmpty()
+OFBool DRTUDISequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTSnoutSequence::isValid() const
+OFBool DRTUDISequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTSnoutSequence::getNumberOfItems() const
+size_t DRTUDISequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTSnoutSequence::gotoFirstItem()
+OFCondition DRTUDISequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -269,7 +269,7 @@ OFCondition DRTSnoutSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTSnoutSequence::gotoNextItem()
+OFCondition DRTUDISequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -281,12 +281,12 @@ OFCondition DRTSnoutSequence::gotoNextItem()
 }
 
 
-OFCondition DRTSnoutSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTUDISequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTSnoutSequence::gotoItem(const unsigned long num, OFListIterator(I
 }
 
 
-OFCondition DRTSnoutSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTUDISequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,13 +321,13 @@ OFCondition DRTSnoutSequence::gotoItem(const unsigned long num, OFListConstItera
 }
 
 
-OFCondition DRTSnoutSequence::gotoItem(const unsigned long num)
+OFCondition DRTUDISequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTSnoutSequence::getCurrentItem(Item *&item) const
+OFCondition DRTUDISequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -339,7 +339,7 @@ OFCondition DRTSnoutSequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTSnoutSequence::Item &DRTSnoutSequence::getCurrentItem()
+DRTUDISequence::Item &DRTUDISequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -348,7 +348,7 @@ DRTSnoutSequence::Item &DRTSnoutSequence::getCurrentItem()
 }
 
 
-const DRTSnoutSequence::Item &DRTSnoutSequence::getCurrentItem() const
+const DRTUDISequence::Item &DRTUDISequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -357,7 +357,7 @@ const DRTSnoutSequence::Item &DRTSnoutSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTSnoutSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTUDISequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTSnoutSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTSnoutSequence::Item &DRTSnoutSequence::getItem(const unsigned long num)
+DRTUDISequence::Item &DRTUDISequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTSnoutSequence::Item &DRTSnoutSequence::getItem(const unsigned long num)
 }
 
 
-const DRTSnoutSequence::Item &DRTSnoutSequence::getItem(const unsigned long num) const
+const DRTUDISequence::Item &DRTUDISequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,19 +387,19 @@ const DRTSnoutSequence::Item &DRTSnoutSequence::getItem(const unsigned long num)
 }
 
 
-DRTSnoutSequence::Item &DRTSnoutSequence::operator[](const unsigned long num)
+DRTUDISequence::Item &DRTUDISequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTSnoutSequence::Item &DRTSnoutSequence::operator[](const unsigned long num) const
+const DRTUDISequence::Item &DRTUDISequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTSnoutSequence::addItem(Item *&item)
+OFCondition DRTUDISequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -416,7 +416,7 @@ OFCondition DRTSnoutSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTSnoutSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTUDISequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTSnoutSequence::insertItem(const unsigned long pos, Item *&item)
 }
 
 
-OFCondition DRTSnoutSequence::removeItem(const unsigned long pos)
+OFCondition DRTUDISequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -457,10 +457,10 @@ OFCondition DRTSnoutSequence::removeItem(const unsigned long pos)
 }
 
 
-OFCondition DRTSnoutSequence::read(DcmItem &dataset,
-                                   const OFString &card,
-                                   const OFString &type,
-                                   const char *moduleName)
+OFCondition DRTUDISequence::read(DcmItem &dataset,
+                                 const OFString &card,
+                                 const OFString &type,
+                                 const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -469,7 +469,7 @@ OFCondition DRTSnoutSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_SnoutSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_UDISequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -499,7 +499,7 @@ OFCondition DRTSnoutSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_SnoutSequence);
+            DcmSequenceOfItems element(DCM_UDISequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -507,16 +507,16 @@ OFCondition DRTSnoutSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTSnoutSequence::write(DcmItem &dataset,
-                                    const OFString &card,
-                                    const OFString &type,
-                                    const char *moduleName)
+OFCondition DRTUDISequence::write(DcmItem &dataset,
+                                  const OFString &card,
+                                  const OFString &type,
+                                  const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_SnoutSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_UDISequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtvls.cc b/dcmrt/libsrc/drtvls.cc
index 3694971..d0e33ce 100644
--- a/dcmrt/libsrc/drtvls.cc
+++ b/dcmrt/libsrc/drtvls.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTVOILUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -282,7 +282,7 @@ OFBool DRTVOILUTSequence::isValid() const
 }
 
 
-unsigned long DRTVOILUTSequence::getNumberOfItems() const
+size_t DRTVOILUTSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -312,12 +312,12 @@ OFCondition DRTVOILUTSequence::gotoNextItem()
 }
 
 
-OFCondition DRTVOILUTSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTVOILUTSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -332,12 +332,12 @@ OFCondition DRTVOILUTSequence::gotoItem(const unsigned long num, OFListIterator(
 }
 
 
-OFCondition DRTVOILUTSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTVOILUTSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -352,7 +352,7 @@ OFCondition DRTVOILUTSequence::gotoItem(const unsigned long num, OFListConstIter
 }
 
 
-OFCondition DRTVOILUTSequence::gotoItem(const unsigned long num)
+OFCondition DRTVOILUTSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -388,7 +388,7 @@ const DRTVOILUTSequence::Item &DRTVOILUTSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTVOILUTSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTVOILUTSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -398,7 +398,7 @@ OFCondition DRTVOILUTSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTVOILUTSequence::Item &DRTVOILUTSequence::getItem(const unsigned long num)
+DRTVOILUTSequence::Item &DRTVOILUTSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -408,7 +408,7 @@ DRTVOILUTSequence::Item &DRTVOILUTSequence::getItem(const unsigned long num)
 }
 
 
-const DRTVOILUTSequence::Item &DRTVOILUTSequence::getItem(const unsigned long num) const
+const DRTVOILUTSequence::Item &DRTVOILUTSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -418,13 +418,13 @@ const DRTVOILUTSequence::Item &DRTVOILUTSequence::getItem(const unsigned long nu
 }
 
 
-DRTVOILUTSequence::Item &DRTVOILUTSequence::operator[](const unsigned long num)
+DRTVOILUTSequence::Item &DRTVOILUTSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTVOILUTSequence::Item &DRTVOILUTSequence::operator[](const unsigned long num) const
+const DRTVOILUTSequence::Item &DRTVOILUTSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -447,7 +447,7 @@ OFCondition DRTVOILUTSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTVOILUTSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTVOILUTSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -470,7 +470,7 @@ OFCondition DRTVOILUTSequence::insertItem(const unsigned long pos, Item *&item)
 }
 
 
-OFCondition DRTVOILUTSequence::removeItem(const unsigned long pos)
+OFCondition DRTVOILUTSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtwps.cc b/dcmrt/libsrc/drtwps.cc
index 3ccbe58..3955716 100644
--- a/dcmrt/libsrc/drtwps.cc
+++ b/dcmrt/libsrc/drtwps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -260,7 +260,7 @@ OFBool DRTWedgePositionSequence::isValid() const
 }
 
 
-unsigned long DRTWedgePositionSequence::getNumberOfItems() const
+size_t DRTWedgePositionSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -290,12 +290,12 @@ OFCondition DRTWedgePositionSequence::gotoNextItem()
 }
 
 
-OFCondition DRTWedgePositionSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTWedgePositionSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -310,12 +310,12 @@ OFCondition DRTWedgePositionSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTWedgePositionSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTWedgePositionSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -330,7 +330,7 @@ OFCondition DRTWedgePositionSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTWedgePositionSequence::gotoItem(const unsigned long num)
+OFCondition DRTWedgePositionSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -366,7 +366,7 @@ const DRTWedgePositionSequence::Item &DRTWedgePositionSequence::getCurrentItem()
 }
 
 
-OFCondition DRTWedgePositionSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTWedgePositionSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -376,7 +376,7 @@ OFCondition DRTWedgePositionSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTWedgePositionSequence::Item &DRTWedgePositionSequence::getItem(const unsigned long num)
+DRTWedgePositionSequence::Item &DRTWedgePositionSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -386,7 +386,7 @@ DRTWedgePositionSequence::Item &DRTWedgePositionSequence::getItem(const unsigned
 }
 
 
-const DRTWedgePositionSequence::Item &DRTWedgePositionSequence::getItem(const unsigned long num) const
+const DRTWedgePositionSequence::Item &DRTWedgePositionSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -396,13 +396,13 @@ const DRTWedgePositionSequence::Item &DRTWedgePositionSequence::getItem(const un
 }
 
 
-DRTWedgePositionSequence::Item &DRTWedgePositionSequence::operator[](const unsigned long num)
+DRTWedgePositionSequence::Item &DRTWedgePositionSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTWedgePositionSequence::Item &DRTWedgePositionSequence::operator[](const unsigned long num) const
+const DRTWedgePositionSequence::Item &DRTWedgePositionSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -425,7 +425,7 @@ OFCondition DRTWedgePositionSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTWedgePositionSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTWedgePositionSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -448,7 +448,7 @@ OFCondition DRTWedgePositionSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTWedgePositionSequence::removeItem(const unsigned long pos)
+OFCondition DRTWedgePositionSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtwrs.cc b/dcmrt/libsrc/drtwrs.cc
index bac1256..3af75fc 100644
--- a/dcmrt/libsrc/drtwrs.cc
+++ b/dcmrt/libsrc/drtwrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWADORetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -222,7 +222,7 @@ OFBool DRTWADORetrievalSequence::isValid() const
 }
 
 
-unsigned long DRTWADORetrievalSequence::getNumberOfItems() const
+size_t DRTWADORetrievalSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -252,12 +252,12 @@ OFCondition DRTWADORetrievalSequence::gotoNextItem()
 }
 
 
-OFCondition DRTWADORetrievalSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTWADORetrievalSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -272,12 +272,12 @@ OFCondition DRTWADORetrievalSequence::gotoItem(const unsigned long num, OFListIt
 }
 
 
-OFCondition DRTWADORetrievalSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTWADORetrievalSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -292,7 +292,7 @@ OFCondition DRTWADORetrievalSequence::gotoItem(const unsigned long num, OFListCo
 }
 
 
-OFCondition DRTWADORetrievalSequence::gotoItem(const unsigned long num)
+OFCondition DRTWADORetrievalSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -328,7 +328,7 @@ const DRTWADORetrievalSequence::Item &DRTWADORetrievalSequence::getCurrentItem()
 }
 
 
-OFCondition DRTWADORetrievalSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTWADORetrievalSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -338,7 +338,7 @@ OFCondition DRTWADORetrievalSequence::getItem(const unsigned long num, Item *&it
 }
 
 
-DRTWADORetrievalSequence::Item &DRTWADORetrievalSequence::getItem(const unsigned long num)
+DRTWADORetrievalSequence::Item &DRTWADORetrievalSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -348,7 +348,7 @@ DRTWADORetrievalSequence::Item &DRTWADORetrievalSequence::getItem(const unsigned
 }
 
 
-const DRTWADORetrievalSequence::Item &DRTWADORetrievalSequence::getItem(const unsigned long num) const
+const DRTWADORetrievalSequence::Item &DRTWADORetrievalSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -358,13 +358,13 @@ const DRTWADORetrievalSequence::Item &DRTWADORetrievalSequence::getItem(const un
 }
 
 
-DRTWADORetrievalSequence::Item &DRTWADORetrievalSequence::operator[](const unsigned long num)
+DRTWADORetrievalSequence::Item &DRTWADORetrievalSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTWADORetrievalSequence::Item &DRTWADORetrievalSequence::operator[](const unsigned long num) const
+const DRTWADORetrievalSequence::Item &DRTWADORetrievalSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -387,7 +387,7 @@ OFCondition DRTWADORetrievalSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTWADORetrievalSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTWADORetrievalSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -410,7 +410,7 @@ OFCondition DRTWADORetrievalSequence::insertItem(const unsigned long pos, Item *
 }
 
 
-OFCondition DRTWADORetrievalSequence::removeItem(const unsigned long pos)
+OFCondition DRTWADORetrievalSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtwrsrs.cc b/dcmrt/libsrc/drtwrsrs.cc
index c2a748b..a1cbbcd 100644
--- a/dcmrt/libsrc/drtwrsrs.cc
+++ b/dcmrt/libsrc/drtwrsrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWADORSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -222,7 +222,7 @@ OFBool DRTWADORSRetrievalSequence::isValid() const
 }
 
 
-unsigned long DRTWADORSRetrievalSequence::getNumberOfItems() const
+size_t DRTWADORSRetrievalSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -252,12 +252,12 @@ OFCondition DRTWADORSRetrievalSequence::gotoNextItem()
 }
 
 
-OFCondition DRTWADORSRetrievalSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTWADORSRetrievalSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -272,12 +272,12 @@ OFCondition DRTWADORSRetrievalSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTWADORSRetrievalSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTWADORSRetrievalSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -292,7 +292,7 @@ OFCondition DRTWADORSRetrievalSequence::gotoItem(const unsigned long num, OFList
 }
 
 
-OFCondition DRTWADORSRetrievalSequence::gotoItem(const unsigned long num)
+OFCondition DRTWADORSRetrievalSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -328,7 +328,7 @@ const DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getCurrentIt
 }
 
 
-OFCondition DRTWADORSRetrievalSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTWADORSRetrievalSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -338,7 +338,7 @@ OFCondition DRTWADORSRetrievalSequence::getItem(const unsigned long num, Item *&
 }
 
 
-DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getItem(const unsigned long num)
+DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -348,7 +348,7 @@ DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getItem(const unsi
 }
 
 
-const DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getItem(const unsigned long num) const
+const DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -358,13 +358,13 @@ const DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getItem(cons
 }
 
 
-DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::operator[](const unsigned long num)
+DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::operator[](const unsigned long num) const
+const DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -387,7 +387,7 @@ OFCondition DRTWADORSRetrievalSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTWADORSRetrievalSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTWADORSRetrievalSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -410,7 +410,7 @@ OFCondition DRTWADORSRetrievalSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTWADORSRetrievalSequence::removeItem(const unsigned long pos)
+OFCondition DRTWADORSRetrievalSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtws.cc b/dcmrt/libsrc/drtws.cc
index 99b9f52..ba3ab71 100644
--- a/dcmrt/libsrc/drtws.cc
+++ b/dcmrt/libsrc/drtws.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -508,7 +508,7 @@ OFBool DRTWedgeSequence::isValid() const
 }
 
 
-unsigned long DRTWedgeSequence::getNumberOfItems() const
+size_t DRTWedgeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -538,12 +538,12 @@ OFCondition DRTWedgeSequence::gotoNextItem()
 }
 
 
-OFCondition DRTWedgeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTWedgeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -558,12 +558,12 @@ OFCondition DRTWedgeSequence::gotoItem(const unsigned long num, OFListIterator(I
 }
 
 
-OFCondition DRTWedgeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTWedgeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -578,7 +578,7 @@ OFCondition DRTWedgeSequence::gotoItem(const unsigned long num, OFListConstItera
 }
 
 
-OFCondition DRTWedgeSequence::gotoItem(const unsigned long num)
+OFCondition DRTWedgeSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -614,7 +614,7 @@ const DRTWedgeSequence::Item &DRTWedgeSequence::getCurrentItem() const
 }
 
 
-OFCondition DRTWedgeSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTWedgeSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -624,7 +624,7 @@ OFCondition DRTWedgeSequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTWedgeSequence::Item &DRTWedgeSequence::getItem(const unsigned long num)
+DRTWedgeSequence::Item &DRTWedgeSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -634,7 +634,7 @@ DRTWedgeSequence::Item &DRTWedgeSequence::getItem(const unsigned long num)
 }
 
 
-const DRTWedgeSequence::Item &DRTWedgeSequence::getItem(const unsigned long num) const
+const DRTWedgeSequence::Item &DRTWedgeSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -644,13 +644,13 @@ const DRTWedgeSequence::Item &DRTWedgeSequence::getItem(const unsigned long num)
 }
 
 
-DRTWedgeSequence::Item &DRTWedgeSequence::operator[](const unsigned long num)
+DRTWedgeSequence::Item &DRTWedgeSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTWedgeSequence::Item &DRTWedgeSequence::operator[](const unsigned long num) const
+const DRTWedgeSequence::Item &DRTWedgeSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -673,7 +673,7 @@ OFCondition DRTWedgeSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTWedgeSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTWedgeSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -696,7 +696,7 @@ OFCondition DRTWedgeSequence::insertItem(const unsigned long pos, Item *&item)
 }
 
 
-OFCondition DRTWedgeSequence::removeItem(const unsigned long pos)
+OFCondition DRTWedgeSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtxrs.cc b/dcmrt/libsrc/drtxrs.cc
index a9fffff..e133a96 100644
--- a/dcmrt/libsrc/drtxrs.cc
+++ b/dcmrt/libsrc/drtxrs.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTXDSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2015c
- *  File created on 2015-12-07 16:29:33
+ *  Generated automatically from DICOM PS 3.3-2016e
+ *  File created on 2017-01-25 17:55:32
  *
  */
 
@@ -251,7 +251,7 @@ OFBool DRTXDSRetrievalSequence::isValid() const
 }
 
 
-unsigned long DRTXDSRetrievalSequence::getNumberOfItems() const
+size_t DRTXDSRetrievalSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
@@ -281,12 +281,12 @@ OFCondition DRTXDSRetrievalSequence::gotoNextItem()
 }
 
 
-OFCondition DRTXDSRetrievalSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTXDSRetrievalSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -301,12 +301,12 @@ OFCondition DRTXDSRetrievalSequence::gotoItem(const unsigned long num, OFListIte
 }
 
 
-OFCondition DRTXDSRetrievalSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTXDSRetrievalSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
     {
-        unsigned long idx = num + 1;
+        size_t idx = num + 1;
         iterator = SequenceOfItems.begin();
         const OFListConstIterator(Item *) last = SequenceOfItems.end();
         while ((--idx > 0) && (iterator != last))
@@ -321,7 +321,7 @@ OFCondition DRTXDSRetrievalSequence::gotoItem(const unsigned long num, OFListCon
 }
 
 
-OFCondition DRTXDSRetrievalSequence::gotoItem(const unsigned long num)
+OFCondition DRTXDSRetrievalSequence::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
@@ -357,7 +357,7 @@ const DRTXDSRetrievalSequence::Item &DRTXDSRetrievalSequence::getCurrentItem() c
 }
 
 
-OFCondition DRTXDSRetrievalSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTXDSRetrievalSequence::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +367,7 @@ OFCondition DRTXDSRetrievalSequence::getItem(const unsigned long num, Item *&ite
 }
 
 
-DRTXDSRetrievalSequence::Item &DRTXDSRetrievalSequence::getItem(const unsigned long num)
+DRTXDSRetrievalSequence::Item &DRTXDSRetrievalSequence::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +377,7 @@ DRTXDSRetrievalSequence::Item &DRTXDSRetrievalSequence::getItem(const unsigned l
 }
 
 
-const DRTXDSRetrievalSequence::Item &DRTXDSRetrievalSequence::getItem(const unsigned long num) const
+const DRTXDSRetrievalSequence::Item &DRTXDSRetrievalSequence::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,13 +387,13 @@ const DRTXDSRetrievalSequence::Item &DRTXDSRetrievalSequence::getItem(const unsi
 }
 
 
-DRTXDSRetrievalSequence::Item &DRTXDSRetrievalSequence::operator[](const unsigned long num)
+DRTXDSRetrievalSequence::Item &DRTXDSRetrievalSequence::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTXDSRetrievalSequence::Item &DRTXDSRetrievalSequence::operator[](const unsigned long num) const
+const DRTXDSRetrievalSequence::Item &DRTXDSRetrievalSequence::operator[](const size_t num) const
 {
     return getItem(num);
 }
@@ -416,7 +416,7 @@ OFCondition DRTXDSRetrievalSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTXDSRetrievalSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTXDSRetrievalSequence::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +439,7 @@ OFCondition DRTXDSRetrievalSequence::insertItem(const unsigned long pos, Item *&
 }
 
 
-OFCondition DRTXDSRetrievalSequence::removeItem(const unsigned long pos)
+OFCondition DRTXDSRetrievalSequence::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/tests/Makefile.dep b/dcmrt/tests/Makefile.dep
index 8535fc6..9e87cb0 100644
--- a/dcmrt/tests/Makefile.dep
+++ b/dcmrt/tests/Makefile.dep
@@ -118,7 +118,8 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
@@ -128,16 +129,17 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
  ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfes.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
  ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmls.h \
- ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
- ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
@@ -151,17 +153,17 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../include/dcmtk/dcmrt/seq/drtpsss.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
  ../include/dcmtk/dcmrt/seq/drtrdros.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
  ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
@@ -183,9 +185,13 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtssrs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h ../include/dcmtk/dcmrt/drtimage.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drtimage.h \
  ../include/dcmtk/dcmrt/seq/drtcbars.h \
  ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
  ../include/dcmtk/dcmrt/seq/drtds.h ../include/dcmtk/dcmrt/seq/drtes.h \
@@ -194,8 +200,9 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
  ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \
  ../include/dcmtk/dcmrt/seq/drtmacds.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtrims.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
+ ../include/dcmtk/dcmrt/seq/drtsis.h ../include/dcmtk/dcmrt/seq/drtsins.h \
  ../include/dcmtk/dcmrt/seq/drtvls.h ../include/dcmtk/dcmrt/drtplan.h \
  ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \
  ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
@@ -225,10 +232,11 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h \
  ../include/dcmtk/dcmrt/seq/drttms9.h ../include/dcmtk/dcmrt/drtstrct.h \
  ../include/dcmtk/dcmrt/seq/drtrros.h \
- ../include/dcmtk/dcmrt/seq/drtarics.h \
  ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h \
- ../include/dcmtk/dcmrt/seq/drtrics.h ../include/dcmtk/dcmrt/seq/drtrrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrics.h \
+ ../include/dcmtk/dcmrt/seq/drtsptcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrrs.h \
  ../include/dcmtk/dcmrt/seq/drtrrros.h \
  ../include/dcmtk/dcmrt/seq/drtspccs.h ../include/dcmtk/dcmrt/drttreat.h \
  ../include/dcmtk/dcmrt/seq/drtfgss.h \
@@ -419,27 +427,30 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
  ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
  ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h \
  ../include/dcmtk/dcmrt/seq/drtrbas8.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
  ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
  ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
  ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
@@ -455,8 +466,11 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
@@ -466,15 +480,19 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrsss.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
- ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtss.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h ../include/dcmtk/dcmrt/seq/drtss.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
  ../include/dcmtk/dcmrt/seq/drttts.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h \
- ../include/dcmtk/dcmrt/seq/drttms9.h
+ ../include/dcmtk/dcmrt/seq/drttms9.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h
diff --git a/dcmrt/tests/Makefile.in b/dcmrt/tests/Makefile.in
index ca218aa..0c34ff7 100644
--- a/dcmrt/tests/Makefile.in
+++ b/dcmrt/tests/Makefile.in
@@ -21,7 +21,7 @@ LOCALINCLUDES = -I$(dcmdatadir)/include -I$(oflogdir)/include -I$(ofstddir)/incl
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(dcmimgledir)/libsrc -L$(dcmdatadir)/libsrc \
 	-L$(oflogdir)/libsrc -L$(ofstddir)/libsrc
 LOCALLIBS = -ldcmrt -ldcmimgle -ldcmdata -loflog -lofstd \
-	$(TIFFLIBS) $(PNGLIBS) $(ZLIBLIBS) $(ICONVLIBS)
+	$(TIFFLIBS) $(PNGLIBS) $(ZLIBLIBS) $(CHARCONVLIBS)
 
 test_objs = tests.o tsearch.o
 objs = drttest.o $(test_objs)
@@ -34,7 +34,7 @@ drttest: drttest.o
 	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $@.o $(LOCALLIBS) $(MATHLIBS) $(LIBS)
 
 tests: $(test_objs)
-	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $(test_objs) $(LOCALLIBS) $(ICONVLIBS) $(LIBS)
+	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $(test_objs) $(LOCALLIBS) $(LIBS)
 
 install: all
 
diff --git a/dcmseg/apps/CMakeLists.txt b/dcmseg/apps/CMakeLists.txt
deleted file mode 100644
index 50c5e98..0000000
--- a/dcmseg/apps/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# declare executables
-FOREACH(PROGRAM makeseg rwseg)
-  DCMTK_ADD_EXECUTABLE(${PROGRAM} ${PROGRAM})
-ENDFOREACH(PROGRAM)
-
-# make sure executables are linked to the corresponding libraries
-FOREACH(PROGRAM makeseg rwseg)
-  DCMTK_TARGET_LINK_MODULES(${PROGRAM} dcmseg dcmfg dcmiod dcmdata oflog ofstd)
-ENDFOREACH(PROGRAM)
diff --git a/dcmseg/include/dcmtk/dcmseg/segdoc.h b/dcmseg/include/dcmtk/dcmseg/segdoc.h
index 5e70154..c6d0129 100644
--- a/dcmseg/include/dcmtk/dcmseg/segdoc.h
+++ b/dcmseg/include/dcmtk/dcmseg/segdoc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -26,6 +26,7 @@
 #include "dcmtk/ofstd/ofvector.h"               // for OFVector
 #include "dcmtk/dcmiod/iodimage.h"              // common image IOD attribute access
 #include "dcmtk/dcmiod/iodmacro.h"
+#include "dcmtk/dcmiod/modimagepixel.h"
 #include "dcmtk/dcmiod/modsegmentationseries.h" // for segmentation series module
 #include "dcmtk/dcmiod/modenhequipment.h"       // for enhanced general equipment module
 
@@ -48,7 +49,7 @@ class FGDerivationImage;
 /** Class representing an object of the "Segmentation SOP Class".
  */
 class DCMTK_DCMSEG_EXPORT DcmSegmentation
-: public DcmIODImage
+: public DcmIODImage<IODImagePixelModule<Uint8> >
 {
 
 public:
@@ -61,7 +62,9 @@ public:
 
   // -------------------- loading and saving ---------------------
 
-  /** Load Segmentation object from item file
+  /** Static method to load a Segmentation object from a file.
+   *  The memory of the resulting Segmentation object has to be freed by the
+   *  caller.
    *  @param  filename The file to read from
    *  @param  segmentation  The resulting segmentation object. NULL if dataset
    *          could not be read successfully.
@@ -70,7 +73,9 @@ public:
   static OFCondition loadFile(const OFString& filename,
                               DcmSegmentation*& segmentation);
 
-  /** Load Segmentation object from item object.
+  /** Static method to load a Segmentation object from a dataset object.
+   *  The memory of the resulting Segmentation object has to be freed by the
+   *  caller.
    *  @param  dataset The dataset to read from
    *  @param  segmentation  The resulting segmentation object. NULL if dataset
    *          could not be read successfully.
@@ -98,6 +103,8 @@ public:
   /** Factory method to create a binary segmentation object from the minimal
    *  set of information required. The actual segments and the frame data is
    *  added separately.
+   *  The memory of the resulting Segmentation object has to be freed by the
+   *  caller.
    *  @param  segmentation The resulting segmentation object if provided data is
    *          valid. Otherwise NULL is returned.
    *  @param  rows Number of rows of segmentation frame data
@@ -116,6 +123,8 @@ public:
   /** Factory method to create a fractional segmentation object from the minimal
    *  set of information required. The actual segments and the frame data is
    *  added separately.
+   *  The memory of the resulting Segmentation object has to be freed by the
+   *  caller.
    *  @param  segmentation The resulting segmentation object if provided data is
    *          valid. Otherwise NULL is returned.
    *  @param  rows Number of rows of segmentation frame data
@@ -138,6 +147,8 @@ public:
                                                   const ContentIdentificationMacro& contentIdentification);
 
   /** Helps to create a valid Derivation Image Functional Group Macro
+   *  The memory of the resulting functional group object has to be freed by the
+   *  caller.
    *  @param derivationImages to image SOP instances
    *  @param derivationDescription Free text describing how the derivation was
    *         achieved.
@@ -146,22 +157,6 @@ public:
   static FGDerivationImage* createDerivationImageFG(const OFVector<ImageSOPInstanceReferenceMacro>& derivationImages,
                                                     const OFString& derivationDescription);
 
-  /** Take over general information for Patient, Study, Series and/or Frame of Reference
-   *  from existing file
-   *  @param  filename The filename to read from
-   *  @param  usePatient If OFTrue, Patient level information is imported
-   *  @param  useStudy If OFTrue, Study level information is imported
-   *  @param  useSeries If OFTrue, Series level information is imported
-   *  @param  useFoR If OFTrue, Frame of Reference information is imported
-   *  @return EC_Normal if reading was successful (i.e.\ if any information could
-   *          be read), otherwise an error is returned
-   */
-  OFCondition importPatientStudyFoR(const OFString& filename,
-                                    const OFBool usePatient,
-                                    const OFBool useStudy,
-                                    const OFBool useSeries,
-                                    const OFBool useFoR = OFFalse);
-
   // -------------------- access ---------------------
 
   /** Get number of frames, based on the number of items in the shared
@@ -273,7 +268,7 @@ public:
                                  Uint16& segmentNumber);
 
   /** Add a functional group for all frames
-   *  @param  group The group to be added as shared functional group
+   *  @param  group The group to be added as shared functional group. The
    *  @return EC_Normal if adding was successful, error otherwise
    */
   virtual OFCondition addForAllFrames(const FGBase& group);
@@ -287,7 +282,9 @@ public:
    *  @param  segmentNumber The logical segment number (>=1) this frame refers to.
    *          The segment identified by the segmentNumber must already exist.
    *  @param  perFrameInformation The functional groups that identify this frame (i.e.
-   *           which are planned to be not common for all other frames)
+   *          which are planned to be not common for all other frames). The
+   *          functional groups are copied, so ownership of each group stays
+   *          with the caller no matter what the method returns.
    *  @return EC_Normal if adding was successful, error otherwise
    */
   virtual OFCondition addFrame(Uint8* pixData,
@@ -314,6 +311,7 @@ public:
    *          lossy compression steps. Only one value (and no backslash) if only
    *          one step was performed.
    *  @param  checkValues If OFTrue, the data provided is checked for validity
+   *  @return EC_Normal if lossy compression info could be set, error code otherwise
    */
   virtual OFCondition setLossyImageCompressionFlag(const OFString& ratios,
                                                    const OFString& methods,
@@ -323,6 +321,7 @@ public:
    *  @param  equipmentInfo  The description of the equipment used to create
    *          this segmentation
    *  @param  checkValue If OFTrue, the data provided is checked for validity
+   *  @return EC_Normal if equipment information could be set successfully, error otherwise
    */
   virtual OFCondition setEquipmentInfo(const IODGeneralEquipmentModule::EquipmentInfo& equipmentInfo,
                                        const OFBool checkValue = OFTrue);
@@ -331,6 +330,7 @@ public:
    *  @param  contentIdentification  The content identification of this segmentation
    *  @param  checkValue If OFTrue, the data provided is checked for validity
    *          (as possible)
+   *  @return EC_Normal if content identification could be set correctly, OFFalse otherwise
    */
   virtual OFCondition setContentIdentification(const ContentIdentificationMacro& contentIdentification,
                                                const OFBool checkValue = OFTrue);
@@ -373,7 +373,7 @@ protected:
   *  the image pixel module manually.
   *  @return The Image Pixel Module
   */
-  virtual IODImagePixelModule& getImagePixel();
+  virtual IODImagePixelModule<Uint8>& getImagePixel();
 
   /** Initialize IOD rules
    */
@@ -591,6 +591,8 @@ private:
   /** Returns the number of bits per frame, taking into account binary versus
    *  fractional segmentation (member variables) and the dimensions of the
    *  image (parameters)
+   *  @param  rows The number of rows returned
+   *  @param  cols The number of columns returned
    *  @return Bits used by a single frame of the segmentation
    */
   size_t getBitsPerFrame(const Uint16& rows,
diff --git a/dcmseg/include/dcmtk/dcmseg/segtypes.h b/dcmseg/include/dcmtk/dcmseg/segtypes.h
index a29e6e6..cf1645e 100644
--- a/dcmseg/include/dcmtk/dcmseg/segtypes.h
+++ b/dcmseg/include/dcmtk/dcmseg/segtypes.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -46,10 +46,10 @@ extern DCMTK_DCMSEG_EXPORT OFLogger DCM_dcmsegLogger;
  *-----------------------*/
 
 /** DICOM assigns unique number to each Segment within the Segmentation object
- *  using an unsigned 16 Bit Integer within "Segment Number". Thus a maximum number
- *  of 65536 segments can be stored.
+ *  using an unsigned 16 Bit Integer within "Segment Number" starting with 1.
+ *  Thus maximally 65535 segments can be stored.
  */
-const Uint32 DCM_SEG_MAX_SEGMENTS = 65536;
+const Uint32 DCM_SEG_MAX_SEGMENTS = 65535;
 
 /** @name Specific error conditions for module dcmseg
  *  These error codes can be used in addition to the general purpose
diff --git a/dcmseg/libsrc/CMakeLists.txt b/dcmseg/libsrc/CMakeLists.txt
index 9f25f32..a315d53 100644
--- a/dcmseg/libsrc/CMakeLists.txt
+++ b/dcmseg/libsrc/CMakeLists.txt
@@ -2,4 +2,3 @@
 DCMTK_ADD_LIBRARY(dcmseg segdoc segment segtypes segutils)
 
 DCMTK_TARGET_LINK_MODULES(dcmseg dcmfg dcmiod dcmdata ofstd oflog)
-DCMTK_TARGET_LINK_LIBRARIES(dcmseg ${ZLIB_LIBS} ${WIN32_STD_LIBRARIES})
diff --git a/dcmseg/libsrc/Makefile.dep b/dcmseg/libsrc/Makefile.dep
index a9ee8fb..beca055 100644
--- a/dcmseg/libsrc/Makefile.dep
+++ b/dcmseg/libsrc/Makefile.dep
@@ -10,13 +10,22 @@ segdoc.o: segdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmseg/segdoc.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodimage.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvriant.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/variant.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/helpers.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/cnvrsn.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/vsprfw.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmiod/include/dcmtk/dcmiod/iodcommn.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
- ../../ofstd/include/dcmtk/ofstd/ofutil.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -123,7 +132,6 @@ segdoc.o: segdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
  ../../dcmiod/include/dcmtk/dcmiod/modpatientstudy.h \
  ../../ofstd/include/dcmtk/ofstd/ofoption.h \
- ../../ofstd/include/dcmtk/ofstd/ofalign.h \
  ../../dcmiod/include/dcmtk/dcmiod/modgeneralstudy.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
  ../../dcmiod/include/dcmtk/dcmiod/modequipment.h \
@@ -133,6 +141,8 @@ segdoc.o: segdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodreferences.h \
  ../../dcmiod/include/dcmtk/dcmiod/modgeneralimage.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modimagepixelbase.h \
  ../../dcmiod/include/dcmtk/dcmiod/modimagepixel.h \
  ../../dcmiod/include/dcmtk/dcmiod/modsegmentationseries.h \
  ../../dcmiod/include/dcmtk/dcmiod/modenhequipment.h \
@@ -212,6 +222,8 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -244,11 +256,9 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -279,11 +289,19 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmseg/segtypes.h ../include/dcmtk/dcmseg/segdef.h \
  ../include/dcmtk/dcmseg/segdoc.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodimage.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvriant.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/variant.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/helpers.h \
+ ../../ofstd/include/dcmtk/ofstd/ofalign.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/cnvrsn.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/vsprfw.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmiod/include/dcmtk/dcmiod/iodcommn.h \
  ../../dcmiod/include/dcmtk/dcmiod/modpatient.h \
  ../../dcmiod/include/dcmtk/dcmiod/modpatientstudy.h \
  ../../ofstd/include/dcmtk/ofstd/ofoption.h \
- ../../ofstd/include/dcmtk/ofstd/ofalign.h \
  ../../dcmiod/include/dcmtk/dcmiod/modgeneralstudy.h \
  ../../dcmiod/include/dcmtk/dcmiod/modequipment.h \
  ../../dcmiod/include/dcmtk/dcmiod/modgeneralseries.h \
@@ -292,6 +310,8 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodreferences.h \
  ../../dcmiod/include/dcmtk/dcmiod/modgeneralimage.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modimagepixelbase.h \
  ../../dcmiod/include/dcmtk/dcmiod/modimagepixel.h \
  ../../dcmiod/include/dcmtk/dcmiod/modsegmentationseries.h \
  ../../dcmiod/include/dcmtk/dcmiod/modenhequipment.h \
@@ -362,6 +382,8 @@ segtypes.o: segtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -392,11 +414,9 @@ segtypes.o: segtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
diff --git a/dcmseg/libsrc/segdoc.cc b/dcmseg/libsrc/segdoc.cc
index 2261fc9..75d0d0a 100644
--- a/dcmseg/libsrc/segdoc.cc
+++ b/dcmseg/libsrc/segdoc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2016, Open Connections GmbH
+ *  Copyright (C) 2015-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -33,11 +33,11 @@
 
 // default constructor (protected, instance creation via create() function)
 DcmSegmentation::DcmSegmentation()
-: DcmIODImage(),
-  m_SegmentationSeries(DcmIODImage::getData(), DcmIODImage::getRules()),
-  m_EnhancedGeneralEquipmentModule(DcmIODImage::getData(), DcmIODImage::getRules()),
-  m_FG(DcmIODImage::getData(), DcmIODImage::getRules()),
-  m_DimensionModule(DcmIODImage::getData(), DcmIODImage::getRules()),
+: DcmSegmentation::IODImage(OFin_place<IODImagePixelModule<Uint8> >),
+  m_SegmentationSeries(DcmSegmentation::IODImage::getData(), DcmSegmentation::IODImage::getRules()),
+  m_EnhancedGeneralEquipmentModule(DcmSegmentation::IODImage::getData(), DcmSegmentation::IODImage::getRules()),
+  m_FG(DcmSegmentation::IODImage::getData(), DcmSegmentation::IODImage::getRules()),
+  m_DimensionModule(DcmSegmentation::IODImage::getData(), DcmSegmentation::IODImage::getRules()),
   m_Frames(),
   m_ImageType("DERIVED\\PRIMARY"),
   m_ContentIdentificationMacro(),
@@ -182,15 +182,8 @@ OFCondition DcmSegmentation::createCommon(DcmSegmentation*& segmentation,
       segmentation = NULL;
       return EC_InvalidValue;
     }
-    OFDate date;
-    date.setCurrentDate();
-    date.getISOFormattedDate(tempstr, OFFalse /* no delimiters */);
-    segmentation->getGeneralImage().setContentDate(tempstr);
-    OFTime time;
-    time.setCurrentTime();
-    time.getISOFormattedTime(tempstr, OFTrue /* include seconds */, OFFalse, OFFalse, OFFalse);
-    segmentation->getGeneralImage().setContentTime(tempstr);
 
+    DcmIODUtil::setContentDateAndTimeNow(segmentation->getGeneralImage());
     result = segmentation->setEquipmentInfo(equipmentInfo, OFTrue /* check */);
   }
 
@@ -227,7 +220,7 @@ OFCondition DcmSegmentation::read(DcmItem &dataset)
   }
 
   // Read attributes in base classes
-  DcmIODImage::read(dataset);
+  DcmSegmentation::IODImage::read(dataset);
 
   // Read Segmentation Series Module
   m_SegmentationSeries.read(dataset);
@@ -309,37 +302,12 @@ OFCondition DcmSegmentation::write(DcmItem &dataset)
   // Multi-frame Functional Groups Module (except functional groups itself)
   // SOP Common Module
   // Common Instance Reference Module
-  if (result.good()) result = DcmIODImage::write(dataset);
+  if (result.good()) result = DcmSegmentation::IODImage::write(dataset);
 
   return result;
 }
 
 
-OFCondition DcmSegmentation::importPatientStudyFoR(const OFString& filename,
-                                                   const OFBool usePatient,
-                                                   const OFBool useStudy,
-                                                   const OFBool useSeries,
-                                                   const OFBool useFoR)
-{
-  DcmFileFormat dcmff;
-  OFCondition result = dcmff.loadFile(filename.c_str());
-  if ( result.good() )
-  {
-    DcmDataset *dset = dcmff.getDataset();
-    if (dset != NULL)
-    {
-      result = import(*dset, usePatient, useStudy, useSeries, useFoR);
-    }
-    else
-    {
-      DCMSEG_ERROR("Unable to get dataset from file for copying patient, study, series and/or frame of reference information");
-      result = EC_IllegalCall;
-    }
-  }
-  return result;
-}
-
-
 FGInterface& DcmSegmentation::getFunctionalGroups()
 {
   return m_FGInterface;
@@ -361,7 +329,7 @@ size_t DcmSegmentation::getNumberOfSegments()
 
 IODGeneralEquipmentModule& DcmSegmentation::getEquipment()
 {
-  return DcmIODImage::getEquipment();
+  return DcmSegmentation::IODImage::getEquipment();
 }
 
 
@@ -378,12 +346,13 @@ OFCondition DcmSegmentation::addSegment(DcmSegment* seg,
   if (seg == NULL)
     return EC_IllegalParameter;
 
-  if (m_Segments.size() == DCM_SEG_MAX_SEGMENTS)
+  if (m_Segments.size() >= DCM_SEG_MAX_SEGMENTS)
   {
     return SG_EC_MaxSegmentsReached;
   }
 
-  segmentNumber = m_Segments.size() + 1;
+  // Casting is safe since we made sure number of segments fits into 16 bit
+  segmentNumber = OFstatic_cast(Uint16, m_Segments.size() + 1);
   m_Segments.push_back(seg);
   return EC_Normal;
 }
@@ -878,7 +847,8 @@ OFCondition DcmSegmentation::writeDataset(DcmItem& dataset)
 
 OFCondition DcmSegmentation::writeMultiFrameFunctionalGroupsModule(DcmItem& dataset)
 {
-  m_FG.setNumberOfFrames(m_Frames.size());
+  Uint16 numFrames = DcmIODUtil::limitMaxFrames(m_Frames.size(), "More than 65535 frames provided, limiting Number of Frames to 65535");
+  m_FG.setNumberOfFrames(numFrames);
   OFCondition result = m_FG.write(dataset);
   if (result.good())
     m_FGInterface.write(dataset);
@@ -899,12 +869,13 @@ OFCondition DcmSegmentation::writeMultiFrameDimensionModule(DcmItem& dataset)
 
 OFCondition DcmSegmentation::writeFractionalFrames(DcmItem& dataset)
 {
+  Uint16 numFrames = DcmIODUtil::limitMaxFrames(m_Frames.size(), "More than 65535 fractional frames provided, will only write 65535");
   OFCondition result;
   Uint16 rows,cols;
   rows = cols = 0;
   getImagePixel().getRows(rows);
   getImagePixel().getColumns(cols);
-  size_t numBytes = getTotalBytesRequired(rows, cols, m_Frames.size());
+  size_t numBytes = getTotalBytesRequired(rows, cols, numFrames);
   Uint8* pixdata = new Uint8[numBytes];
   OFVector<DcmIODTypes::Frame*>::iterator it = m_Frames.begin();
   // Just copy bytes for each frame as is
@@ -921,12 +892,13 @@ OFCondition DcmSegmentation::writeFractionalFrames(DcmItem& dataset)
 
 OFCondition DcmSegmentation::writeBinaryFrames(DcmItem& dataset)
 {
-  OFCondition result;
-  Uint16 rows,cols;
+  Uint16 numFrames, rows, cols;
   rows = cols = 0;
+  numFrames = DcmIODUtil::limitMaxFrames(m_Frames.size(), "More than 65535 binary frames provided, will only write 65535");
+  OFCondition result;
   getImagePixel().getRows(rows);
   getImagePixel().getColumns(cols);
-  size_t numBytes = getTotalBytesRequired(rows, cols, m_Frames.size());
+  size_t numBytes = getTotalBytesRequired(rows, cols, numFrames);
   // Holds the pixels for all frames. Each bit represents a pixel which is either
   // 1 (part of segment) or 0 (not part of segment. All frames are directly
   // concatenated, i.e. there are no unused bits between the frames.
@@ -1036,7 +1008,7 @@ OFCondition DcmSegmentation::writeSegmentationImageModule(DcmItem& dataset)
 
 void DcmSegmentation::clearData()
 {
-  DcmIODImage::clearData();
+  DcmSegmentation::IODImage::clearData();
   m_FG.clearData();
   m_FGInterface.clear();
   DcmIODUtil::freeContainer(m_Frames);
@@ -1180,9 +1152,9 @@ OFCondition DcmSegmentation::readSegmentationType(DcmItem& item)
 
 
 // protected override of public base class function
-IODImagePixelModule& DcmSegmentation::getImagePixel()
+IODImagePixelModule<Uint8>& DcmSegmentation::getImagePixel()
 {
-  return DcmIODImage::getImagePixel();
+  return *OFget<IODImagePixelModule<Uint8> >( &DcmSegmentation::IODImage::getImagePixel() );
 }
 
 
@@ -1253,7 +1225,7 @@ OFCondition DcmSegmentation::decompress(DcmDataset& dset)
     }
     else // We do not accept any transfer syntax that could be lossy compressed
     {
-      DCMSEG_ERROR("No conversion from RLE original to uncompressed transfer syntax possible!");
+      DCMSEG_ERROR("Transfer syntax " << DcmXfer(xfer).getXferName() << " uses lossy compression, not supported for Segmentation objects!");
       result = IOD_EC_CannotDecompress;
     }
   }
diff --git a/dcmseg/tests/Makefile.in b/dcmseg/tests/Makefile.in
index 515c4db..c899b67 100644
--- a/dcmseg/tests/Makefile.in
+++ b/dcmseg/tests/Makefile.in
@@ -21,7 +21,7 @@ include $(configdir)/@common_makefile@
 
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(ofstddir)/libsrc -L$(oflogdir)/libsrc \
 	-L$(dcmdatadir)/libsrc -L$(dcmioddir)/libsrc -L$(dcmfgdir)/libsrc
-LOCALLIBS = -ldcmseg -ldcmfg -ldcmiod -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(ICONVLIBS)
+LOCALLIBS = -ldcmseg -ldcmfg -ldcmiod -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(CHARCONVLIBS)
 LOCALINCLUDES = -I$(top_srcdir)/include -I$(ofstddir)/include -I$(oflogdir)/include \
 	-I$(dcmdatadir)/include -I$(dcmioddir)/include -I$(dcmfgdir)/include \
 
@@ -34,7 +34,7 @@ progs = tests
 all: $(progs)
 
 tests: $(test_objs)
-	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $(test_objs) $(LOCALLIBS) $(ICONVLIBS) $(LIBS)
+	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $(test_objs) $(LOCALLIBS) $(LIBS)
 
 
 check: tests
diff --git a/dcmsign/apps/Makefile.dep b/dcmsign/apps/Makefile.dep
index c14b759..b044fe0 100644
--- a/dcmsign/apps/Makefile.dep
+++ b/dcmsign/apps/Makefile.dep
@@ -52,8 +52,9 @@ dcmsign.o: dcmsign.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsign/sibrsapr.h ../include/dcmtk/dcmsign/siautopr.h \
  ../include/dcmtk/dcmsign/sicreapr.h ../include/dcmtk/dcmsign/simac.h \
  ../include/dcmtk/dcmsign/simd5.h ../include/dcmtk/dcmsign/sisha1.h \
- ../include/dcmtk/dcmsign/siripemd.h ../include/dcmtk/dcmsign/siprivat.h \
- ../include/dcmtk/dcmsign/sicert.h \
+ ../include/dcmtk/dcmsign/sisha256.h ../include/dcmtk/dcmsign/sisha384.h \
+ ../include/dcmtk/dcmsign/sisha512.h ../include/dcmtk/dcmsign/siripemd.h \
+ ../include/dcmtk/dcmsign/siprivat.h ../include/dcmtk/dcmsign/sicert.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
diff --git a/dcmsign/apps/Makefile.in b/dcmsign/apps/Makefile.in
index 8967a9f..f19ba74 100644
--- a/dcmsign/apps/Makefile.in
+++ b/dcmsign/apps/Makefile.in
@@ -18,7 +18,7 @@ dcmdatadir = $(top_srcdir)/../dcmdata
 
 LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/include
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(ofstddir)/libsrc -L$(oflogdir)/libsrc -L$(dcmdatadir)/libsrc
-LOCALLIBS = -ldcmdsig -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(OPENSSLLIBS) $(ICONVLIBS)
+LOCALLIBS = -ldcmdsig -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(OPENSSLLIBS) $(CHARCONVLIBS)
 
 objs = dcmsign.o
 progs = dcmsign
diff --git a/dcmsign/apps/dcmsign.cc b/dcmsign/apps/dcmsign.cc
index 669ca36..1a0d81e 100644
--- a/dcmsign/apps/dcmsign.cc
+++ b/dcmsign/apps/dcmsign.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2012, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -60,6 +60,9 @@ static OFLogger dcmsignLogger = OFLog::getLogger("dcmtk.apps." OFFIS_CONSOLE_APP
 #include "dcmtk/dcmsign/simac.h"
 #include "dcmtk/dcmsign/simd5.h"
 #include "dcmtk/dcmsign/sisha1.h"
+#include "dcmtk/dcmsign/sisha256.h"
+#include "dcmtk/dcmsign/sisha384.h"
+#include "dcmtk/dcmsign/sisha512.h"
 #include "dcmtk/dcmsign/siripemd.h"
 #include "dcmtk/dcmsign/siprivat.h"
 #include "dcmtk/dcmsign/sicert.h"
@@ -777,6 +780,10 @@ int main(int argc, char *argv[])
       cmd.addOption("--mac-ripemd160",            "+mr",        "use RIPEMD 160 (default)");
       cmd.addOption("--mac-sha1",                 "+ms",        "use SHA-1");
       cmd.addOption("--mac-md5",                  "+mm",        "use MD 5");
+      cmd.addOption("--mac-sha256",               "+m2",        "use SHA-256");
+      cmd.addOption("--mac-sha384",               "+m3",        "use SHA-384");
+      cmd.addOption("--mac-sha512",               "+m5",        "use SHA-512");
+
     cmd.addSubGroup("tag selection:");
       cmd.addOption("--tag",                      "-t",      1, "[t]ag: \"gggg,eeee\" or dictionary name", "sign only specified tag\n(this option can be specified multiple times)");
       cmd.addOption("--tag-file",                 "-tf",     1, "[f]ilename: string", "read list of tags from text file");
@@ -956,6 +963,22 @@ int main(int argc, char *argv[])
       app.checkDependence("--mac-md5", "--sign or --sign-item", (opt_operation == DSO_sign) || (opt_operation == DSO_signItem));
       opt_mac = new SiMD5();
     }
+    if (cmd.findOption("--mac-sha256"))
+    {
+      app.checkDependence("--mac-sha256", "--sign or --sign-item", (opt_operation == DSO_sign) || (opt_operation == DSO_signItem));
+      opt_mac = new SiSHA256();
+    }
+    if (cmd.findOption("--mac-sha384"))
+    {
+      app.checkDependence("--mac-sha384", "--sign or --sign-item", (opt_operation == DSO_sign) || (opt_operation == DSO_signItem));
+      opt_mac = new SiSHA384();
+    }
+    if (cmd.findOption("--mac-sha512"))
+    {
+      app.checkDependence("--mac-sha512", "--sign or --sign-item", (opt_operation == DSO_sign) || (opt_operation == DSO_signItem));
+      opt_mac = new SiSHA512();
+    }
+
     cmd.endOptionBlock();
     if (opt_mac == NULL) opt_mac = new SiRIPEMD160();
 
diff --git a/dcmsign/include/dcmtk/dcmsign/sisha256.h b/dcmsign/include/dcmtk/dcmsign/sisha256.h
new file mode 100644
index 0000000..5620009
--- /dev/null
+++ b/dcmsign/include/dcmtk/dcmsign/sisha256.h
@@ -0,0 +1,96 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsign
+ *
+ *  Author: Marco Eichelberg
+ *
+ *  Purpose:
+ *    classes: SiSHA256
+ *
+ */
+
+#ifndef SISHA256_H
+#define SISHA256_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmsign/simac.h"
+#include "dcmtk/dcmsign/sitypes.h"
+
+#ifdef WITH_OPENSSL
+
+struct SHA256state_st;
+typedef struct SHA256state_st SHA256_CTX;
+
+/**
+ * a class implementing the hash function SHA256
+ */
+class DCMTK_DCMSIGN_EXPORT SiSHA256 : public SiMAC
+{
+public:
+  /// default constructor
+  SiSHA256();
+
+  /// destructor
+  virtual ~SiSHA256();
+
+  /** initializes the MAC algorithm.
+   *  @return status code
+   */
+  virtual OFCondition initialize();
+
+  /** feeds data into the MAC algorithm
+   *  @param data pointer to raw data to be fed into the MAC, must not be NULL
+   *  @param length number of bytes in raw data array
+   *  @return status code
+   */
+  virtual OFCondition digest(const unsigned char *data, unsigned long length);
+
+  /** finalizes the MAC and writes it to the given output array,
+   *  which must be at least getSize() bytes large.
+   *  After a call to finalize, the MAC algorithm must be initialized
+   *  again, see initialize().
+   *  @param result pointer to array of getSize() bytes into which the MAC is written
+   *  @return status code
+   */
+  virtual OFCondition finalize(unsigned char *result);
+
+  /** returns the size of a MAC in bytes.
+   *  @return block size for this MAC algorithm
+   */
+  virtual unsigned long getSize() const;
+
+  /** returns the type of MAC algorithm computed by this object
+   *  @return type of MAC algorithm
+   */
+  virtual E_MACType macType() const;
+
+  /** returns the DICOM identifier for this MAC algorithm
+   *  @return DICOM defined term for algorithm
+   */
+  virtual const char *getDefinedTerm() const;
+
+private:
+
+  /// private undefined copy constructor
+  SiSHA256(SiSHA256& arg);
+
+  /// private undefined copy assignment operator
+  SiSHA256& operator=(SiSHA256& arg);
+
+  /// OpenSSL SHA256 context
+  SHA256_CTX *ctx;
+};
+
+#endif
+#endif
diff --git a/dcmsign/include/dcmtk/dcmsign/sisha384.h b/dcmsign/include/dcmtk/dcmsign/sisha384.h
new file mode 100644
index 0000000..c7dbdb7
--- /dev/null
+++ b/dcmsign/include/dcmtk/dcmsign/sisha384.h
@@ -0,0 +1,96 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsign
+ *
+ *  Author: Marco Eichelberg
+ *
+ *  Purpose:
+ *    classes: SiSHA384
+ *
+ */
+
+#ifndef SISHA384_H
+#define SISHA384_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmsign/simac.h"
+#include "dcmtk/dcmsign/sitypes.h"
+
+#ifdef WITH_OPENSSL
+
+struct SHA512state_st;
+typedef struct SHA512state_st SHA512_CTX;
+
+/**
+ * a class implementing the hash function SHA384
+ */
+class DCMTK_DCMSIGN_EXPORT SiSHA384 : public SiMAC
+{
+public:
+  /// default constructor
+  SiSHA384();
+
+  /// destructor
+  virtual ~SiSHA384();
+
+  /** initializes the MAC algorithm.
+   *  @return status code
+   */
+  virtual OFCondition initialize();
+
+  /** feeds data into the MAC algorithm
+   *  @param data pointer to raw data to be fed into the MAC, must not be NULL
+   *  @param length number of bytes in raw data array
+   *  @return status code
+   */
+  virtual OFCondition digest(const unsigned char *data, unsigned long length);
+
+  /** finalizes the MAC and writes it to the given output array,
+   *  which must be at least getSize() bytes large.
+   *  After a call to finalize, the MAC algorithm must be initialized
+   *  again, see initialize().
+   *  @param result pointer to array of getSize() bytes into which the MAC is written
+   *  @return status code
+   */
+  virtual OFCondition finalize(unsigned char *result);
+
+  /** returns the size of a MAC in bytes.
+   *  @return block size for this MAC algorithm
+   */
+  virtual unsigned long getSize() const;
+
+  /** returns the type of MAC algorithm computed by this object
+   *  @return type of MAC algorithm
+   */
+  virtual E_MACType macType() const;
+
+  /** returns the DICOM identifier for this MAC algorithm
+   *  @return DICOM defined term for algorithm
+   */
+  virtual const char *getDefinedTerm() const;
+
+private:
+
+  /// private undefined copy constructor
+  SiSHA384(SiSHA384& arg);
+
+  /// private undefined copy assignment operator
+  SiSHA384& operator=(SiSHA384& arg);
+
+  /// OpenSSL SHA384 context
+  SHA512_CTX *ctx;
+};
+
+#endif
+#endif
diff --git a/dcmsign/include/dcmtk/dcmsign/sisha512.h b/dcmsign/include/dcmtk/dcmsign/sisha512.h
new file mode 100644
index 0000000..b5d0b14
--- /dev/null
+++ b/dcmsign/include/dcmtk/dcmsign/sisha512.h
@@ -0,0 +1,96 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsign
+ *
+ *  Author: Marco Eichelberg
+ *
+ *  Purpose:
+ *    classes: SiSHA512
+ *
+ */
+
+#ifndef SISHA512_H
+#define SISHA512_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmsign/simac.h"
+#include "dcmtk/dcmsign/sitypes.h"
+
+#ifdef WITH_OPENSSL
+
+struct SHA512state_st;
+typedef struct SHA512state_st SHA512_CTX;
+
+/**
+ * a class implementing the hash function SHA512
+ */
+class DCMTK_DCMSIGN_EXPORT SiSHA512 : public SiMAC
+{
+public:
+  /// default constructor
+  SiSHA512();
+
+  /// destructor
+  virtual ~SiSHA512();
+
+  /** initializes the MAC algorithm.
+   *  @return status code
+   */
+  virtual OFCondition initialize();
+
+  /** feeds data into the MAC algorithm
+   *  @param data pointer to raw data to be fed into the MAC, must not be NULL
+   *  @param length number of bytes in raw data array
+   *  @return status code
+   */
+  virtual OFCondition digest(const unsigned char *data, unsigned long length);
+
+  /** finalizes the MAC and writes it to the given output array,
+   *  which must be at least getSize() bytes large.
+   *  After a call to finalize, the MAC algorithm must be initialized
+   *  again, see initialize().
+   *  @param result pointer to array of getSize() bytes into which the MAC is written
+   *  @return status code
+   */
+  virtual OFCondition finalize(unsigned char *result);
+
+  /** returns the size of a MAC in bytes.
+   *  @return block size for this MAC algorithm
+   */
+  virtual unsigned long getSize() const;
+
+  /** returns the type of MAC algorithm computed by this object
+   *  @return type of MAC algorithm
+   */
+  virtual E_MACType macType() const;
+
+  /** returns the DICOM identifier for this MAC algorithm
+   *  @return DICOM defined term for algorithm
+   */
+  virtual const char *getDefinedTerm() const;
+
+private:
+
+  /// private undefined copy constructor
+  SiSHA512(SiSHA512& arg);
+
+  /// private undefined copy assignment operator
+  SiSHA512& operator=(SiSHA512& arg);
+
+  /// OpenSSL SHA512 context
+  SHA512_CTX *ctx;
+};
+
+#endif
+#endif
diff --git a/dcmsign/include/dcmtk/dcmsign/sitypes.h b/dcmsign/include/dcmtk/dcmsign/sitypes.h
index b74d0bf..7e949c9 100644
--- a/dcmsign/include/dcmtk/dcmsign/sitypes.h
+++ b/dcmsign/include/dcmtk/dcmsign/sitypes.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2012, OFFIS e.V.
+ *  Copyright (C) 1998-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -38,6 +38,9 @@
 #define SI_DEFTERMS_MD5       "MD5"
 #define SI_DEFTERMS_X509CERT  "X509_1993_SIG"
 #define SI_DEFTERMS_CMS_TS    "CMS_TS"
+#define SI_DEFTERMS_SHA256    "SHA256"
+#define SI_DEFTERMS_SHA384    "SHA384"
+#define SI_DEFTERMS_SHA512    "SHA512"
 
 
 /** type of key for public key cryptosystem
@@ -69,9 +72,17 @@ enum E_MACType
   EMT_RIPEMD160,
   
   /// MD5
-  EMT_MD5
-};
+  EMT_MD5,
+
+  /// SHA-256
+  EMT_SHA256,
 
+  /// SHA-384
+  EMT_SHA384,
+
+  /// SHA-512
+  EMT_SHA512
+};
 
 /*
  * specific error conditions for module dcmsign
diff --git a/dcmsign/libsrc/CMakeLists.txt b/dcmsign/libsrc/CMakeLists.txt
index f9484b4..d381281 100644
--- a/dcmsign/libsrc/CMakeLists.txt
+++ b/dcmsign/libsrc/CMakeLists.txt
@@ -1,5 +1,5 @@
 # create library from source files
-DCMTK_ADD_LIBRARY(dcmdsig dcsignat siautopr sibrsapr sicert sicertvf sicreapr sidsa simaccon simd5 sinullpr siprivat siripemd sirsa sisha1 sisprof sitypes)
+DCMTK_ADD_LIBRARY(dcmdsig dcsignat siautopr sibrsapr sicert sicertvf sicreapr sidsa simaccon simd5 sinullpr siprivat siripemd sirsa sisha1 sisprof sitypes sisha256 sisha384 sisha512)
 
 DCMTK_TARGET_LINK_MODULES(dcmdsig ofstd dcmdata)
 DCMTK_TARGET_LINK_LIBRARIES(dcmdsig ${OPENSSL_LIBS})
diff --git a/dcmsign/libsrc/Makefile.dep b/dcmsign/libsrc/Makefile.dep
index 84d73a7..e24c1a1 100644
--- a/dcmsign/libsrc/Makefile.dep
+++ b/dcmsign/libsrc/Makefile.dep
@@ -74,7 +74,9 @@ dcsignat.o: dcsignat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../include/dcmtk/dcmsign/simd5.h ../include/dcmtk/dcmsign/siprivat.h \
  ../include/dcmtk/dcmsign/siripemd.h ../include/dcmtk/dcmsign/sisha1.h \
- ../include/dcmtk/dcmsign/sisprof.h ../include/dcmtk/dcmsign/sitstamp.h
+ ../include/dcmtk/dcmsign/sisha256.h ../include/dcmtk/dcmsign/sisha384.h \
+ ../include/dcmtk/dcmsign/sisha512.h ../include/dcmtk/dcmsign/sisprof.h \
+ ../include/dcmtk/dcmsign/sitstamp.h
 siautopr.o: siautopr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsign/siautopr.h ../include/dcmtk/dcmsign/sibrsapr.h \
  ../include/dcmtk/dcmsign/sisprof.h ../include/dcmtk/dcmsign/sitypes.h \
@@ -496,6 +498,48 @@ sisha1.o: sisha1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsign/sidefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h
+sisha256.o: sisha256.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsign/sisha256.h ../include/dcmtk/dcmsign/simac.h \
+ ../include/dcmtk/dcmsign/sitypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../include/dcmtk/dcmsign/sidefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h
+sisha384.o: sisha384.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsign/sisha384.h ../include/dcmtk/dcmsign/simac.h \
+ ../include/dcmtk/dcmsign/sitypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../include/dcmtk/dcmsign/sidefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h
+sisha512.o: sisha512.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsign/sisha512.h ../include/dcmtk/dcmsign/simac.h \
+ ../include/dcmtk/dcmsign/sitypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../include/dcmtk/dcmsign/sidefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h
 sisprof.o: sisprof.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsign/sisprof.h ../include/dcmtk/dcmsign/sitypes.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
diff --git a/dcmsign/libsrc/Makefile.in b/dcmsign/libsrc/Makefile.in
index 0257401..4576b16 100644
--- a/dcmsign/libsrc/Makefile.in
+++ b/dcmsign/libsrc/Makefile.in
@@ -21,7 +21,7 @@ LOCALDEFS =
 
 objs = dcsignat.o sicert.o sidsa.o simd5.o siprivat.o sirsa.o sisprof.o \
 	siautopr.o sicreapr.o simaccon.o sinullpr.o siripemd.o sisha1.o \
-	sitypes.o sicertvf.o sibrsapr.o
+	sitypes.o sicertvf.o sibrsapr.o sisha256.o sisha384.o sisha512.o
 library = libdcmdsig.$(LIBEXT)
 
 
diff --git a/dcmsign/libsrc/dcsignat.cc b/dcmsign/libsrc/dcsignat.cc
index 07399eb..5c0caf2 100644
--- a/dcmsign/libsrc/dcsignat.cc
+++ b/dcmsign/libsrc/dcsignat.cc
@@ -45,6 +45,9 @@
 #include "dcmtk/dcmsign/siprivat.h"
 #include "dcmtk/dcmsign/siripemd.h"
 #include "dcmtk/dcmsign/sisha1.h"
+#include "dcmtk/dcmsign/sisha256.h"
+#include "dcmtk/dcmsign/sisha384.h"
+#include "dcmtk/dcmsign/sisha512.h"
 #include "dcmtk/dcmsign/sisprof.h"
 #include "dcmtk/dcmsign/sitstamp.h"
 
@@ -615,6 +618,9 @@ OFCondition DcmSignature::verifyCurrent()
         if (macidentifier == SI_DEFTERMS_RIPEMD160) mac = new SiRIPEMD160();
         else if (macidentifier == SI_DEFTERMS_SHA1) mac = new SiSHA1();
         else if (macidentifier == SI_DEFTERMS_MD5)  mac = new SiMD5();
+        else if (macidentifier == SI_DEFTERMS_SHA256) mac = new SiSHA256();
+        else if (macidentifier == SI_DEFTERMS_SHA384) mac = new SiSHA384();
+        else if (macidentifier == SI_DEFTERMS_SHA512) mac = new SiSHA512();
         if (mac == NULL) result = SI_EC_VerificationFailed_UnsupportedMACAlgorithm;
       } else result = SI_EC_VerificationFailed_NoMAC;
     } else result = SI_EC_VerificationFailed_NoMAC;
diff --git a/dcmsign/libsrc/sicert.cc b/dcmsign/libsrc/sicert.cc
index 1f03b5a..ea025fc 100644
--- a/dcmsign/libsrc/sicert.cc
+++ b/dcmsign/libsrc/sicert.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2010, OFFIS e.V.
+ *  Copyright (C) 1998-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -39,6 +39,10 @@ BEGIN_EXTERN_C
 #include <openssl/pem.h>
 END_EXTERN_C
 
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+#define EVP_PKEY_id(key) key->type
+#endif
+
 SiCertificate::SiCertificate()
 : x509(NULL)
 {
@@ -57,7 +61,7 @@ E_KeyType SiCertificate::getKeyType()
     EVP_PKEY *pkey = X509_extract_key(x509);
     if (pkey)
     {
-      switch(pkey->type)
+      switch(EVP_PKEY_id(pkey))
       {
         case EVP_PKEY_RSA:
           result = EKT_RSA;
@@ -85,7 +89,7 @@ SiAlgorithm *SiCertificate::createAlgorithmForPublicKey()
     EVP_PKEY *pkey = X509_extract_key(x509);
     if (pkey)
     {
-      switch(pkey->type)
+      switch(EVP_PKEY_id(pkey))
       {
         case EVP_PKEY_RSA:
           return new SiRSA(EVP_PKEY_get1_RSA(pkey));
@@ -111,7 +115,7 @@ OFCondition SiCertificate::loadCertificate(const char *filename, int filetype)
   x509 = NULL;
   if (filename)
   {
-    BIO *in = BIO_new(BIO_s_file_internal());
+    BIO *in = BIO_new(BIO_s_file());
     if (in)
     {
       if (BIO_read_filename(in, filename) > 0)
diff --git a/dcmsign/libsrc/sicertvf.cc b/dcmsign/libsrc/sicertvf.cc
index 6b76b9d..493840c 100644
--- a/dcmsign/libsrc/sicertvf.cc
+++ b/dcmsign/libsrc/sicertvf.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2010, OFFIS e.V.
+ *  Copyright (C) 1998-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -72,7 +72,7 @@ OFCondition SiCertificateVerifier::addCertificateRevocationList(const char *file
   X509_CRL *x509crl = NULL;
   if (fileName)
   {
-    BIO *in = BIO_new(BIO_s_file_internal());
+    BIO *in = BIO_new(BIO_s_file());
     if (in)
     {
       if (BIO_read_filename(in, fileName) > 0)
@@ -107,11 +107,13 @@ OFCondition SiCertificateVerifier::verifyCertificate(SiCertificate& certificate)
   X509 *rawcert = certificate.getRawCertificate();
   if (rawcert == NULL) return SI_EC_VerificationFailed_NoCertificate;
 
-  X509_STORE_CTX ctx;
-  X509_STORE_CTX_init(&ctx, x509store, rawcert, NULL);
-  int ok = X509_verify_cert(&ctx); /* returns nonzero if successful */
-  errorCode = X509_STORE_CTX_get_error(&ctx);
-  X509_STORE_CTX_cleanup(&ctx);
+  X509_STORE_CTX *ctx = X509_STORE_CTX_new();
+  X509_STORE_CTX_init(ctx, x509store, rawcert, NULL);
+  int ok = X509_verify_cert(ctx); /* returns nonzero if successful */
+  errorCode = X509_STORE_CTX_get_error(ctx);
+  X509_STORE_CTX_cleanup(ctx);
+  X509_STORE_CTX_free(ctx);
+
   if (ok) return EC_Normal; else return SI_EC_VerificationFailed_NoTrust;
 }
 
diff --git a/dcmsign/libsrc/sidsa.cc b/dcmsign/libsrc/sidsa.cc
index 5a79145..a2dc384 100644
--- a/dcmsign/libsrc/sidsa.cc
+++ b/dcmsign/libsrc/sidsa.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2010, OFFIS e.V.
+ *  Copyright (C) 1998-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -66,6 +66,15 @@ OFCondition SiDSA::sign(
       case EMT_MD5:
         openSSLmac = NID_md5;
         break;
+      case EMT_SHA256:
+        openSSLmac = NID_sha256;
+        break;
+      case EMT_SHA384:
+        openSSLmac = NID_sha384;
+        break;
+      case EMT_SHA512:
+        openSSLmac = NID_sha512;
+        break;
     }
     unsigned int sigLen = 0;
     int error = DSA_sign(openSSLmac, inputHash, (unsigned int)inputHashSize, outputSignature, &sigLen, dsa);
@@ -97,6 +106,15 @@ OFCondition SiDSA::verify(
       case EMT_MD5:
         openSSLmac = NID_md5;
         break;
+      case EMT_SHA256:
+        openSSLmac = NID_sha256;
+        break;
+      case EMT_SHA384:
+        openSSLmac = NID_sha384;
+        break;
+      case EMT_SHA512:
+        openSSLmac = NID_sha512;
+        break;
     }
 
     // we have to cast away const on inputSignature yet because of OpenSSL limitations
diff --git a/dcmsign/libsrc/siprivat.cc b/dcmsign/libsrc/siprivat.cc
index 2bf6068..7a092a4 100644
--- a/dcmsign/libsrc/siprivat.cc
+++ b/dcmsign/libsrc/siprivat.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2011, OFFIS e.V.
+ *  Copyright (C) 1998-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -38,6 +38,9 @@ BEGIN_EXTERN_C
 #include <openssl/pem.h>
 END_EXTERN_C
 
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+#define EVP_PKEY_id(key) key->type
+#endif
 
 /* buf     : buffer to write password into
  * size    : length of buffer in bytes
@@ -96,7 +99,7 @@ OFCondition SiPrivateKey::loadPrivateKey(const char *filename, int filetype)
   pkey = NULL;
   if (filename)
   {
-    BIO *in = BIO_new(BIO_s_file_internal());
+    BIO *in = BIO_new(BIO_s_file());
     if (in)
     {
       if (BIO_read_filename(in, filename) > 0)
@@ -125,7 +128,7 @@ E_KeyType SiPrivateKey::getKeyType() const
   E_KeyType result = EKT_none;
   if (pkey)
   {
-    switch(pkey->type)
+    switch(EVP_PKEY_id(pkey))
     {
       case EVP_PKEY_RSA:
         result = EKT_RSA;
@@ -149,7 +152,7 @@ SiAlgorithm *SiPrivateKey::createAlgorithmForPrivateKey()
 {
   if (pkey)
   {
-    switch(pkey->type)
+    switch(EVP_PKEY_id(pkey))
     {
       case EVP_PKEY_RSA:
         return new SiRSA(EVP_PKEY_get1_RSA(pkey));
diff --git a/dcmsign/libsrc/sirsa.cc b/dcmsign/libsrc/sirsa.cc
index 85a8df5..ab7605a 100644
--- a/dcmsign/libsrc/sirsa.cc
+++ b/dcmsign/libsrc/sirsa.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2010, OFFIS e.V.
+ *  Copyright (C) 1998-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -65,6 +65,15 @@ OFCondition SiRSA::sign(
       case EMT_MD5:
         openSSLmac = NID_md5;
         break;
+      case EMT_SHA256:
+        openSSLmac = NID_sha256;
+        break;
+      case EMT_SHA384:
+        openSSLmac = NID_sha384;
+        break;
+      case EMT_SHA512:
+        openSSLmac = NID_sha512;
+        break;
     }
     unsigned int sigLen = 0;
     // we have to cast away const on inputHash yet because of OpenSSL limitations
@@ -98,6 +107,15 @@ OFCondition SiRSA::verify(
       case EMT_MD5:
         openSSLmac = NID_md5;
         break;
+      case EMT_SHA256:
+        openSSLmac = NID_sha256;
+        break;
+      case EMT_SHA384:
+        openSSLmac = NID_sha384;
+        break;
+      case EMT_SHA512:
+        openSSLmac = NID_sha512;
+        break;
     }
     // we have to cast away const on inputHash yet because of OpenSSL limitations
     // we have to cast away const on inputSignature yet because of OpenSSL limitations
diff --git a/dcmsign/libsrc/sisha256.cc b/dcmsign/libsrc/sisha256.cc
new file mode 100644
index 0000000..0900ec7
--- /dev/null
+++ b/dcmsign/libsrc/sisha256.cc
@@ -0,0 +1,89 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsign
+ *
+ *  Author: Marco Eichelberg
+ *
+ *  Purpose:
+ *    classes: SiSHA256
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+
+#ifdef WITH_OPENSSL
+
+#include "dcmtk/dcmsign/sisha256.h"
+#include "dcmtk/dcmdata/dcerror.h"
+
+#define INCLUDE_CSTDLIB
+#include "dcmtk/ofstd/ofstdinc.h"
+
+BEGIN_EXTERN_C
+#include <openssl/sha.h>
+END_EXTERN_C
+
+ 
+SiSHA256::SiSHA256()
+: ctx(new SHA256_CTX())
+{
+  initialize();
+}
+
+SiSHA256::~SiSHA256()
+{
+  delete ctx;
+}
+
+unsigned long SiSHA256::getSize() const
+{
+  return SHA256_DIGEST_LENGTH;
+}
+
+OFCondition SiSHA256::initialize()
+{
+  SHA256_Init(ctx);
+  return EC_Normal;
+}
+
+OFCondition SiSHA256::digest(const unsigned char *data, unsigned long length)
+{
+  if (length == 0) return EC_Normal;
+  if ((data == NULL)||(ctx == NULL)) return EC_IllegalCall;
+  SHA256_Update(ctx, data, length);
+  return EC_Normal;
+}
+
+OFCondition SiSHA256::finalize(unsigned char *result)
+{
+  if ((result == NULL)||(ctx == NULL)) return EC_IllegalCall;
+  SHA256_Final(result, ctx);
+  return EC_Normal;  
+}
+
+E_MACType SiSHA256::macType() const
+{
+  return EMT_SHA256;
+}
+
+const char *SiSHA256::getDefinedTerm() const
+{
+  return SI_DEFTERMS_SHA256;
+}
+
+#else /* WITH_OPENSSL */
+
+int sisha256_cc_dummy_to_keep_linker_from_moaning = 0;
+
+#endif
diff --git a/dcmsign/libsrc/sisha384.cc b/dcmsign/libsrc/sisha384.cc
new file mode 100644
index 0000000..797c619
--- /dev/null
+++ b/dcmsign/libsrc/sisha384.cc
@@ -0,0 +1,89 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsign
+ *
+ *  Author: Marco Eichelberg
+ *
+ *  Purpose:
+ *    classes: SiSHA384
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+
+#ifdef WITH_OPENSSL
+
+#include "dcmtk/dcmsign/sisha384.h"
+#include "dcmtk/dcmdata/dcerror.h"
+
+#define INCLUDE_CSTDLIB
+#include "dcmtk/ofstd/ofstdinc.h"
+
+BEGIN_EXTERN_C
+#include <openssl/sha.h>
+END_EXTERN_C
+
+ 
+SiSHA384::SiSHA384()
+: ctx(new SHA512_CTX())
+{
+  initialize();
+}
+
+SiSHA384::~SiSHA384()
+{
+  delete ctx;
+}
+
+unsigned long SiSHA384::getSize() const
+{
+  return SHA_DIGEST_LENGTH;
+}
+
+OFCondition SiSHA384::initialize()
+{
+  SHA384_Init(ctx);
+  return EC_Normal;
+}
+
+OFCondition SiSHA384::digest(const unsigned char *data, unsigned long length)
+{
+  if (length == 0) return EC_Normal;
+  if ((data == NULL)||(ctx == NULL)) return EC_IllegalCall;
+  SHA384_Update(ctx, data, length);
+  return EC_Normal;
+}
+
+OFCondition SiSHA384::finalize(unsigned char *result)
+{
+  if ((result == NULL)||(ctx == NULL)) return EC_IllegalCall;
+  SHA384_Final(result, ctx);
+  return EC_Normal;  
+}
+
+E_MACType SiSHA384::macType() const
+{
+  return EMT_SHA384;
+}
+
+const char *SiSHA384::getDefinedTerm() const
+{
+  return SI_DEFTERMS_SHA384;
+}
+
+#else /* WITH_OPENSSL */
+
+int sisha384_cc_dummy_to_keep_linker_from_moaning = 0;
+
+#endif
diff --git a/dcmsign/libsrc/sisha512.cc b/dcmsign/libsrc/sisha512.cc
new file mode 100644
index 0000000..3b08cf1
--- /dev/null
+++ b/dcmsign/libsrc/sisha512.cc
@@ -0,0 +1,89 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsign
+ *
+ *  Author: Marco Eichelberg
+ *
+ *  Purpose:
+ *    classes: SiSHA512
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+
+#ifdef WITH_OPENSSL
+
+#include "dcmtk/dcmsign/sisha512.h"
+#include "dcmtk/dcmdata/dcerror.h"
+
+#define INCLUDE_CSTDLIB
+#include "dcmtk/ofstd/ofstdinc.h"
+
+BEGIN_EXTERN_C
+#include <openssl/sha.h>
+END_EXTERN_C
+
+ 
+SiSHA512::SiSHA512()
+: ctx(new SHA512_CTX())
+{
+  initialize();
+}
+
+SiSHA512::~SiSHA512()
+{
+  delete ctx;
+}
+
+unsigned long SiSHA512::getSize() const
+{
+  return SHA512_DIGEST_LENGTH;
+}
+
+OFCondition SiSHA512::initialize()
+{
+  SHA512_Init(ctx);
+  return EC_Normal;
+}
+
+OFCondition SiSHA512::digest(const unsigned char *data, unsigned long length)
+{
+  if (length == 0) return EC_Normal;
+  if ((data == NULL)||(ctx == NULL)) return EC_IllegalCall;
+  SHA512_Update(ctx, data, length);
+  return EC_Normal;
+}
+
+OFCondition SiSHA512::finalize(unsigned char *result)
+{
+  if ((result == NULL)||(ctx == NULL)) return EC_IllegalCall;
+  SHA512_Final(result, ctx);
+  return EC_Normal;  
+}
+
+E_MACType SiSHA512::macType() const
+{
+  return EMT_SHA512;
+}
+
+const char *SiSHA512::getDefinedTerm() const
+{
+  return SI_DEFTERMS_SHA512;
+}
+
+#else /* WITH_OPENSSL */
+
+int sisha512_cc_dummy_to_keep_linker_from_moaning = 0;
+
+#endif
diff --git a/dcmsign/libsrc/sitypes.cc b/dcmsign/libsrc/sitypes.cc
index b6d6278..26d62db 100644
--- a/dcmsign/libsrc/sitypes.cc
+++ b/dcmsign/libsrc/sitypes.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2012, OFFIS e.V.
+ *  Copyright (C) 1998-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -39,7 +39,7 @@ makeOFConditionConst(SI_EC_TransferSyntaxDoesNotMatchProfile,          OFM_dcmsi
 makeOFConditionConst(SI_EC_VerificationFailed_NoCertificate,           OFM_dcmsign, 10, OF_error, "signature verification failed: certificate is missing or unreadable");
 makeOFConditionConst(SI_EC_VerificationFailed_NoMAC,                   OFM_dcmsign, 11, OF_error, "signature verification failed: MAC parameters not be found or incomplete");
 makeOFConditionConst(SI_EC_VerificationFailed_NoSignature,             OFM_dcmsign, 12, OF_error, "signature verification failed: signature item incomplete");
-makeOFConditionConst(SI_EC_VerificationFailed_UnsupportedMACAlgorithm, OFM_dcmsign, 13, OF_error, "signature verification failed: the MAC algorithm not supported");
+makeOFConditionConst(SI_EC_VerificationFailed_UnsupportedMACAlgorithm, OFM_dcmsign, 13, OF_error, "signature verification failed: MAC algorithm not supported");
 makeOFConditionConst(SI_EC_VerificationFailed_Corrupted,               OFM_dcmsign, 14, OF_error, "signature verification failed: signature is invalid (document corrupted)");
 makeOFConditionConst(SI_EC_VerificationFailed_NoTrust,                 OFM_dcmsign, 16, OF_error, "signature verification failed: certificate issued by unknown CA");
 
diff --git a/dcmsr/apps/Makefile.in b/dcmsr/apps/Makefile.in
index cfdd8e7..6de5159 100644
--- a/dcmsr/apps/Makefile.in
+++ b/dcmsr/apps/Makefile.in
@@ -23,7 +23,7 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/incl
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(ofstddir)/libsrc -L$(oflogdir)/libsrc \
 	-L$(dcmdatadir)/libsrc -L$(dcmimgledir)/libsrc -L$(dcmimagedir)/libsrc
 LOCALLIBS = -ldcmsr -ldcmimage -ldcmimgle -ldcmdata -loflog -lofstd $(TIFFLIBS) \
-	$(PNGLIBS) $(XMLLIBS) $(ZLIBLIBS) $(ICONVLIBS)
+	$(PNGLIBS) $(XMLLIBS) $(ZLIBLIBS) $(CHARCONVLIBS)
 
 objs = dsrdump.o dsr2html.o dsr2xml.o xml2dsr.o
 progs = dsrdump dsr2html dsr2xml xml2dsr
diff --git a/dcmsr/apps/dsr2html.cc b/dcmsr/apps/dsr2html.cc
index 4a7f77e..25395d9 100644
--- a/dcmsr/apps/dsr2html.cc
+++ b/dcmsr/apps/dsr2html.cc
@@ -33,7 +33,7 @@
 #ifdef WITH_ZLIB
 #include <zlib.h>                     /* for zlibVersion() */
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
 #include "dcmtk/ofstd/ofchrenc.h"     /* for OFCharacterEncoding */
 #endif
 
@@ -82,7 +82,7 @@ static OFCondition renderFile(STD_NAMESPACE ostream &out,
     } else
         result = EC_MemoryExhausted;
 
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
     /* convert all DICOM strings to UTF-8 (if requested) */
     if (result.good() && convertToUTF8)
     {
@@ -216,7 +216,7 @@ int main(int argc, char *argv[])
         cmd.addOption("--charset-assume",       "+Ca", 1, "[c]harset: string",
                                                           "assume charset c if no extended charset declared");
         cmd.addOption("--charset-check-all",              "check all data elements with string values\n(default: only PN, LO, LT, SH, ST, UC and UT)");
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
         cmd.addOption("--convert-to-utf8",      "+U8",    "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
 #endif
     cmd.addGroup("output options:");
@@ -260,7 +260,7 @@ int main(int argc, char *argv[])
             {
                 app.printHeader(OFTrue /*print host identifier*/);
                 COUT << OFendl << "External libraries used:";
-#if !defined(WITH_ZLIB) && !defined(WITH_LIBICONV)
+#if !defined(WITH_ZLIB) && !defined(DCMTK_ENABLE_CHARSET_CONVERSION)
                 COUT << " none" << OFendl;
 #else
                 COUT << OFendl;
@@ -268,7 +268,7 @@ int main(int argc, char *argv[])
 #ifdef WITH_ZLIB
                 COUT << "- ZLIB, Version " << zlibVersion() << OFendl;
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
                 COUT << "- " << OFCharacterEncoding::getLibraryVersionString() << OFendl;
 #endif
                 return 0;
@@ -338,7 +338,7 @@ int main(int argc, char *argv[])
         cmd.endOptionBlock();
         if (cmd.findOption("--charset-check-all"))
             opt_checkAllStrings = OFTrue;
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
         if (cmd.findOption("--convert-to-utf8"))
             opt_convertToUTF8 = OFTrue;
 #endif
diff --git a/dcmsr/apps/dsr2xml.cc b/dcmsr/apps/dsr2xml.cc
index fa8137e..85bc0b4 100644
--- a/dcmsr/apps/dsr2xml.cc
+++ b/dcmsr/apps/dsr2xml.cc
@@ -33,7 +33,7 @@
 #ifdef WITH_ZLIB
 #include <zlib.h>                     /* for zlibVersion() */
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
 #include "dcmtk/ofstd/ofchrenc.h"     /* for OFCharacterEncoding */
 #endif
 
@@ -120,7 +120,7 @@ int main(int argc, char *argv[])
     E_FileReadMode opt_readMode = ERM_autoDetect;
     E_TransferSyntax opt_ixfer = EXS_Unknown;
     OFBool opt_checkAllStrings = OFFalse;
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
     OFBool opt_convertToUTF8 = OFFalse;
 #endif
 
@@ -162,7 +162,7 @@ int main(int argc, char *argv[])
         cmd.addOption("--charset-assume",       "+Ca", 1, "[c]harset: string",
                                                           "assume charset c if no extended charset declared");
         cmd.addOption("--charset-check-all",    "+Cc",    "check all data elements with string values\n(default: only PN, LO, LT, SH, ST, UC and UT)");
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
         cmd.addOption("--convert-to-utf8",      "+U8",    "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
 #endif
     cmd.addGroup("output options:");
@@ -192,7 +192,7 @@ int main(int argc, char *argv[])
             {
                 app.printHeader(OFTrue /*print host identifier*/);
                 COUT << OFendl << "External libraries used:";
-#if !defined(WITH_ZLIB) && !defined(WITH_LIBICONV)
+#if !defined(WITH_ZLIB) && !defined(DCMTK_ENABLE_CHARSET_CONVERSION)
                 COUT << " none" << OFendl;
 #else
                 COUT << OFendl;
@@ -200,7 +200,7 @@ int main(int argc, char *argv[])
 #ifdef WITH_ZLIB
                 COUT << "- ZLIB, Version " << zlibVersion() << OFendl;
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
                 COUT << "- " << OFCharacterEncoding::getLibraryVersionString() << OFendl;
 #endif
                 return 0;
@@ -260,7 +260,7 @@ int main(int argc, char *argv[])
         cmd.endOptionBlock();
         if (cmd.findOption("--charset-check-all"))
             opt_checkAllStrings = OFTrue;
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
         if (cmd.findOption("--convert-to-utf8"))
             opt_convertToUTF8 = OFTrue;
 #endif
@@ -354,7 +354,7 @@ int main(int argc, char *argv[])
                 else if (charset == "hebrew")
                     opt_defaultCharset = "ISO_IR 138";
             }
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
             /* convert all DICOM strings to UTF-8 (if requested) */
             if (opt_convertToUTF8)
             {
diff --git a/dcmsr/apps/dsrdump.cc b/dcmsr/apps/dsrdump.cc
index 8bdad9e..c73e59a 100644
--- a/dcmsr/apps/dsrdump.cc
+++ b/dcmsr/apps/dsrdump.cc
@@ -33,7 +33,7 @@
 #ifdef WITH_ZLIB
 #include <zlib.h>                     /* for zlibVersion() */
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
 #include "dcmtk/ofstd/ofchrenc.h"     /* for OFCharacterEncoding */
 #endif
 
@@ -83,7 +83,7 @@ static OFCondition dumpFile(STD_NAMESPACE ostream &out,
     } else
         result = EC_MemoryExhausted;
 
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
     if (result.good())
     {
         if (convertToUTF8)
@@ -173,7 +173,7 @@ int main(int argc, char *argv[])
         cmd.addOption("--ignore-item-errors",   "-Ee",  "do not abort on content item errors, just warn\n(e.g. missing value type specific attributes)");
         cmd.addOption("--skip-invalid-items",   "-Ei",  "skip invalid content items (incl. sub-tree)");
         cmd.addOption("--disable-vr-checker",   "-Dv",  "disable check for VR-conformant string values");
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
       cmd.addSubGroup("specific character set:");
         cmd.addOption("--convert-to-utf8",      "+U8",  "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
 #endif
@@ -215,7 +215,7 @@ int main(int argc, char *argv[])
             {
                 app.printHeader(OFTrue /*print host identifier*/);
                 COUT << OFendl << "External libraries used:";
-#if !defined(WITH_ZLIB) && !defined(WITH_LIBICONV)
+#if !defined(WITH_ZLIB) && !defined(DCMTK_ENABLE_CHARSET_CONVERSION)
                 COUT << " none" << OFendl;
 #else
                 COUT << OFendl;
@@ -223,7 +223,7 @@ int main(int argc, char *argv[])
 #ifdef WITH_ZLIB
                 COUT << "- ZLIB, Version " << zlibVersion() << OFendl;
 #endif
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
                 COUT << "- " << OFCharacterEncoding::getLibraryVersionString() << OFendl;
 #endif
                 return 0;
@@ -280,7 +280,7 @@ int main(int argc, char *argv[])
             opt_readFlags |= DSRTypes::RF_skipInvalidContentItems;
         if (cmd.findOption("--disable-vr-checker"))
             dcmEnableVRCheckerForStringValues.set(OFFalse);
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
         if (cmd.findOption("--convert-to-utf8")) opt_convertToUTF8 = OFTrue;
 #endif
 
diff --git a/dcmsr/apps/xml2dsr.cc b/dcmsr/apps/xml2dsr.cc
index 9937499..d6fae3e 100644
--- a/dcmsr/apps/xml2dsr.cc
+++ b/dcmsr/apps/xml2dsr.cc
@@ -175,13 +175,22 @@ int main(int argc, char *argv[])
             opt_readFlags |= DSRTypes::XF_useDcmsrNamespace;
 
         if (cmd.findOption("--generate-new-uids"))
+        {
             opt_generateUIDs = OFTrue;
+            opt_readFlags |= DSRTypes::XF_acceptEmptyStudySeriesInstanceUID;
+        }
 
         cmd.beginOptionBlock();
         if (cmd.findOption("--dont-overwrite-uids"))
+        {
+            app.checkDependence("--dont-overwrite-uids", "--generate-new-uids", opt_generateUIDs);
             opt_overwriteUIDs = OFFalse;
+        }
         if (cmd.findOption("--overwrite-uids"))
+        {
+            app.checkDependence("--overwrite-uids", "--generate-new-uids", opt_generateUIDs);
             opt_overwriteUIDs = OFTrue;
+        }
         cmd.endOptionBlock();
 
         /* output options */
diff --git a/dcmsr/data/dsr2xml.xsd b/dcmsr/data/dsr2xml.xsd
index 812814c..b9cc3bd 100644
--- a/dcmsr/data/dsr2xml.xsd
+++ b/dcmsr/data/dsr2xml.xsd
@@ -10,7 +10,7 @@
   <xsd:annotation>
     <xsd:documentation xml:lang="en">
       XML Schema for DCMTK tools dsr2xml and xml2dsr.
-      Copyright (C) 2003-2015, OFFIS e.V.
+      Copyright (C) 2003-2016, OFFIS e.V.
       All rights reserved.  See COPYRIGHT file for details.
     </xsd:documentation>
   </xsd:annotation>
@@ -25,6 +25,7 @@
     <xsd:sequence>
       <xsd:element name="sopclass" type="dsr:SOPClass"/>
       <xsd:element name="charset" type="dsr:Charset" minOccurs="0"/>
+      <xsd:element name="timezone" type="dsr:Timezone" minOccurs="0"/>
       <xsd:element name="modality" type="dsr:Modality" minOccurs="0"/>
       <xsd:choice>
         <xsd:element name="manufacturer" type="xsd:string" minOccurs="0"/>
@@ -40,7 +41,7 @@
       <xsd:element name="reference" type="dsr:Reference" minOccurs="0"/>
       <xsd:element name="document" type="dsr:Document"/>
     </xsd:sequence>
-    <xsd:attribute name="type" type="dsr:ReportType" use="required"/>
+    <xsd:attribute name="type" type="dsr:ReportType"/>
   </xsd:complexType>
 
   <!-- Complex Types (2nd level) -->
@@ -714,7 +715,15 @@
       <xsd:enumeration value="Chest CAD SR"/>
       <xsd:enumeration value="Colon CAD SR"/>
       <xsd:enumeration value="Procedure Log"/>
-      <xsd:enumeration value="X-Ray Radiation Dose SR Document"/>
+      <xsd:enumeration value="X-Ray Radiation Dose SR"/>
+      <xsd:enumeration value="Spectacle Prescription Report"/>
+      <xsd:enumeration value="Macular Grid Thickness and Volume Report"/>
+      <xsd:enumeration value="Implantation Plan SR Document"/>
+      <xsd:enumeration value="Comprehensive 3D SR"/>
+      <xsd:enumeration value="Radiopharmaceutical Radiation Dose SR"/>
+      <xsd:enumeration value="Extensible SR"/>
+      <xsd:enumeration value="Acquisition Context SR"/>
+      <xsd:enumeration value="Simplified Adult Echo SR"/>
     </xsd:restriction>
   </xsd:simpleType>
 
@@ -817,8 +826,12 @@
       <xsd:enumeration value="ISO_IR 126"/>
       <xsd:enumeration value="ISO_IR 138"/>
       <xsd:enumeration value="ISO_IR 148"/>
-      <xsd:enumeration value="ISO_IR 13"/>
       <xsd:enumeration value="ISO_IR 166"/>
+      <xsd:enumeration value="ISO 2022 IR 13\ISO 2022 IR 87"/>
+      <xsd:enumeration value="ISO 2022 IR 6\ISO 2022 IR 149"/>
+      <xsd:enumeration value="ISO 2022 IR 6\ISO 2022 IR 58"/>
+      <xsd:enumeration value="GB18030"/>
+      <xsd:enumeration value="GBK"/>
       <xsd:enumeration value="ISO_IR 192"/>
     </xsd:restriction>
   </xsd:simpleType>
@@ -944,6 +957,12 @@
 
   <!-- Other Data Types -->
 
+  <xsd:simpleType name="Timezone">
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="[\-+][0-9]{4}"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
   <xsd:simpleType name="IntegerList">
     <xsd:restriction base="xsd:string">
       <xsd:pattern value="\d+(,\d+)*"/>
diff --git a/dcmsr/docs/dsr2html.man b/dcmsr/docs/dsr2html.man
index bb49cfc..809fbdc 100644
--- a/dcmsr/docs/dsr2html.man
+++ b/dcmsr/docs/dsr2html.man
@@ -145,7 +145,8 @@ specific character set:
          convert all element values that are affected
          by Specific Character Set (0008,0005) to UTF-8
 
-         # requires support from the libiconv toolkit
+         # requires support from an underlying character encoding library
+         # (see output of --version on which one is available)
 \endverbatim
 
 \subsection output_options output options
@@ -245,6 +246,8 @@ XRayRadiationDoseSRStorage                  1.2.840.10008.5.1.4.1.1.88.67
 RadiopharmaceuticalRadiationDoseSRStorage   1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                           1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage           1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                 1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                1.2.840.10008.5.1.4.1.1.88.72
 \endverbatim
 
 \subsection character_encoding Character Encoding
@@ -350,6 +353,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2000-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmsr/docs/dsr2xml.man b/dcmsr/docs/dsr2xml.man
index c235c01..83e8b0b 100644
--- a/dcmsr/docs/dsr2xml.man
+++ b/dcmsr/docs/dsr2xml.man
@@ -141,7 +141,8 @@ specific character set:
          convert all element values that are affected
          by Specific Character Set (0008,0005) to UTF-8
 
-         # requires support from the libiconv toolkit
+         # requires support from an underlying character encoding library
+         # (see output of --version on which one is available)
 \endverbatim
 
 \subsection output_options output options
@@ -211,6 +212,8 @@ XRayRadiationDoseSRStorage                  1.2.840.10008.5.1.4.1.1.88.67
 RadiopharmaceuticalRadiationDoseSRStorage   1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                           1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage           1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                 1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                1.2.840.10008.5.1.4.1.1.88.72
 \endverbatim
 
 Please note that currently only mandatory and some optional attributes are
@@ -333,6 +336,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2000-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmsr/docs/dsrdump.man b/dcmsr/docs/dsrdump.man
index 6aa4d00..b2f51ed 100644
--- a/dcmsr/docs/dsrdump.man
+++ b/dcmsr/docs/dsrdump.man
@@ -129,7 +129,8 @@ specific character set:
           convert all element values that are affected
           by Specific Character Set (0008,0005) to UTF-8
 
-          # requires support from the libiconv toolkit
+          # requires support from an underlying character encoding library
+          # (see output of --version on which one is available)
 \endverbatim
 
 \subsection output_options output options
@@ -223,6 +224,8 @@ XRayRadiationDoseSRStorage                  1.2.840.10008.5.1.4.1.1.88.67
 RadiopharmaceuticalRadiationDoseSRStorage   1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                           1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage           1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                 1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                1.2.840.10008.5.1.4.1.1.88.72
 \endverbatim
 
 \section logging LOGGING
@@ -288,6 +291,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2000-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmsr/docs/xml2dsr.man b/dcmsr/docs/xml2dsr.man
index e53bda3..87a44e9 100644
--- a/dcmsr/docs/xml2dsr.man
+++ b/dcmsr/docs/xml2dsr.man
@@ -188,6 +188,8 @@ XRayRadiationDoseSRStorage                  1.2.840.10008.5.1.4.1.1.88.67
 RadiopharmaceuticalRadiationDoseSRStorage   1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                           1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage           1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                 1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                1.2.840.10008.5.1.4.1.1.88.72
 \endverbatim
 
 Please note that currently only mandatory and some optional attributes are
@@ -305,6 +307,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2003-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2003-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h
index a57f915..8d1922e 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID100_QuantitativeDiagnosticImagingProcedures
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:37 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:40 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
index 8f143fa..40cc535 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID10013_CTAcquisitionType
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:27:00 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:59:04 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
index 6402909..0465de6 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID10033_CTReconstructionAlgorithm
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:27:02 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:59:06 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
index f32990e..bbf4803 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID11_RouteOfAdministration
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:32 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:35 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
index d7a2c45..5251e78 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID244_Laterality
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:38 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:42 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
index dc9f383..39b4572 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID29_AcquisitionModality
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:33 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:37 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h
index bf39d92..166a5bf 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID4020_PETRadionuclide
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:40 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:44 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h
index 72c4b03..ee49c1e 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID4021_PETRadiopharmaceutical
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:42 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:46 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h
index 55b26ac..dfdc4d9 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID4031_CommonAnatomicRegions
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:44 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:47 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
index da14b72..fb828ce 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID42_NumericValueQualifier
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:35 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:39 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid5000.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid5000.h
index 66ef949..0175798 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid5000.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid5000.h
@@ -40,29 +40,29 @@ class DCMTK_CMR_EXPORT CID5000_Languages
      */
     enum EnumType
     {
-        /// (eng,IETF4646,"English")
+        /// (eng,RFC5646,"English")
         English,
-        /// (en-CA,IETF4646","English (CA)")
+        /// (en-CA,RFC5646,"English (CA)")
         English_CA,
-        /// (en-GB,IETF4646","English (GB)")
+        /// (en-GB,RFC5646,"English (GB)")
         English_GB,
-        /// (en-US,IETF4646","English (US)")
+        /// (en-US,RFC5646,"English (US)")
         English_US,
-        /// (fra,IETF4646","French")
+        /// (fra,RFC5646,"French")
         French,
-        /// (fr-CA,IETF4646","French (CA)")
+        /// (fr-CA,RFC5646,"French (CA)")
         French_CA,
-        /// (fr-CH,IETF4646","French (CH)")
+        /// (fr-CH,RFC5646,"French (CH)")
         French_CH,
-        /// (fr-FR,IETF4646","French (FR)")
+        /// (fr-FR,RFC5646,"French (FR)")
         French_FR,
-        /// (deu,IETF4646","German")
+        /// (deu,RFC5646,"German")
         German,
-        /// (de-AT,IETF4646","German (AT)")
+        /// (de-AT,RFC5646,"German (AT)")
         German_AT,
-        /// (de-CH,IETF4646","German (CH)")
+        /// (de-CH,RFC5646,"German (CH)")
         German_CH,
-        /// (de-DE,IETF4646","German (DE)")
+        /// (de-DE,RFC5646,"German (DE)")
         German_DE
     };
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
index 911538b..3967952 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID6147_ResponseCriteria
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:45 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:49 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
index 04867c6..f89d539 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID7021_MeasurementReportDocumentTitles
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:47 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:52 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
index 95ffa0c..1200cd9 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID7181_AbstractMultiDimensionalImageModelComponentUnits
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:49 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:54 by J. Riesmeier
  *
  */
 
@@ -28,7 +28,7 @@
 
 /** Implementation of DCMR Context Group:
  *  CID 7181 - Abstract Multi-dimensional Image Model Component Units.
- *  (type: extensible, version: 20141110)
+ *  (type: extensible, version: 20161106)
  */
 class DCMTK_CMR_EXPORT CID7181_AbstractMultiDimensionalImageModelComponentUnits
   : public DSRContextGroup
@@ -80,6 +80,8 @@ class DCMTK_CMR_EXPORT CID7181_AbstractMultiDimensionalImageModelComponentUnits
         StandardizedUptakeValueBodyWeight,
         /// (g/ml{SUVlbm},UCUM,"Standardized Uptake Value lean body mass (James)"), included from CID 85
         StandardizedUptakeValueLeanBodyMassJames,
+        /// (g/ml{SUVlbm(James128)},UCUM,"Standardized Uptake Value lean body mass (James 128 multiplier)"), included from CID 85
+        StandardizedUptakeValueLeanBodyMassJames128Multiplier,
         /// (g/ml{SUVlbm(Janma)},UCUM,"Standardized Uptake Value lean body mass (Janma)"), included from CID 85
         StandardizedUptakeValueLeanBodyMassJanma,
         /// (cm2/ml{SUVbsa},UCUM,"Standardized Uptake Value body surface area"), included from CID 85
@@ -118,6 +120,8 @@ class DCMTK_CMR_EXPORT CID7181_AbstractMultiDimensionalImageModelComponentUnits
         HounsfieldUnit,
         /// ([arb'U],UCUM,"arbitrary unit")
         ArbitraryUnit,
+        /// (ppm,UCUM,"ppm")
+        Ppm,
         /// (cm/s,UCUM,"centimeter/second")
         CentimeterPerSecond,
         /// (mm/s,UCUM,"millimeter/second")
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
index 6b3e3a5..fd2ccb4 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID7445_DeviceParticipatingRoles
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:51 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:55 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
index 7e937d0..73b093f 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID7452_OrganizationalRoles
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:53 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:57 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
index c259b37..c9f4ec1 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID7453_PerformingRoles
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:55 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:59 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
index df4c815..19167b9 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID7464_GeneralRegionOfInterestMeasurementModifiers
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:57 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:59:01 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
index dd60c96..6edff85 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
@@ -5,8 +5,8 @@
  *
  *  Header file for class CID7469_GenericIntensityAndSizeMeasurements
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:59 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:59:03 by J. Riesmeier
  *
  */
 
@@ -214,8 +214,12 @@ class DCMTK_CMR_EXPORT CID7469_GenericIntensityAndSizeMeasurements
         R1,
         /// (126394,DCM,"R2"), included from CID 7180
         R2,
+        /// (126395,DCM,"R2*"), included from CID 7180
+        R2Star,
         /// (113098,DCM,"Magnetization Transfer Ratio"), included from CID 7180
         MagnetizationTransferRatio,
+        /// (126396,DCM,"Magnetic Susceptibility"), included from CID 7180
+        MagneticSusceptibility,
         /// (126312,DCM,"Ktrans"), included from CID 4107
         Ktrans,
         /// (126313,DCM,"kep"), included from CID 4107
@@ -240,6 +244,8 @@ class DCMTK_CMR_EXPORT CID7469_GenericIntensityAndSizeMeasurements
         TimeToPeak,
         /// (126392,DCM,"Oxygen Extraction Fraction"), included from CID 4108
         OxygenExtractionFraction,
+        /// (113084,DCM,"Tmax"), included from CID 4108
+        Tmax,
         /// (126320,DCM,"IAUC"), included from CID 4109
         IAUC,
         /// (126321,DCM,"IAUC60"), included from CID 4109
@@ -276,6 +282,8 @@ class DCMTK_CMR_EXPORT CID7469_GenericIntensityAndSizeMeasurements
         SUVbw,
         /// (126402,DCM,"SUVlbm"), included from CID 7180
         SUVlbm,
+        /// (126406,DCM,"SUVlbm(James128)"), included from CID 7180
+        SUVlbmJames128,
         /// (126405,DCM,"SUVlbm(Janma)"), included from CID 7180
         SUVlbmJanma,
         /// (126403,DCM,"SUVbsa"), included from CID 7180
diff --git a/dcmsr/include/dcmtk/dcmsr/codes/dcm.h b/dcmsr/include/dcmtk/dcmsr/codes/dcm.h
index 960c0df..f3fbea8 100644
--- a/dcmsr/include/dcmtk/dcmsr/codes/dcm.h
+++ b/dcmsr/include/dcmtk/dcmsr/codes/dcm.h
@@ -5,8 +5,8 @@
  *
  *  Header file with DICOM Code Definitions (Coding Scheme "DCM", Version "01")
  *
- *  Generated automatically from DICOM PS 3.16-2016c
- *  File created on 2016-06-13 09:53:55 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:33:01 by J. Riesmeier
  *
  */
 
@@ -33,10 +33,10 @@
  *  code definitions  *
  *--------------------*/
 
-// total number of codes: 3400
+// total number of codes: 3511
 // - retired: 143
 // - no name: 27
-// - not unique: 14
+// - not unique: 15
 
 // The basic scheme for creating the names is as follows:
 //   'CODE_' + <coding-scheme-designator> + ['_RETIRED'] + '_' + <code-name>
@@ -1721,6 +1721,7 @@
 #define CODE_DCM_CholineCreatineRatio                                      DSRBasicCodedEntry("113081", "DCM", "Choline/Creatine Ratio")
 #define CODE_DCM_NAcetylaspartateCreatineRatio                             DSRBasicCodedEntry("113082", "DCM", "N-acetylaspartate /Creatine Ratio")
 #define CODE_DCM_NAcetylaspartateCholineRatio                              DSRBasicCodedEntry("113083", "DCM", "N-acetylaspartate /Choline Ratio")
+#define CODE_DCM_Tmax                                                      DSRBasicCodedEntry("113084", "DCM", "Tmax")
 #define CODE_DCM_SpatialResampling                                         DSRBasicCodedEntry("113085", "DCM", "Spatial resampling")
 #define CODE_DCM_EdgeEnhancement                                           DSRBasicCodedEntry("113086", "DCM", "Edge enhancement")
 #define CODE_DCM_Smoothing                                                 DSRBasicCodedEntry("113087", "DCM", "Smoothing")
@@ -3103,6 +3104,40 @@
 #define CODE_DCM_LeftVentricleMassByMMode_adjustedByHeight                 DSRBasicCodedEntry("125271", "DCM", "Left Ventricle Mass by M-mode - adjusted by Height")
 #define CODE_DCM_LeftVentricleMassByTruncatedEllipse_adjustedByHeight      DSRBasicCodedEntry("125272", "DCM", "Left Ventricle Mass by Truncated Ellipse - adjusted by Height")
 #define CODE_DCM_LeftVentricleMassByAreaLength_adjustedByHeight            DSRBasicCodedEntry("125273", "DCM", "Left Ventricle Mass by Area Length - adjusted by Height")
+#define CODE_DCM_PreCoordinatedMeasurements                                DSRBasicCodedEntry("125301", "DCM", "Pre-coordinated Measurements")
+#define CODE_DCM_PostCoordinatedMeasurements                               DSRBasicCodedEntry("125302", "DCM", "Post-coordinated Measurements")
+#define CODE_DCM_AdhocMeasurements                                         DSRBasicCodedEntry("125303", "DCM", "Adhoc Measurements")
+#define CODE_DCM_UntrackableMeasurement                                    DSRBasicCodedEntry("125304", "DCM", "Untrackable Measurement")
+#define CODE_DCM_FindingObservationType                                    DSRBasicCodedEntry("125305", "DCM", "Finding Observation Type")
+#define CODE_DCM_MeasurementType                                           DSRBasicCodedEntry("125306", "DCM", "Measurement Type")
+#define CODE_DCM_MeasuredProperty                                          DSRBasicCodedEntry("125307", "DCM", "Measured Property")
+#define CODE_DCM_MeasurementDivisor                                        DSRBasicCodedEntry("125308", "DCM", "Measurement Divisor")
+#define CODE_DCM_ShortLabel                                                DSRBasicCodedEntry("125309", "DCM", "Short Label")
+#define CODE_DCM_StagedMeasurements                                        DSRBasicCodedEntry("125310", "DCM", "Staged Measurements")
+#define CODE_DCM_StructureOfTheFindingSite                                 DSRBasicCodedEntry("125311", "DCM", "Structure of the Finding Site")
+#define CODE_DCM_BehaviorOfTheFindingSite                                  DSRBasicCodedEntry("125312", "DCM", "Behavior of the Finding Site")
+#define CODE_DCM_Indexed                                                   DSRBasicCodedEntry("125313", "DCM", "Indexed")
+#define CODE_DCM_FractionalChange                                          DSRBasicCodedEntry("125314", "DCM", "Fractional Change")
+#define CODE_DCM_Calculated                                                DSRBasicCodedEntry("125315", "DCM", "Calculated")
+#define CODE_DCM_DirectlyMeasured                                          DSRBasicCodedEntry("125316", "DCM", "Directly measured")
+#define CODE_DCM_RightVentricleOutflowTract_Distal                         DSRBasicCodedEntry("125317", "DCM", "Right Ventricle Outflow Tract, Distal")
+#define CODE_DCM_RightVentricleOutflowTract_Proximal                       DSRBasicCodedEntry("125318", "DCM", "Right Ventricle Outflow Tract, Proximal")
+#define CODE_DCM_RightVentricleAnteriorWall                                DSRBasicCodedEntry("125319", "DCM", "Right Ventricle Anterior Wall")
+#define CODE_DCM_ElectromechanicalDelay                                    DSRBasicCodedEntry("125320", "DCM", "Electromechanical Delay")
+#define CODE_DCM_PreEjectionPeriod                                         DSRBasicCodedEntry("125321", "DCM", "Pre-ejection Period")
+#define CODE_DCM_AtrialDiastolicFilling_DWave                              DSRBasicCodedEntry("125322", "DCM", "Atrial Diastolic Filling (D-wave)")
+#define CODE_DCM_ARWave                                                    DSRBasicCodedEntry("125323", "DCM", "AR-wave")
+#define CODE_DCM_FullCardiacCycle                                          DSRBasicCodedEntry("125324", "DCM", "Full Cardiac Cycle")
+#define CODE_DCM_DyssynchronyIndex                                         DSRBasicCodedEntry("125325", "DCM", "Dyssynchrony Index")
+#define CODE_DCM_EffectiveOrificeArea                                      DSRBasicCodedEntry("125326", "DCM", "Effective Orifice Area")
+#define CODE_DCM_ExcursionDistance                                         DSRBasicCodedEntry("125327", "DCM", "Excursion Distance")
+#define CODE_DCM_MaximumOrificeArea                                        DSRBasicCodedEntry("125328", "DCM", "Maximum Orifice Area")
+#define CODE_DCM_PeakBloodPressure                                         DSRBasicCodedEntry("125329", "DCM", "Peak Blood Pressure")
+#define CODE_DCM_PeakTissueVelocity                                        DSRBasicCodedEntry("125330", "DCM", "Peak Tissue Velocity")
+#define CODE_DCM_PISARadius                                                DSRBasicCodedEntry("125331", "DCM", "PISA Radius")
+#define CODE_DCM_RegurgitationJetArea                                      DSRBasicCodedEntry("125332", "DCM", "Regurgitation Jet Area")
+#define CODE_DCM_RegurgitationJetWidth                                     DSRBasicCodedEntry("125333", "DCM", "Regurgitation Jet Width")
+#define CODE_DCM_VenaContractaWidth                                        DSRBasicCodedEntry("125334", "DCM", "Vena Contracta Width")
 #define CODE_DCM_CARDIOsphere                                              DSRBasicCodedEntry("125901", "DCM", "CARDIOsphere")
 #define CODE_DCM_Echovist                                                  DSRBasicCodedEntry("125902", "DCM", "Echovist")
 #define CODE_DCM_Imagify                                                   DSRBasicCodedEntry("125903", "DCM", "Imagify")
@@ -3206,17 +3241,21 @@
 #define CODE_DCM_OxygenExtractionFraction                                  DSRBasicCodedEntry("126392", "DCM", "Oxygen Extraction Fraction")
 #define CODE_DCM_R1                                                        DSRBasicCodedEntry("126393", "DCM", "R1")
 #define CODE_DCM_R2                                                        DSRBasicCodedEntry("126394", "DCM", "R2")
+#define CODE_DCM_R2Star                                                    DSRBasicCodedEntry("126395", "DCM", "R2*")
+#define CODE_DCM_MagneticSusceptibility                                    DSRBasicCodedEntry("126396", "DCM", "Magnetic Susceptibility")
 #define CODE_DCM_StandardizedUptakeValue                                   DSRBasicCodedEntry("126400", "DCM", "Standardized Uptake Value")
 #define CODE_DCM_SUVbw                                                     DSRBasicCodedEntry("126401", "DCM", "SUVbw")
 #define CODE_DCM_SUVlbm                                                    DSRBasicCodedEntry("126402", "DCM", "SUVlbm")
 #define CODE_DCM_SUVbsa                                                    DSRBasicCodedEntry("126403", "DCM", "SUVbsa")
 #define CODE_DCM_SUVibw                                                    DSRBasicCodedEntry("126404", "DCM", "SUVibw")
 #define CODE_DCM_SUVlbmJanma                                               DSRBasicCodedEntry("126405", "DCM", "SUVlbm(Janma)")
+#define CODE_DCM_SUVlbmJames128                                            DSRBasicCodedEntry("126406", "DCM", "SUVlbm(James128)")
 #define CODE_DCM_SUVBodyWeightCalculationMethod                            DSRBasicCodedEntry("126410", "DCM", "SUV body weight calculation method")
 #define CODE_DCM_SUVLeanBodyMassCalculationMethod                          DSRBasicCodedEntry("126411", "DCM", "SUV lean body mass calculation method")
 #define CODE_DCM_SUVBodySurfaceAreaCalculationMethod                       DSRBasicCodedEntry("126412", "DCM", "SUV body surface area calculation method")
 #define CODE_DCM_SUVIdealBodyWeightCalculationMethod                       DSRBasicCodedEntry("126413", "DCM", "SUV ideal body weight calculation method")
 #define CODE_DCM_SUVLeanBodyMassCalculationJanmahasatianMethod             DSRBasicCodedEntry("126414", "DCM", "SUV lean body mass calculation Janmahasatian method")
+#define CODE_DCM_SUVLeanBodyMassCalculationMethodUsing128Multiplier        DSRBasicCodedEntry("126415", "DCM", "SUV lean body mass calculation method using 128 multiplier")
 #define CODE_DCM_PittsburghCompoundB_C11                                   DSRBasicCodedEntry("126500", "DCM", "Pittsburgh compound B C^11^")
 #define CODE_DCM_Florbetaben_F18                                           DSRBasicCodedEntry("126501", "DCM", "Florbetaben F^18^")
 #define CODE_DCM_T807_F18                                                  DSRBasicCodedEntry("126502", "DCM", "T807 F^18^")
@@ -3447,5 +3486,77 @@
 #define CODE_DCM_VascularImagingSpecialty                                  DSRBasicCodedEntry("128017", "DCM", "Vascular Imaging Specialty")
 #define CODE_DCM_FWPByGA_Campbell_1991                                     DSRBasicCodedEntry("128040", "DCM", "FWP by GA, Campbell, 1991")
 #define CODE_DCM_FWPByGA_Hadlock_1991                                      DSRBasicCodedEntry("128041", "DCM", "FWP by GA, Hadlock, 1991")
+#define CODE_DCM_PlaneThroughSuperiorExtent                                DSRBasicCodedEntry("128120", "DCM", "Plane through Superior Extent")
+#define CODE_DCM_PlaneThroughInferiorExtent                                DSRBasicCodedEntry("128121", "DCM", "Plane through Inferior Extent")
+#define CODE_DCM_PlaneThroughProximalExtent                                DSRBasicCodedEntry("128122", "DCM", "Plane through Proximal Extent")
+#define CODE_DCM_PlaneThroughDistalExtent                                  DSRBasicCodedEntry("128123", "DCM", "Plane through Distal Extent")
+#define CODE_DCM_PlaneThroughMedialExtent                                  DSRBasicCodedEntry("128124", "DCM", "Plane through Medial Extent")
+#define CODE_DCM_PlaneThroughLateralExtent                                 DSRBasicCodedEntry("128125", "DCM", "Plane through Lateral Extent")
+#define CODE_DCM_PlaneThroughLeftmostExtent                                DSRBasicCodedEntry("128126", "DCM", "Plane through Leftmost Extent")
+#define CODE_DCM_PlaneThroughRightmostExtent                               DSRBasicCodedEntry("128127", "DCM", "Plane through Rightmost Extent")
+#define CODE_DCM_PlaneThroughAnteriorExtent                                DSRBasicCodedEntry("128128", "DCM", "Plane through Anterior Extent")
+#define CODE_DCM_PlaneThroughPosteriorExtent                               DSRBasicCodedEntry("128129", "DCM", "Plane through Posterior Extent")
+#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_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")
+#define CODE_DCM_AbdominalRadiology                                        DSRBasicCodedEntry("128170", "DCM", "Abdominal Radiology")
+#define CODE_DCM_BiomedicalEngineering                                     DSRBasicCodedEntry("128171", "DCM", "Biomedical Engineering")
+#define CODE_DCM_CardiovascularRadiology                                   DSRBasicCodedEntry("128172", "DCM", "Cardiovascular Radiology")
+#define CODE_DCM_InformationTechnology                                     DSRBasicCodedEntry("128173", "DCM", "Information Technology")
+#define CODE_DCM_MedicalPhysics                                            DSRBasicCodedEntry("128174", "DCM", "Medical Physics")
+#define CODE_DCM_MusculoskeletalRadiology                                  DSRBasicCodedEntry("128175", "DCM", "Musculoskeletal Radiology")
+#define CODE_DCM_PediatricRadiology                                        DSRBasicCodedEntry("128177", "DCM", "Pediatric Radiology")
+#define CODE_DCM_ThoracicRadiology                                         DSRBasicCodedEntry("128179", "DCM", "Thoracic Radiology")
+#define CODE_DCM_ForRTWorkflow                                             DSRBasicCodedEntry("128180", "DCM", "For RT Workflow")
+#define CODE_DCM_DiagnosticSourceImages                                    DSRBasicCodedEntry("128181", "DCM", "Diagnostic Source Images")
+#define CODE_DCM_SegmentationResult                                        DSRBasicCodedEntry("128182", "DCM", "Segmentation Result")
+#define CODE_DCM_RegistrationResult                                        DSRBasicCodedEntry("128183", "DCM", "Registration Result")
+#define CODE_DCM_PrePlanningResult                                         DSRBasicCodedEntry("128184", "DCM", "Pre-Planning Result")
+#define CODE_DCM_RTPrescriptionResult                                      DSRBasicCodedEntry("128185", "DCM", "RT Prescription Result")
+#define CODE_DCM_DoseCalculationImageSeries                                DSRBasicCodedEntry("128186", "DCM", "Dose Calculation Image Series")
+#define CODE_DCM_CoordinateAlignmentImageSeries                            DSRBasicCodedEntry("128187", "DCM", "Coordinate Alignment Image Series")
+#define CODE_DCM_RTTreatmentSimulationResult                               DSRBasicCodedEntry("128188", "DCM", "RT Treatment Simulation Result")
+#define CODE_DCM_RTPlanningResult                                          DSRBasicCodedEntry("128189", "DCM", "RT Planning Result")
+#define CODE_DCM_DosimetricResult                                          DSRBasicCodedEntry("128190", "DCM", "Dosimetric Result")
+#define CODE_DCM_PatientSetupVerificationResult                            DSRBasicCodedEntry("128191", "DCM", "Patient Setup Verification Result")
+#define CODE_DCM_RTTreatmentSessionResult                                  DSRBasicCodedEntry("128192", "DCM", "RT Treatment Session Result")
+#define CODE_DCM_RTTreatmentCourseSummary                                  DSRBasicCodedEntry("128193", "DCM", "RT Treatment Course Summary")
+#define CODE_DCM_RTTreatmentQAResult                                       DSRBasicCodedEntry("128194", "DCM", "RT Treatment QA Result")
+#define CODE_DCM_ForDiagnosis                                              DSRBasicCodedEntry("128195", "DCM", "For Diagnosis")
+#define CODE_DCM_ForSegmentation                                           DSRBasicCodedEntry("128196", "DCM", "For Segmentation")
+#define CODE_DCM_ForRTPrescription                                         DSRBasicCodedEntry("128197", "DCM", "For RT Prescription")
+#define CODE_DCM_ForRTTreatmentPlanning                                    DSRBasicCodedEntry("128198", "DCM", "For RT Treatment Planning")
+#define CODE_DCM_ForPlanComparison                                         DSRBasicCodedEntry("128199", "DCM", "For Plan Comparison")
+#define CODE_DCM_ForRTPlanSummation                                        DSRBasicCodedEntry("128200", "DCM", "For RT Plan Summation")
+#define CODE_DCM_ForPhysicianReview                                        DSRBasicCodedEntry("128201", "DCM", "For Physician Review")
+#define CODE_DCM_ForPhysicistReview                                        DSRBasicCodedEntry("128202", "DCM", "For Physicist Review")
+#define CODE_DCM_ForTumorBoard                                             DSRBasicCodedEntry("128203", "DCM", "For Tumor Board")
+#define CODE_DCM_ForPlanQualityAssurance                                   DSRBasicCodedEntry("128204", "DCM", "For Plan Quality Assurance")
+#define CODE_DCM_ForMachineQualityAssurance                                DSRBasicCodedEntry("128205", "DCM", "For Machine Quality Assurance")
+#define CODE_DCM_ForPatientSetupVerification                               DSRBasicCodedEntry("128206", "DCM", "For Patient Setup Verification")
+#define CODE_DCM_ForClinicalTrialSubmission                                DSRBasicCodedEntry("128207", "DCM", "For Clinical Trial Submission")
+#define CODE_DCM_ForTumorRegistry                                          DSRBasicCodedEntry("128208", "DCM", "For Tumor Registry")
+#define CODE_DCM_RTWorkflowInputUsed                                       DSRBasicCodedEntry("128209", "DCM", "RT Workflow Input Used")
+#define CODE_DCM_RTPrescriptionInputUsed                                   DSRBasicCodedEntry("128210", "DCM", "RT Prescription Input Used")
+#define CODE_DCM_RTTreatmentPlanningInputUsed                              DSRBasicCodedEntry("128211", "DCM", "RT Treatment Planning Input Used")
+#define CODE_DCM_RTPlanSummationInputUsed                                  DSRBasicCodedEntry("128212", "DCM", "RT Plan Summation Input Used")
+#define CODE_DCM_PhysicianReviewInputUsed                                  DSRBasicCodedEntry("128213", "DCM", "Physician Review Input Used")
+#define CODE_DCM_PhysicistReviewInputUsed                                  DSRBasicCodedEntry("128214", "DCM", "Physicist Review Input Used")
+#define CODE_DCM_PlanQualityAssuranceInputUsed                             DSRBasicCodedEntry("128215", "DCM", "Plan Quality Assurance Input Used")
+#define CODE_DCM_MachineQualityAssuranceInputUsed                          DSRBasicCodedEntry("128216", "DCM", "Machine Quality Assurance Input Used")
+#define CODE_DCM_PatientSetupVerificationInputUsed                         DSRBasicCodedEntry("128217", "DCM", "Patient Setup Verification Input Used")
+#define CODE_DCM_DiagnosisInputUsed                                        DSRBasicCodedEntry("128218", "DCM", "Diagnosis Input Used")
+#define CODE_DCM_ContouringInputUsed                                       DSRBasicCodedEntry("128219", "DCM", "Contouring Input Used")
+#define CODE_DCM_PlanComparisonInputUsed                                   DSRBasicCodedEntry("128220", "DCM", "Plan Comparison Input Used")
+#define CODE_DCM_TumorBoardInputUsed                                       DSRBasicCodedEntry("128221", "DCM", "Tumor Board Input Used")
+#define CODE_DCM_TumorRegistryInputUsed                                    DSRBasicCodedEntry("128222", "DCM", "Tumor Registry Input Used")
+#define CODE_DCM_ClinicalTrialSubmissionInputUsed                          DSRBasicCodedEntry("128223", "DCM", "Clinical Trial Submission Input Used")
+#define CODE_DCM_SourceMeasurement                                         DSRBasicCodedEntry("128224", "DCM", "Source measurement")
+#define CODE_DCM_SourceReport                                              DSRBasicCodedEntry("128225", "DCM", "Source report")
+#define CODE_DCM_SourceRawData                                             DSRBasicCodedEntry("128226", "DCM", "Source raw data")
+#define CODE_DCM_PulseSequenceName                                         DSRBasicCodedEntry("128230", "DCM", "Pulse Sequence Name")
 
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/codes/ncit.h b/dcmsr/include/dcmtk/dcmsr/codes/ncit.h
index c917a16..e6c9fc6 100644
--- a/dcmsr/include/dcmtk/dcmsr/codes/ncit.h
+++ b/dcmsr/include/dcmtk/dcmsr/codes/ncit.h
@@ -5,8 +5,8 @@
  *
  *  Header file with NCIt Code Definitions (Coding Scheme "NCIt")
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:08:01 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:29:26 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/include/dcmtk/dcmsr/codes/umls.h b/dcmsr/include/dcmtk/dcmsr/codes/umls.h
index b7ef28e..99e0229 100644
--- a/dcmsr/include/dcmtk/dcmsr/codes/umls.h
+++ b/dcmsr/include/dcmtk/dcmsr/codes/umls.h
@@ -5,8 +5,8 @@
  *
  *  Header file with UMLS Code Definitions (Coding Scheme "UMLS")
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:08:00 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:29:25 by J. Riesmeier
  *
  */
 
@@ -33,7 +33,7 @@
  *  code definitions  *
  *--------------------*/
 
-// total number of codes: 39
+// total number of codes: 40
 // - retired: 0
 // - no name: 0
 // - not unique: 0
@@ -77,6 +77,7 @@
 #define CODE_UMLS_Tyrosine3Octreotate_Ga68                                 DSRBasicCodedEntry("C1742831", "UMLS", "tyrosine-3-octreotate Ga^68^")
 #define CODE_UMLS_Fluoroestradiol_FES_F18                                  DSRBasicCodedEntry("C1831937", "UMLS", "Fluoroestradiol (FES) F^18^")
 #define CODE_UMLS_Sonographer                                              DSRBasicCodedEntry("C1954848", "UMLS", "Sonographer")
+#define CODE_UMLS_Neuroradiology                                           DSRBasicCodedEntry("C2183225", "UMLS", "Neuroradiology")
 #define CODE_UMLS_InverseRatioVentilation                                  DSRBasicCodedEntry("C2223982", "UMLS", "Inverse ratio ventilation")
 #define CODE_UMLS_RootMeanSquare                                           DSRBasicCodedEntry("C2347976", "UMLS", "Root Mean Square")
 #define CODE_UMLS_TimePoint                                                DSRBasicCodedEntry("C2348792", "UMLS", "Time Point")
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrcodvl.h b/dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
index 467dd38..a5a8f0a 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
@@ -726,6 +726,10 @@ class DCMTK_DCMSR_EXPORT DSRCodedEntryValue
     OFString ContextUID;
     /// Mapping Resource (VR=CS, type 1C)
     OFString MappingResource;
+    /// Mapping Resource UID (VR=UI, type 3)
+     // - tbd: optional attribute not yet supported
+    /// Mapping Resource Name (VR=LO, type 3)
+     // - tbd: optional attribute not yet supported
     /// Context Group Version (VR=DT, type 1C)
     OFString ContextGroupVersion;
     /// Context Group Local Version (VR=DT, type 1C)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrcsidl.h b/dcmsr/include/dcmtk/dcmsr/dsrcsidl.h
index a2a631e..f497ff1 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrcsidl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrcsidl.h
@@ -60,7 +60,7 @@ class DCMTK_DCMSR_EXPORT DSRCodingSchemeIdentificationList
     /** check whether list is empty
      ** @return OFTrue if list is empty, OFFalse otherwise
      */
-    OFBool empty() const;
+    OFBool isEmpty() const;
 
     /** get number of items stored in the list
      ** @return number of items
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrdoc.h b/dcmsr/include/dcmtk/dcmsr/dsrdoc.h
index 3a0df65..61f6a5a 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrdoc.h
@@ -112,13 +112,13 @@ class DCMTK_DCMSR_EXPORT DSRDocument
      *  If logging is enabled, the reason for any error might be obtained from the log output.
      *  Also warning and debug messages are reported if the respective logger is enabled.
      ** @param  dataset  reference to DICOM dataset from which the document should be read
-     *  @param  flags    optional flag used to customize the reading process (see DSRTypes::RF_xxx).
-     *                   E.g. RF_readDigitalSignatures indicates whether to read the digital
-     *                   signatures from the dataset or not.  If set, the MACParametersSequence
-     *                   and the DigitalSignaturesSequence are read for the general document
-     *                   header (equivalent to top-level content item) and each content item
-     *                   of the document tree.
-     *                   If not removed manually (with DSRDocumentTree::removeSignatures())
+     *  @param  flags    optional flag used to customize the reading process (see
+     *                   DSRTypes::RF_xxx).  E.g. DSRTypes::RF_readDigitalSignatures indicates
+     *                   whether to read the digital signatures from the dataset or not.  If set,
+     *                   the MACParametersSequence and the DigitalSignaturesSequence are read for
+     *                   the general document header (equivalent to top-level content item) and
+     *                   each content item of the document tree.
+     *                   If not removed manually (with DSRDocumentTree::removeSignatures()),
      *                   the signatures are written back to the dataset when the write() method
      *                   is called.
      *                   Please note that the two signature sequences for any other sequence
@@ -170,7 +170,7 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     /** read SR document from XML file.
      *  The format (Schema) of the XML document is expected to conform to the output format
      *  of the writeXML() method.  In addition, the document can be validated against an XML
-     *  Schema by setting the flag XF_validateSchema.
+     *  Schema by setting the flag DSRTypes::XF_validateSchema.
      *  Digital signatures in the XML document are not yet supported.
      *  Please note that the current document is also deleted if the parsing process fails.
      ** @param  filename  name of the file from which the XML document is read ("-" for stdin)
@@ -205,7 +205,7 @@ class DCMTK_DCMSR_EXPORT DSRDocument
   // --- get/set misc attributes ---
 
     /** get the current SR document type
-     ** @return document type (might be DT_invalid if read from dataset)
+     ** @return document type (might be DSRTypes::DT_invalid if read from dataset)
      */
     virtual E_DocumentType getDocumentType() const;
 
@@ -250,19 +250,21 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     /** get specific character set type.
      *  If the type is unknown, the original DICOM defined term can be retrieved
      *  with the method getSpecificCharacterSet().
-     ** @return character set (might be CS_invalid/unknown if not supported)
+     ** @return character set type (might be DSRTypes::CS_invalid or DSRTypes::CS_unknown)
      */
     virtual E_CharacterSet getSpecificCharacterSetType() const;
 
     /** set specific character set type.
      *  The DICOM defined term (see member variable SpecificCharacterSet) is set accordingly.
+     ** @param  characterSet  specific character set to be set (use DSRTypes::CS_invalid to reset
+     *                        to the default value, which is "unspecified")
      ** @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setSpecificCharacterSetType(const E_CharacterSet characterSet);
 
     /** get document preliminary flag.
      *  @note Not applicable to Key Object Selection Documents.
-     ** @return preliminary flag (might be PF_invalid if not specified)
+     ** @return preliminary flag (might be DSRTypes::PF_invalid if not specified)
      */
     virtual E_PreliminaryFlag getPreliminaryFlag() const;
 
@@ -270,7 +272,8 @@ class DCMTK_DCMSR_EXPORT DSRDocument
      *  According to the DICOM standard, the concept of "completeness" is independent of the
      *  concept of "preliminary" or "final".  Therefore, this flag can be specified separately.
      *  @note Not applicable to Key Object Selection Documents.
-     ** @param  flag  preliminary flag to be set (use PF_invalid to omit this optional value)
+     ** @param  flag  preliminary flag to be set (use DSRTypes::PF_invalid to omit this optional
+     *                value)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setPreliminaryFlag(const E_PreliminaryFlag flag);
@@ -279,16 +282,22 @@ class DCMTK_DCMSR_EXPORT DSRDocument
      *  According to the DICOM standard, this flag describes the estimated degree of completeness
      *  of an SR Document.  See DICOM standard for details.
      *  @note Not applicable to Key Object Selection Documents.
-     ** @return completion flag (might be CF_invalid if read from dataset)
+     ** @return completion flag (might be DSRTypes::CF_invalid if read from dataset)
      */
     virtual E_CompletionFlag getCompletionFlag() const;
 
     /** get document verification flag.
      *  @note Not applicable to Key Object Selection Documents.
-     ** @return verification flag (might be VF_invalid if read from dataset)
+     ** @return verification flag (might be DSRTypes::VF_invalid if read from dataset)
      */
     virtual E_VerificationFlag getVerificationFlag() const;
 
+    /** check whether there are one or more verifying observers.
+     *  @note Not applicable to Key Object Selection Documents.
+     ** @return OFTrue if there is at least one verifying observer, OFFalse otherwise
+     */
+    virtual OFBool hasVerifyingObservers() const;
+
     /** get number of verifying observers.
      *  A document can be verified more than once.  The verification flag should be VERIFIED
      *  if any verifying observer is specified.  The details on the observer can be retrieved
@@ -296,7 +305,7 @@ class DCMTK_DCMSR_EXPORT DSRDocument
      *  @note Not applicable to Key Object Selection Documents.
      ** @return number of verifying observers (if any), 0 otherwise
      */
-    virtual size_t getNumberOfVerifyingObservers();
+    virtual size_t getNumberOfVerifyingObservers() const;
 
     /** get information about a verifying observer.
      *  All reference variables are cleared before the information is retrieved, i.e. if an error
@@ -480,6 +489,14 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     virtual OFCondition getInstanceCreatorUID(OFString &value,
                                               const signed long pos = 0) const;
 
+    /** get timezone offset from UTC
+     ** @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTimezoneOffsetFromUTC(OFString &value,
+                                                 const signed long pos = 0) const;
+
     /** get patient's name
      ** @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -698,6 +715,16 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     virtual OFCondition setCompletionFlagDescription(const OFString &value,
                                                      const OFBool check = OFTrue);
 
+    /** set timezone offset from UTC
+     ** @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled.
+     *                 Please note that it is not checked whether the 'value' conforms
+     *                 to the requirements of a valid timezone offset (see DICOM PS3.3).
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTimezoneOffsetFromUTC(const OFString &value,
+                                                 const OFBool check = OFTrue);
+
     /** set patient's name
      ** @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (PN) and VM (1) if enabled
@@ -1230,6 +1257,12 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     DcmUniqueIdentifier InstanceCreatorUID;
     /// Coding Scheme Identification Sequence: (SQ, 1-n, 3)
     DSRCodingSchemeIdentificationList CodingSchemeIdentification;
+    /// Context Group Identification Sequence: (SQ, 1-n, 3)
+     // - tbd: optional attribute not yet supported
+    /// Mapping Resource Identification Sequence: (SQ, 1-n, 3)
+     // - tbd: optional attribute not yet supported
+    /// Timezone Offset from UTC: (SH, 1, 3)
+    DcmShortString      TimezoneOffsetFromUTC;
 
     // --- General Study Module (M) ---
 
@@ -1345,6 +1378,11 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     /// Referenced Instance Sequence: (SQ, 1-n, 1C)
     DSRReferencedInstanceList ReferencedInstances;
 
+    // --- Timezone Module (M - for some IODs) ---
+
+    // Timezone Offset from UTC: (SH, 1, 1)
+    // - see 'SOP Common Module'
+
  // --- declaration of copy constructor and assignment operator ---
 
     DSRDocument(const DSRDocument &);
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrdoctr.h b/dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
index e5b76ae..e21e576 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
@@ -234,6 +234,21 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
      */
     void swap(DSRDocumentTree &tree);
 
+    /** print current SR document tree to specified output stream.
+     *  This method is only needed to avoid compiler warnings regarding an "overloaded
+     *  virtual function" hiding DSRDocumentSubTree::print() from the base class, which
+     *  has different parameters than the public print() method of this class.
+     ** @param  stream      output stream
+     *  @param  flags       flag used to customize the output (see DSRTypes::PF_xxx)
+     *  @param  posCounter  pointer to position counter that should be used to initialize
+     *                      the counter for line indentation or numbering of nested
+     *                      content items
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition print(STD_NAMESPACE ostream &stream,
+                              const size_t flags,
+                              const DSRPositionCounter *posCounter);
+
 
   private:
 
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrposcn.h b/dcmsr/include/dcmtk/dcmsr/dsrposcn.h
index a994275..6a4fd46 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrposcn.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrposcn.h
@@ -73,6 +73,7 @@ class DCMTK_DCMSR_EXPORT DSRPositionCounter
 
     /** pre-increment operator.  Increases the position on the current level by 1.
      *  Also makes the position counter valid if it was invalid before.
+     ** @return reference to modified cursor (this object)
      */
     inline DSRPositionCounter &operator++()
     {
@@ -82,6 +83,7 @@ class DCMTK_DCMSR_EXPORT DSRPositionCounter
 
     /** pre-decrement operator.  Decreases the position on the current level by 1.
      *  This makes the position counter invalid if the position was 1 before.
+     ** @return reference to modified cursor (this object)
      */
     inline DSRPositionCounter &operator--()
     {
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrrefin.h b/dcmsr/include/dcmtk/dcmsr/dsrrefin.h
index 2191b93..fff87ef 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrrefin.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrrefin.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2015, OFFIS e.V.
+ *  Copyright (C) 2011-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -60,7 +60,7 @@ class DCMTK_DCMSR_EXPORT DSRReferencedInstanceList
     /** check whether list is empty
      ** @return OFTrue if list is empty, OFFalse otherwise
      */
-    OFBool empty() const;
+    OFBool isEmpty() const;
 
     /** get number of items stored in the list
      ** @return number of items
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrsaecc.h b/dcmsr/include/dcmtk/dcmsr/dsrsaecc.h
new file mode 100644
index 0000000..903fbbb
--- /dev/null
+++ b/dcmsr/include/dcmtk/dcmsr/dsrsaecc.h
@@ -0,0 +1,94 @@
+/*
+ *
+ *  Copyright (C) 2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsr
+ *
+ *  Author: Joerg Riesmeier
+ *
+ *  Purpose:
+ *    classes: DSRSimplifiedAdultEchoSRConstraintChecker
+ *
+ */
+
+
+#ifndef DSRSAECC_H
+#define DSRSAECC_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsriodcc.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Class for checking the relationship content constraints of the Simplified Adult Echo
+ *  SR IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 5300
+ *  (Simplified Echo Procedure Report) invoked at the root node."
+ */
+class DCMTK_DCMSR_EXPORT DSRSimplifiedAdultEchoSRConstraintChecker
+  : public DSRIODConstraintChecker
+{
+
+  public:
+
+    /** default constructor
+     */
+    DSRSimplifiedAdultEchoSRConstraintChecker();
+
+    /** destructor
+     */
+    virtual ~DSRSimplifiedAdultEchoSRConstraintChecker();
+
+    /** check whether by-reference relationships are allowed for this SR IOD
+     ** @return always returns OFFalse, i.e. by-reference relationships are not allowed
+     */
+    virtual OFBool isByReferenceAllowed() const;
+
+    /** check whether this SR IOD requires template support
+     ** @return always returns OFTrue, i.e. template support is required
+     */
+    virtual OFBool isTemplateSupportRequired() const;
+
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
+
+    /** get the associated document type of the SR IOD
+     ** @return document type (DSRTypes::DT_SimplifiedAdultEchoSR)
+     */
+    virtual E_DocumentType getDocumentType() const;
+
+    /** check whether specified content relationship is allowed for this IOD
+     ** @param  sourceValueType   value type of the source content item to be checked
+     *  @param  relationshipType  type of relationship between source and target item
+     *  @param  targetValueType   value type of the target content item to be checked
+     *  @param  byReference       optional flag indicating whether the node/relationship
+     *                            should be added by-value (default) or by-reference
+     ** @return OFTrue if content relationship is allowed, OFFalse otherwise
+     */
+    virtual OFBool checkContentRelationship(const E_ValueType sourceValueType,
+                                            const E_RelationshipType relationshipType,
+                                            const E_ValueType targetValueType,
+                                            const OFBool byReference = OFFalse) const;
+};
+
+
+#endif
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrsc3vl.h b/dcmsr/include/dcmtk/dcmsr/dsrsc3vl.h
index bba8e7f..5c29f3a 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrsc3vl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrsc3vl.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2015, OFFIS e.V.
+ *  Copyright (C) 2010-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -69,14 +69,14 @@ class DCMTK_DCMSR_EXPORT DSRSpatialCoordinates3DValue
     DSRSpatialCoordinates3DValue &operator=(const DSRSpatialCoordinates3DValue &coordinatesValue);
 
     /** clear all internal variables.
-     *  Graphic type is set to GT3_invalid.  Since an empty list of graphic data is invalid
-     *  the spatial coordinates value becomes invalid afterwards.
+     *  Graphic type is set to DSRTypes::GT3_invalid.  Since an empty list of graphic data is
+     *  invalid the spatial coordinates value becomes invalid afterwards.
      */
     virtual void clear();
 
     /** check whether the current spatial coordinates value is valid.
-     *  The value is valid if the graphic type is not GT3_invalid and the graphic data as well
-     *  as the referenced frame of reference UID are valid.  See checkXXX() methods for
+     *  The value is valid if the graphic type is not DSRTypes::GT3_invalid and the graphic data
+     *  as well as the referenced frame of reference UID are valid.  See checkXXX() methods for
      *  details.
      ** @return OFTrue if reference value is valid, OFFalse otherwise
      */
@@ -162,7 +162,7 @@ class DCMTK_DCMSR_EXPORT DSRSpatialCoordinates3DValue
     /** get current graphic type.
      *  The graphic type specifies the geometry of the coordinates stored in the graphic data
      *  list.
-     ** @return graphic type (might be GT3_invalid)
+     ** @return graphic type (might be DSRTypes::GT3_invalid)
      */
     inline DSRTypes::E_GraphicType3D getGraphicType() const
     {
@@ -214,7 +214,7 @@ class DCMTK_DCMSR_EXPORT DSRSpatialCoordinates3DValue
     /** set current graphic type.
      *  The graphic type specifies the geometry of the coordinates stored in the graphic data
      *  list.
-     ** @param  graphicType  graphic type to be set (GT3_invalid is not allowed)
+     ** @param  graphicType  graphic type to be set (DSRTypes::GT3_invalid is not allowed)
      *  @param  check        dummy parameter (currently not used)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrscovl.h b/dcmsr/include/dcmtk/dcmsr/dsrscovl.h
index 1e9d852..2ead499 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrscovl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrscovl.h
@@ -69,14 +69,14 @@ class DCMTK_DCMSR_EXPORT DSRSpatialCoordinatesValue
     DSRSpatialCoordinatesValue &operator=(const DSRSpatialCoordinatesValue &coordinatesValue);
 
     /** clear all internal variables.
-     *  Graphic type is set to GT_invalid.  Since an empty list of graphic data is invalid
-     *  the spatial coordinates value becomes invalid afterwards.
+     *  Graphic type is set to DSRTypes::GT_invalid.  Since an empty list of graphic data is
+     *  invalid the spatial coordinates value becomes invalid afterwards.
      */
     virtual void clear();
 
     /** check whether the current spatial coordinates value is valid.
-     *  The value is valid if the graphic type is not GT_invalid and the graphic data is
-     *  valid.  See checkGraphicData() method for details.
+     *  The value is valid if the graphic type is not DSRTypes::GT_invalid and the graphic data
+     *  is valid.  See checkGraphicData() method for details.
      ** @return OFTrue if reference value is valid, OFFalse otherwise
      */
     virtual OFBool isValid() const;
@@ -161,7 +161,7 @@ class DCMTK_DCMSR_EXPORT DSRSpatialCoordinatesValue
     /** get current graphic type.
      *  The graphic type specifies the geometry of the coordinates stored in the graphic data
      *  list.
-     ** @return graphic type (might be GT_invalid)
+     ** @return graphic type (might be DSRTypes::GT_invalid)
      */
     inline DSRTypes::E_GraphicType getGraphicType() const
     {
@@ -203,7 +203,7 @@ class DCMTK_DCMSR_EXPORT DSRSpatialCoordinatesValue
     /** set current graphic type.
      *  The graphic type specifies the geometry of the coordinates stored in the graphic data
      *  list.
-     ** @param  graphicType  graphic type to be set (GT_invalid is not allowed)
+     ** @param  graphicType  graphic type to be set (DSRTypes::GT_invalid is not allowed)
      *  @param  check        dummy parameter (currently not used)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrsoprf.h b/dcmsr/include/dcmtk/dcmsr/dsrsoprf.h
index 1d4d2f0..bad5f0a 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrsoprf.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrsoprf.h
@@ -59,7 +59,7 @@ class DCMTK_DCMSR_EXPORT DSRSOPInstanceReferenceList
     /** check whether list of references is empty
      ** @return OFTrue if list is empty, OFFalse otherwise
      */
-    OFBool empty() const;
+    OFBool isEmpty() const;
 
     /** get number of instance stored in the list of references
      ** @return number of instances
@@ -139,7 +139,7 @@ class DCMTK_DCMSR_EXPORT DSRSOPInstanceReferenceList
                         const OFBool check = OFTrue);
 
     /** add item from specified DICOM dataset to the list of references.
-     *  Internally an item representing the given dataset is inserted into the hierarchical
+     *  Internally, an item representing the given dataset is inserted into the hierarchical
      *  structure of studies, series and instances, if not already contained in the list.
      *  In any case, the specified item is selected as the current one.
      ** @param  dataset  reference to DICOM dataset from which the relevant UIDs are retrieved
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrtcovl.h b/dcmsr/include/dcmtk/dcmsr/dsrtcovl.h
index c5c9639..607ebf5 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrtcovl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrtcovl.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -71,14 +71,14 @@ class DCMTK_DCMSR_EXPORT DSRTemporalCoordinatesValue
     DSRTemporalCoordinatesValue &operator=(const DSRTemporalCoordinatesValue &coordinatesValue);
 
     /** clear all internal variables.
-     *  Temporal range type is set to TRT_invalid.  Since an empty list of graphic data is
-     *  invalid the temporal coordinates value becomes invalid afterwards.
+     *  Temporal range type is set to DSRTypes::TRT_invalid.  Since an empty list of graphic data
+     *  is invalid the temporal coordinates value becomes invalid afterwards.
      */
     virtual void clear();
 
     /** check whether the current temporal coordinates value is valid.
-     *  The value is valid if the temporal range type is not TRT_invalid and the other data
-     *  is valid.  See checkData() method for details.
+     *  The value is valid if the temporal range type is not DSRTypes::TRT_invalid and the other
+     *  data is valid.  See checkData() method for details.
      ** @return OFTrue if reference value is valid, OFFalse otherwise
      */
     virtual OFBool isValid() const;
@@ -161,7 +161,7 @@ class DCMTK_DCMSR_EXPORT DSRTemporalCoordinatesValue
 
     /** get current temporal range type.
      *  This value represents the type of temporal extent of the region of interest.
-     ** @return region type (might be TRT_invalid)
+     ** @return region type (might be DSRTypes::TRT_invalid)
      */
     inline DSRTypes::E_TemporalRangeType getTemporalRangeType() const
     {
@@ -170,7 +170,8 @@ class DCMTK_DCMSR_EXPORT DSRTemporalCoordinatesValue
 
     /** set current temporal range type.
      *  This value represents the type of temporal extent of the region of interest.
-     ** @param  temporalRangeType  temporal range type to be set (TRT_invalid is not allowed)
+     ** @param  temporalRangeType  temporal range type to be set (DSRTypes::TRT_invalid is not
+     *                             allowed)
      *  @param  check              dummy parameter (currently not used)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrtlist.h b/dcmsr/include/dcmtk/dcmsr/dsrtlist.h
index ed58b35..21e9446 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrtlist.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrtlist.h
@@ -29,6 +29,7 @@
 #include "dcmtk/dcmdata/dcerror.h"
 
 #include "dcmtk/ofstd/oflist.h"
+#include "dcmtk/ofstd/ofvector.h"
 
 
 /*---------------------*
@@ -148,6 +149,32 @@ template<class T> class DSRListOfItems
         return result;
     }
 
+    /** get copy of all items (as a vector)
+     ** @param  items  reference to a variable where the result should be stored.
+     *                 (always cleared before items are added)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItems(OFVector<T> &items) const
+    {
+        items.clear();
+        if (!ItemList.empty())
+        {
+            /* avoid re-allocations */
+            items.reserve(ItemList.size());
+            /* iterate over all list items */
+            const OFLIST_TYPENAME OFListConstIterator(T) endPos = ItemList.end();
+            OFLIST_TYPENAME OFListConstIterator(T) iterator = ItemList.begin();
+            while (iterator != endPos)
+            {
+                /* and copy them to the passed vector */
+                items.push_back(*iterator);
+                iterator++;
+            }
+        }
+        /* always return OK */
+        return EC_Normal;
+    }
+
     /** add item to the list
      ** @param  item  item to be added
      */
@@ -165,6 +192,20 @@ template<class T> class DSRListOfItems
             ItemList.push_back(item);
     }
 
+    /** add items to the list
+     ** @param  items  items to be added (stored as a vector)
+     */
+    inline void addItems(const OFVector<T> &items)
+    {
+        const OFTypename OFVector<T>::const_iterator endPos = items.end();
+        OFTypename OFVector<T>::const_iterator iterator = items.begin();
+        while (iterator != endPos)
+        {
+            ItemList.push_back(*iterator);
+            iterator++;
+        }
+    }
+
     /** insert item at specified position to the list
      ** @param  idx   index of the item before the new one should be inserted (starting from 1)
      *  @param  item  item to be inserted
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrtypes.h b/dcmsr/include/dcmtk/dcmsr/dsrtypes.h
index 5ba54ad..f4c0d2a 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrtypes.h
@@ -244,7 +244,7 @@ class DCMTK_DCMSR_EXPORT DSRTypes
 
   // --- constant declarations ---
 
-    /** @name read() flags.
+    /** @name read() flags
      *  These flags can be combined and passed to the read() methods.
      *  The 'shortcut' flags can be used for common combinations.
      */
@@ -273,7 +273,7 @@ class DCMTK_DCMSR_EXPORT DSRTypes
     //@}
 
 
-    /** @name renderHTML() flags.
+    /** @name renderHTML() flags
      *  These flags can be combined and passed to the renderHMTL() methods.
      *  Please note that only the 'external' flags can be used from outside
      *  this library.  The 'shortcut' flags can be used for common combinations.
@@ -354,7 +354,7 @@ class DCMTK_DCMSR_EXPORT DSRTypes
     //@}
 
 
-    /** @name read/writeXML() flags.
+    /** @name read/writeXML() flags
      *  These flags can be combined and passed to the read/writeXML() methods.
      *  The 'shortcut' flags can be used for common combinations.
      */
@@ -396,6 +396,9 @@ class DCMTK_DCMSR_EXPORT DSRTypes
     /// write: add comments with details at beginning/end of included template (might be useful for debugging purposes)
     static const size_t XF_addCommentsForIncludedTemplate;
 
+    /// read: accept empty Study/Series/SOP Instance UID attribute values (must be filled later)
+    static const size_t XF_acceptEmptyStudySeriesInstanceUID;
+
     /// shortcut: combines all XF_xxxAsAttribute write flags (see above)
     static const size_t XF_encodeEverythingAsAttribute;
     //@}
@@ -529,6 +532,8 @@ class DCMTK_DCMSR_EXPORT DSRTypes
         DT_ExtensibleSR,
         /// DICOM IOD: Acquisition Context SR
         DT_AcquisitionContextSR,
+        /// DICOM IOD: Simplified Adult Echo SR
+        DT_SimplifiedAdultEchoSR,
         /// internal type used to mark the last entry
         DT_last = DT_AcquisitionContextSR
     };
@@ -877,6 +882,12 @@ class DCMTK_DCMSR_EXPORT DSRTypes
      */
     static OFBool requiresEnhancedEquipmentModule(const E_DocumentType documentType);
 
+    /** check whether SR document type requires Timezone Module
+     ** @param  documentType  SR document type to be checked
+     ** @return OFTrue if Timezone Module is required, OFFalse otherwise
+     */
+    static OFBool requiresTimezoneModule(const E_DocumentType documentType);
+
     /** convert relationship type to DICOM defined term
      ** @param  relationshipType  relationship type to be converted
      ** @return defined term if type is valid, empty string otherwise (never NULL)
@@ -1095,7 +1106,6 @@ class DCMTK_DCMSR_EXPORT DSRTypes
     static const OFString &currentDate(OFString &dateString);
 
     /** get current time in DICOM 'TM' format. (HHMMSS)
-     *  The optional UTC notation (e.g. +0100) is currently not supported.
      ** @param  timeString  string used to store the current time
      *                      ('000000' if current time could not be retrieved)
      ** @return resulting character string (see 'timeString')
@@ -1112,6 +1122,13 @@ class DCMTK_DCMSR_EXPORT DSRTypes
      */
     static const OFString &currentDateTime(OFString &dateTimeString);
 
+    /** get local timezone in DICOM format. (&ZZXX)
+     ** @param  timezoneString  string used to store the local timezone
+     *                          ('+0000' if timezone could not be retrieved)
+     ** @return resulting character string (see 'timezoneString')
+     */
+    static const OFString &localTimezone(OFString &timezoneString);
+
     /** convert DICOM date string to readable format.
      *  The ISO format "YYYY-MM-DD" is used for the readable format.
      ** @param  dicomDate     date in DICOM DA format (YYYYMMDD)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrxmld.h b/dcmsr/include/dcmtk/dcmsr/dsrxmld.h
index 871e909..29ddb4c 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrxmld.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrxmld.h
@@ -83,8 +83,8 @@ class DCMTK_DCMSR_EXPORT DSRXMLDocument
   // --- input and output ---
 
     /** read XML document from file.
-     *  In order to enable the optional Schema validation the flag XF_validateSchema has
-     *  to be set.
+     *  In order to enable the optional Schema validation the flag DSRTypes::XF_validateSchema
+     *  has to be set.
      ** @param  filename  name of the file from which the XML document is read
      *                    ("-" for stdin)
      *  @param  flags     optional flag used to customize the reading process
@@ -222,7 +222,7 @@ class DCMTK_DCMSR_EXPORT DSRXMLDocument
      *  Additionally, by-reference relationships are also supported (either by attribute
      *  "ref" being present or element named "reference").
      ** @param  cursor  cursor pointing to the particular node
-     ** @return value type (incl. by-reference) if successful, VT_invalid/unknown otherwise
+     ** @return value type (incl. by-reference) if successful, DSRTypes::VT_invalid otherwise
      */
     E_ValueType getValueTypeFromNode(const DSRXMLCursor &cursor) const;
 
@@ -230,7 +230,8 @@ class DCMTK_DCMSR_EXPORT DSRXMLDocument
      *  The relationship type is either stored in the element "relationship" or in the
      *  attribute "relType".
      ** @param  cursor  cursor pointing to the particular node
-     ** @return relationship type if successful, RT_invalid/unknown otherwise
+     ** @return relationship type if successful, DSRTypes::RT_invalid or DSRTypes::RT_unknown
+     *          otherwise
      */
     E_RelationshipType getRelationshipTypeFromNode(const DSRXMLCursor &cursor) const;
 
@@ -242,6 +243,13 @@ class DCMTK_DCMSR_EXPORT DSRXMLDocument
      */
     void printUnexpectedNodeWarning(const DSRXMLCursor &cursor) const;
 
+    /** print warning message for missing attribute
+     ** @param  cursor  cursor pointing to the relevant node
+     *  @param  name    name of the XML attribute
+     */
+    void printMissingAttributeWarning(const DSRXMLCursor &cursor,
+                                      const char *name) const;
+
     /** print general node error message
      ** @param  cursor  cursor pointing to the unexpected node
      *  @param  result  status used to print details on the error (no message if EC_Normal)
@@ -268,11 +276,11 @@ class DCMTK_DCMSR_EXPORT DSRXMLDocument
 
   // --- static function ---
 
-    /** get the full path (incl. all predecessors) to the current node.
-     *  Returns "<invalid>" in case of an invalid 'cursor'.
+    /** get the full path (incl.\ all predecessors) to the current node
      ** @param  cursor       cursor pointing to the relevant node
      *  @param  stringValue  reference to string object in which the result should be stored
      *  @param  omitCurrent  flag indicating whether to omit the current node or not
+     ** @return resulting character string, set to "<invalid>" in case of an invalid 'cursor'
      */
     static OFString &getFullNodePath(const DSRXMLCursor &cursor,
                                      OFString &stringValue,
diff --git a/dcmsr/libcmr/cid100.cc b/dcmsr/libcmr/cid100.cc
index 7e89977..df1c08c 100644
--- a/dcmsr/libcmr/cid100.cc
+++ b/dcmsr/libcmr/cid100.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID100_QuantitativeDiagnosticImagingProcedures
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:37 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:40 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid10013.cc b/dcmsr/libcmr/cid10013.cc
index 39eec59..0eb6bc8 100644
--- a/dcmsr/libcmr/cid10013.cc
+++ b/dcmsr/libcmr/cid10013.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID10013_CTAcquisitionType
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:27:00 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:59:04 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid10033.cc b/dcmsr/libcmr/cid10033.cc
index 7ebbee8..dcfe31a 100644
--- a/dcmsr/libcmr/cid10033.cc
+++ b/dcmsr/libcmr/cid10033.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID10033_CTReconstructionAlgorithm
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:27:02 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:59:06 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid11.cc b/dcmsr/libcmr/cid11.cc
index 0ea6597..0f96372 100644
--- a/dcmsr/libcmr/cid11.cc
+++ b/dcmsr/libcmr/cid11.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID11_RouteOfAdministration
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:32 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:35 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid244.cc b/dcmsr/libcmr/cid244.cc
index f6affd9..4a5750b 100644
--- a/dcmsr/libcmr/cid244.cc
+++ b/dcmsr/libcmr/cid244.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID244_Laterality
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:38 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:42 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid29.cc b/dcmsr/libcmr/cid29.cc
index 770b2ac..882f894 100644
--- a/dcmsr/libcmr/cid29.cc
+++ b/dcmsr/libcmr/cid29.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID29_AcquisitionModality
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:33 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:37 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid4020.cc b/dcmsr/libcmr/cid4020.cc
index e64f47d..8d36f85 100644
--- a/dcmsr/libcmr/cid4020.cc
+++ b/dcmsr/libcmr/cid4020.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID4020_PETRadionuclide
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:40 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:44 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid4021.cc b/dcmsr/libcmr/cid4021.cc
index a64408e..e4350bb 100644
--- a/dcmsr/libcmr/cid4021.cc
+++ b/dcmsr/libcmr/cid4021.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID4021_PETRadiopharmaceutical
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:42 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:46 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid4031.cc b/dcmsr/libcmr/cid4031.cc
index 5e9dfee..9fe12c0 100644
--- a/dcmsr/libcmr/cid4031.cc
+++ b/dcmsr/libcmr/cid4031.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID4031_CommonAnatomicRegions
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:44 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:47 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid42.cc b/dcmsr/libcmr/cid42.cc
index 02c6ce3..b1c2115 100644
--- a/dcmsr/libcmr/cid42.cc
+++ b/dcmsr/libcmr/cid42.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID42_NumericValueQualifier
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:35 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:39 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid5000.cc b/dcmsr/libcmr/cid5000.cc
index 7921bb9..da64f58 100644
--- a/dcmsr/libcmr/cid5000.cc
+++ b/dcmsr/libcmr/cid5000.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID5000_Languages
@@ -147,19 +147,19 @@ CID5000_Languages::CodeList &CID5000_Languages::getCodes()
     {
         /* create a new code list (should never fail) */
         Codes = new CodeList();
-        /*Codes and initialize it by adding the coded entries */
-        Codes->insert(OFMake_pair(English, DSRBasicCodedEntry("eng", "IETF4646", "English")));
-        Codes->insert(OFMake_pair(English_CA, DSRBasicCodedEntry("en-CA", "IETF4646", "English (CA)")));
-        Codes->insert(OFMake_pair(English_GB, DSRBasicCodedEntry("en-GB", "IETF4646", "English (GB)")));
-        Codes->insert(OFMake_pair(English_US, DSRBasicCodedEntry("en-US", "IETF4646", "English (US)")));
-        Codes->insert(OFMake_pair(French, DSRBasicCodedEntry("fra", "IETF4646", "French")));
-        Codes->insert(OFMake_pair(French_CA, DSRBasicCodedEntry("fr-CA", "IETF4646", "French (CA)")));
-        Codes->insert(OFMake_pair(French_CH, DSRBasicCodedEntry("fr-CH", "IETF4646", "French (CH)")));
-        Codes->insert(OFMake_pair(French_FR, DSRBasicCodedEntry("fr-FR", "IETF4646", "French (FR)")));
-        Codes->insert(OFMake_pair(German, DSRBasicCodedEntry("deu", "IETF4646", "German")));
-        Codes->insert(OFMake_pair(German_AT, DSRBasicCodedEntry("de-AT", "IETF4646", "German (AT)")));
-        Codes->insert(OFMake_pair(German_CH, DSRBasicCodedEntry("de-CH", "IETF4646", "German (CH)")));
-        Codes->insert(OFMake_pair(German_DE, DSRBasicCodedEntry("de-DE", "IETF4646", "German (DE)")));
+        /* and initialize it by adding the coded entries */
+        Codes->insert(OFMake_pair(English, DSRBasicCodedEntry("eng", "RFC5646", "English")));
+        Codes->insert(OFMake_pair(English_CA, DSRBasicCodedEntry("en-CA", "RFC5646", "English (CA)")));
+        Codes->insert(OFMake_pair(English_GB, DSRBasicCodedEntry("en-GB", "RFC5646", "English (GB)")));
+        Codes->insert(OFMake_pair(English_US, DSRBasicCodedEntry("en-US", "RFC5646", "English (US)")));
+        Codes->insert(OFMake_pair(French, DSRBasicCodedEntry("fra", "RFC5646", "French")));
+        Codes->insert(OFMake_pair(French_CA, DSRBasicCodedEntry("fr-CA", "RFC5646", "French (CA)")));
+        Codes->insert(OFMake_pair(French_CH, DSRBasicCodedEntry("fr-CH", "RFC5646", "French (CH)")));
+        Codes->insert(OFMake_pair(French_FR, DSRBasicCodedEntry("fr-FR", "RFC5646", "French (FR)")));
+        Codes->insert(OFMake_pair(German, DSRBasicCodedEntry("deu", "RFC5646", "German")));
+        Codes->insert(OFMake_pair(German_AT, DSRBasicCodedEntry("de-AT", "RFC5646", "German (AT)")));
+        Codes->insert(OFMake_pair(German_CH, DSRBasicCodedEntry("de-CH", "RFC5646", "German (CH)")));
+        Codes->insert(OFMake_pair(German_DE, DSRBasicCodedEntry("de-DE", "RFC5646", "German (DE)")));
     }
     /* should never be NULL */
     return *Codes;
diff --git a/dcmsr/libcmr/cid6147.cc b/dcmsr/libcmr/cid6147.cc
index 14cdec8..4b6bee9 100644
--- a/dcmsr/libcmr/cid6147.cc
+++ b/dcmsr/libcmr/cid6147.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID6147_ResponseCriteria
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:45 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:49 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7021.cc b/dcmsr/libcmr/cid7021.cc
index 7680f03..607327c 100644
--- a/dcmsr/libcmr/cid7021.cc
+++ b/dcmsr/libcmr/cid7021.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID7021_MeasurementReportDocumentTitles
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:47 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:52 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7181.cc b/dcmsr/libcmr/cid7181.cc
index baf6763..7378ee4 100644
--- a/dcmsr/libcmr/cid7181.cc
+++ b/dcmsr/libcmr/cid7181.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID7181_AbstractMultiDimensionalImageModelComponentUnits
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:49 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:54 by J. Riesmeier
  *
  */
 
@@ -18,7 +18,7 @@
 
 // general information on CID 7181 (Abstract Multi-dimensional Image Model Component Units)
 #define CONTEXT_GROUP_NUMBER  "7181"
-#define CONTEXT_GROUP_VERSION "20141110"
+#define CONTEXT_GROUP_VERSION "20161106"
 #define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.918"
 #define CONTEXT_GROUP_TYPE    OFTrue  /* extensible */
 
@@ -169,6 +169,7 @@ CID7181_AbstractMultiDimensionalImageModelComponentUnits::CodeList &CID7181_Abst
         Codes->insert(OFMake_pair(CubicMicrometer, DSRBasicCodedEntry("um3", "UCUM", "cubic micrometer")));
         Codes->insert(OFMake_pair(StandardizedUptakeValueBodyWeight, DSRBasicCodedEntry("g/ml{SUVbw}", "UCUM", "Standardized Uptake Value body weight")));
         Codes->insert(OFMake_pair(StandardizedUptakeValueLeanBodyMassJames, DSRBasicCodedEntry("g/ml{SUVlbm}", "UCUM", "Standardized Uptake Value lean body mass (James)")));
+        Codes->insert(OFMake_pair(StandardizedUptakeValueLeanBodyMassJames128Multiplier, DSRBasicCodedEntry("g/ml{SUVlbm(James128)}", "UCUM", "Standardized Uptake Value lean body mass (James 128 multiplier)")));
         Codes->insert(OFMake_pair(StandardizedUptakeValueLeanBodyMassJanma, DSRBasicCodedEntry("g/ml{SUVlbm(Janma)}", "UCUM", "Standardized Uptake Value lean body mass (Janma)")));
         Codes->insert(OFMake_pair(StandardizedUptakeValueBodySurfaceArea, DSRBasicCodedEntry("cm2/ml{SUVbsa}", "UCUM", "Standardized Uptake Value body surface area")));
         Codes->insert(OFMake_pair(StandardizedUptakeValueIdealBodyWeight, DSRBasicCodedEntry("g/ml{SUVibw}", "UCUM", "Standardized Uptake Value ideal body weight")));
@@ -188,6 +189,7 @@ CID7181_AbstractMultiDimensionalImageModelComponentUnits::CodeList &CID7181_Abst
         Codes->insert(OFMake_pair(Ratio, DSRBasicCodedEntry("{ratio}", "UCUM", "ratio")));
         Codes->insert(OFMake_pair(HounsfieldUnit, DSRBasicCodedEntry("[hnsf'U]", "UCUM", "Hounsfield Unit")));
         Codes->insert(OFMake_pair(ArbitraryUnit, DSRBasicCodedEntry("[arb'U]", "UCUM", "arbitrary unit")));
+        Codes->insert(OFMake_pair(Ppm, DSRBasicCodedEntry("ppm", "UCUM", "ppm")));
         Codes->insert(OFMake_pair(CentimeterPerSecond, DSRBasicCodedEntry("cm/s", "UCUM", "centimeter/second")));
         Codes->insert(OFMake_pair(MillimeterPerSecond, DSRBasicCodedEntry("mm/s", "UCUM", "millimeter/second")));
         Codes->insert(OFMake_pair(Decibel, DSRBasicCodedEntry("dB", "UCUM", "decibel")));
diff --git a/dcmsr/libcmr/cid7445.cc b/dcmsr/libcmr/cid7445.cc
index 035cdb5..7d8ec9a 100644
--- a/dcmsr/libcmr/cid7445.cc
+++ b/dcmsr/libcmr/cid7445.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID7445_DeviceParticipatingRoles
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:51 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:55 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7452.cc b/dcmsr/libcmr/cid7452.cc
index a54cbfd..e6ee43f 100644
--- a/dcmsr/libcmr/cid7452.cc
+++ b/dcmsr/libcmr/cid7452.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID7452_OrganizationalRoles
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:53 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:57 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7453.cc b/dcmsr/libcmr/cid7453.cc
index 2d74874..dd1e7b4 100644
--- a/dcmsr/libcmr/cid7453.cc
+++ b/dcmsr/libcmr/cid7453.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID7453_PerformingRoles
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:55 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:58:59 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7464.cc b/dcmsr/libcmr/cid7464.cc
index f0dd006..47067f9 100644
--- a/dcmsr/libcmr/cid7464.cc
+++ b/dcmsr/libcmr/cid7464.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID7464_GeneralRegionOfInterestMeasurementModifiers
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:57 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:59:01 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7469.cc b/dcmsr/libcmr/cid7469.cc
index e41b27c..976f122 100644
--- a/dcmsr/libcmr/cid7469.cc
+++ b/dcmsr/libcmr/cid7469.cc
@@ -5,8 +5,8 @@
  *
  *  Source file for class CID7469_GenericIntensityAndSizeMeasurements
  *
- *  Generated automatically from DICOM PS 3.16-2016b
- *  File created on 2016-04-06 16:26:59 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2016e
+ *  File created on 2016-11-23 13:59:03 by J. Riesmeier
  *
  */
 
@@ -236,7 +236,9 @@ CID7469_GenericIntensityAndSizeMeasurements::CodeList &CID7469_GenericIntensityA
         Codes->insert(OFMake_pair(FractionalOccupancySegmentation, DSRBasicCodedEntry("110855", "DCM", "Fractional Occupancy Segmentation")));
         Codes->insert(OFMake_pair(R1, DSRBasicCodedEntry("126393", "DCM", "R1")));
         Codes->insert(OFMake_pair(R2, DSRBasicCodedEntry("126394", "DCM", "R2")));
+        Codes->insert(OFMake_pair(R2Star, DSRBasicCodedEntry("126395", "DCM", "R2*")));
         Codes->insert(OFMake_pair(MagnetizationTransferRatio, DSRBasicCodedEntry("113098", "DCM", "Magnetization Transfer Ratio")));
+        Codes->insert(OFMake_pair(MagneticSusceptibility, DSRBasicCodedEntry("126396", "DCM", "Magnetic Susceptibility")));
         Codes->insert(OFMake_pair(Ktrans, DSRBasicCodedEntry("126312", "DCM", "Ktrans")));
         Codes->insert(OFMake_pair(Kep, DSRBasicCodedEntry("126313", "DCM", "kep")));
         Codes->insert(OFMake_pair(Ve, DSRBasicCodedEntry("126314", "DCM", "ve")));
@@ -249,6 +251,7 @@ CID7469_GenericIntensityAndSizeMeasurements::CodeList &CID7469_GenericIntensityA
         Codes->insert(OFMake_pair(MeanTransitTime, DSRBasicCodedEntry("113052", "DCM", "Mean Transit Time")));
         Codes->insert(OFMake_pair(TimeToPeak, DSRBasicCodedEntry("113069", "DCM", "Time To Peak")));
         Codes->insert(OFMake_pair(OxygenExtractionFraction, DSRBasicCodedEntry("126392", "DCM", "Oxygen Extraction Fraction")));
+        Codes->insert(OFMake_pair(Tmax, DSRBasicCodedEntry("113084", "DCM", "Tmax")));
         Codes->insert(OFMake_pair(IAUC, DSRBasicCodedEntry("126320", "DCM", "IAUC")));
         Codes->insert(OFMake_pair(IAUC60, DSRBasicCodedEntry("126321", "DCM", "IAUC60")));
         Codes->insert(OFMake_pair(IAUC90, DSRBasicCodedEntry("126322", "DCM", "IAUC90")));
@@ -267,6 +270,7 @@ CID7469_GenericIntensityAndSizeMeasurements::CodeList &CID7469_GenericIntensityA
         Codes->insert(OFMake_pair(StandardizedUptakeValue, DSRBasicCodedEntry("126400", "DCM", "Standardized Uptake Value")));
         Codes->insert(OFMake_pair(SUVbw, DSRBasicCodedEntry("126401", "DCM", "SUVbw")));
         Codes->insert(OFMake_pair(SUVlbm, DSRBasicCodedEntry("126402", "DCM", "SUVlbm")));
+        Codes->insert(OFMake_pair(SUVlbmJames128, DSRBasicCodedEntry("126406", "DCM", "SUVlbm(James128)")));
         Codes->insert(OFMake_pair(SUVlbmJanma, DSRBasicCodedEntry("126405", "DCM", "SUVlbm(Janma)")));
         Codes->insert(OFMake_pair(SUVbsa, DSRBasicCodedEntry("126403", "DCM", "SUVbsa")));
         Codes->insert(OFMake_pair(SUVibw, DSRBasicCodedEntry("126404", "DCM", "SUVibw")));
diff --git a/dcmsr/libcmr/tid1600.cc b/dcmsr/libcmr/tid1600.cc
index 13baa0b..1f2f68d 100644
--- a/dcmsr/libcmr/tid1600.cc
+++ b/dcmsr/libcmr/tid1600.cc
@@ -647,7 +647,7 @@ OFCondition TID1600_ImageLibrary::addMagneticResonanceDescriptors(DSRDocumentSub
     if ((getStringValueFromDataset(dataset, DCM_PulseSequenceName, sequenceName).good() && !sequenceName.empty()) ||
         (getStringValueFromDataset(dataset, DCM_SequenceName, sequenceName).good() && !sequenceName.empty()))
     {
-        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Text, DSRCodedEntryValue("110909", "DCM", "Pulse Sequence Name") /* wrong definition: will be fixed with CP-1578 */, check));
+        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Text, CODE_DCM_PulseSequenceName, check));
         CHECK_RESULT(tree.getCurrentContentItem().setStringValue(sequenceName, check));
         CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1606 - Row 1"));
     }
diff --git a/dcmsr/libsrc/CMakeLists.txt b/dcmsr/libsrc/CMakeLists.txt
index 5c69202..0304223 100644
--- a/dcmsr/libsrc/CMakeLists.txt
+++ b/dcmsr/libsrc/CMakeLists.txt
@@ -1,5 +1,5 @@
 # create library from source files
-DCMTK_ADD_LIBRARY(dcmsr dsrcitem dsrcodtn dsrcodvl dsrcomtn dsrcomvl dsrcontn dsrcsidl dsrdattn dsrdncsr dsrdoc dsrdocst dsrdoctn dsrdoctr dsrdtitn dsrimgfr dsrimgse dsrimgtn dsrimgvl dsrnumtn dsrnumvl dsrpnmtn dsrposcn dsrrefin dsrreftn dsrscogr dsrsc3gr dsrscotn dsrsc3tn dsrscovl dsrsc3vl dsrsoprf dsrstrvl dsrtcodt dsrtcosp dsrtcotn dsrtcoto dsrtcovl dsrtextn dsrtimtn dsrtpltn dsrtree dsrtypes dsruidtn dsrwavch dsrwavtn dsrwavvl dsrxmlc dsrxmld dsriodcc dsrbascc dsrenhcc dsrcomcc dsrke [...]
+DCMTK_ADD_LIBRARY(dcmsr dsrcitem dsrcodtn dsrcodvl dsrcomtn dsrcomvl dsrcontn dsrcsidl dsrdattn dsrdncsr dsrdoc dsrdocst dsrdoctn dsrdoctr dsrdtitn dsrimgfr dsrimgse dsrimgtn dsrimgvl dsrnumtn dsrnumvl dsrpnmtn dsrposcn dsrrefin dsrreftn dsrscogr dsrsc3gr dsrscotn dsrsc3tn dsrscovl dsrsc3vl dsrsoprf dsrstrvl dsrtcodt dsrtcosp dsrtcotn dsrtcoto dsrtcovl dsrtextn dsrtimtn dsrtpltn dsrtree dsrtypes dsruidtn dsrwavch dsrwavtn dsrwavvl dsrxmlc dsrxmld dsriodcc dsrbascc dsrenhcc dsrcomcc dsrke [...]
 
 DCMTK_TARGET_LINK_MODULES(dcmsr ofstd oflog dcmdata dcmimgle dcmimage)
 DCMTK_TARGET_LINK_LIBRARIES(dcmsr ${LIBXML_LIBS})
diff --git a/dcmsr/libsrc/Makefile.dep b/dcmsr/libsrc/Makefile.dep
index c07a302..e0af225 100644
--- a/dcmsr/libsrc/Makefile.dep
+++ b/dcmsr/libsrc/Makefile.dep
@@ -1672,7 +1672,11 @@ dsrimgfr.o: dsrimgfr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtlist.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/nsdfti.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def
 dsrimgse.o: dsrimgse.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
@@ -1733,7 +1737,11 @@ dsrimgse.o: dsrimgse.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../include/dcmtk/dcmsr/dsrtlist.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/nsdfti.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def
 dsrimgtn.o: dsrimgtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtypes.h ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -2776,6 +2784,64 @@ dsrrtpl.o: dsrrtpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
  ../include/dcmtk/dcmsr/dsrstpl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
+dsrsaecc.o: dsrsaecc.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/dsrsaecc.h ../include/dcmtk/dcmsr/dsriodcc.h \
+ ../include/dcmtk/dcmsr/dsrtypes.h ../include/dcmtk/dcmsr/dsdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h
 dsrsc3gr.o: dsrsc3gr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrsc3gr.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
@@ -2836,7 +2902,11 @@ dsrsc3gr.o: dsrsc3gr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../include/dcmtk/dcmsr/dsrtlist.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/nsdfti.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def
 dsrsc3tn.o: dsrsc3tn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtypes.h ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3028,7 +3098,11 @@ dsrscogr.o: dsrscogr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../include/dcmtk/dcmsr/dsrtlist.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/nsdfti.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def
 dsrscotn.o: dsrscotn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtypes.h ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3490,7 +3564,11 @@ dsrtcodt.o: dsrtcodt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
  ../../ofstd/include/dcmtk/ofstd/ofdate.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/nsdfti.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def
 dsrtcosp.o: dsrtcosp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcosp.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
@@ -3551,7 +3629,11 @@ dsrtcosp.o: dsrtcosp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
  ../include/dcmtk/dcmsr/dsrtlist.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/nsdfti.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def
 dsrtcotn.o: dsrtcotn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtypes.h ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3682,7 +3764,11 @@ dsrtcoto.o: dsrtcoto.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtlist.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/nsdfti.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def
 dsrtcovl.o: dsrtcovl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcovl.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
@@ -4123,6 +4209,7 @@ dsrtypes.o: dsrtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrspecc.h ../include/dcmtk/dcmsr/dsrmaccc.h \
  ../include/dcmtk/dcmsr/dsrimpcc.h ../include/dcmtk/dcmsr/dsrc3dcc.h \
  ../include/dcmtk/dcmsr/dsrrrdcc.h ../include/dcmtk/dcmsr/dsracqcc.h \
+ ../include/dcmtk/dcmsr/dsrsaecc.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
@@ -4264,7 +4351,11 @@ dsrwavch.o: dsrwavch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/nsdfti.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def
 dsrwavtn.o: dsrwavtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtypes.h ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
diff --git a/dcmsr/libsrc/Makefile.in b/dcmsr/libsrc/Makefile.in
index 318eab2..625bf55 100644
--- a/dcmsr/libsrc/Makefile.in
+++ b/dcmsr/libsrc/Makefile.in
@@ -33,7 +33,7 @@ objs = dsrdoc.o dsrposcn.o dsrdncsr.o dsrtree.o dsrdoctn.o dsrdoctr.o \
 	dsrsoprf.o dsrrefin.o dsrcsidl.o dsrxmlc.o dsrxmld.o \
 	dsriodcc.o dsrbascc.o dsrenhcc.o dsrcomcc.o dsrkeycc.o dsrmamcc.o \
 	dsrchecc.o dsrcolcc.o dsrprocc.o dsrxrdcc.o dsrspecc.o dsrmaccc.o \
-	dsrimpcc.o dsrc3dcc.o dsrrrdcc.o dsracqcc.o
+	dsrimpcc.o dsrc3dcc.o dsrrrdcc.o dsracqcc.o dsrsaecc.o
 library = libdcmsr.$(LIBEXT)
 
 
diff --git a/dcmsr/libsrc/dsrcsidl.cc b/dcmsr/libsrc/dsrcsidl.cc
index 73f895f..7d50c22 100644
--- a/dcmsr/libsrc/dsrcsidl.cc
+++ b/dcmsr/libsrc/dsrcsidl.cc
@@ -70,7 +70,7 @@ void DSRCodingSchemeIdentificationList::clear()
 }
 
 
-OFBool DSRCodingSchemeIdentificationList::empty() const
+OFBool DSRCodingSchemeIdentificationList::isEmpty() const
 {
     return ItemList.empty();
 }
diff --git a/dcmsr/libsrc/dsrdoc.cc b/dcmsr/libsrc/dsrdoc.cc
index 00f2abe..d723303 100644
--- a/dcmsr/libsrc/dsrdoc.cc
+++ b/dcmsr/libsrc/dsrdoc.cc
@@ -69,6 +69,7 @@ DSRDocument::DSRDocument(const E_DocumentType documentType)
     InstanceCreationTime(DCM_InstanceCreationTime),
     InstanceCreatorUID(DCM_InstanceCreatorUID),
     CodingSchemeIdentification(),
+    TimezoneOffsetFromUTC(DCM_TimezoneOffsetFromUTC),
     StudyInstanceUID(DCM_StudyInstanceUID),
     StudyDate(DCM_StudyDate),
     StudyTime(DCM_StudyTime),
@@ -135,6 +136,7 @@ void DSRDocument::clear()
     InstanceCreationTime.clear();
     InstanceCreatorUID.clear();
     CodingSchemeIdentification.clear();
+    TimezoneOffsetFromUTC.clear();
     StudyInstanceUID.clear();
     StudyDate.clear();
     StudyTime.clear();
@@ -305,7 +307,7 @@ OFCondition DSRDocument::print(STD_NAMESPACE ostream &stream,
                     DCMSR_PRINT_HEADER_FIELD_END
                 }
                 /* predecessor documents */
-                if (!PredecessorDocuments.empty())
+                if (!PredecessorDocuments.isEmpty())
                 {
                     DCMSR_PRINT_HEADER_FIELD_START("Predecessor Docs   ", " : ")
                     stream << PredecessorDocuments.getNumberOfInstances();
@@ -313,14 +315,14 @@ OFCondition DSRDocument::print(STD_NAMESPACE ostream &stream,
                 }
             }
             /* identical documents */
-            if (!IdenticalDocuments.empty())
+            if (!IdenticalDocuments.isEmpty())
             {
                 DCMSR_PRINT_HEADER_FIELD_START("Identical Docs     ", " : ")
                 stream << IdenticalDocuments.getNumberOfInstances();
                 DCMSR_PRINT_HEADER_FIELD_END
             }
             /* referenced instances */
-            if (!ReferencedInstances.empty())
+            if (!ReferencedInstances.isEmpty())
             {
                 DCMSR_PRINT_HEADER_FIELD_START("References Objects ", " : ")
                 stream << ReferencedInstances.getNumberOfItems();
@@ -452,6 +454,14 @@ OFCondition DSRDocument::read(DcmItem &dataset,
         getAndCheckElementFromDataset(dataset, InstanceCreationTime, "1", "3", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, InstanceCreatorUID, "1", "3", "SOPCommonModule");
         CodingSchemeIdentification.read(dataset, flags);
+        if (requiresTimezoneModule(documentType))
+        {
+            // --- Timezone Module ---
+            getAndCheckElementFromDataset(dataset, TimezoneOffsetFromUTC, "1", "1", "TimezoneModule");
+        } else {
+            // --- SOP Common Module ---
+            getAndCheckElementFromDataset(dataset, TimezoneOffsetFromUTC, "1", "3", "SOPCommonModule");
+        }
 
         // --- General Study and Patient Module ---
         readStudyData(dataset, flags);
@@ -623,6 +633,14 @@ OFCondition DSRDocument::write(DcmItem &dataset,
         addElementToDataset(result, dataset, new DcmTime(InstanceCreationTime), "1", "3", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(InstanceCreatorUID), "1", "3", "SOPCommonModule");
         CodingSchemeIdentification.write(dataset);
+        if (requiresTimezoneModule(getDocumentType()))
+        {
+            // --- Timezone Module ---
+            addElementToDataset(result, dataset, new DcmShortString(TimezoneOffsetFromUTC), "1", "1", "TimezoneModule");
+        } else {
+            // --- SOP Common Module ---
+            addElementToDataset(result, dataset, new DcmShortString(TimezoneOffsetFromUTC), "1", "3", "SOPCommonModule");
+        }
 
         // --- General Study Module ---
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(StudyInstanceUID), "1", "1", "GeneralStudyModule");
@@ -795,6 +813,10 @@ OFCondition DSRDocument::readXMLDocumentHeader(DSRXMLDocument &doc,
                     doc.printUnexpectedNodeWarning(cursor);
                 }
             }
+            else if (doc.matchNode(cursor, "timezone"))
+            {
+                doc.getElementFromNodeContent(cursor, TimezoneOffsetFromUTC, NULL, OFTrue /*encoding*/);
+            }
             else if (doc.matchNode(cursor, "modality"))
             {
                 OFString tmpString;
@@ -910,14 +932,20 @@ OFCondition DSRDocument::readXMLPatientData(const DSRXMLDocument &doc,
 
 OFCondition DSRDocument::readXMLStudyData(const DSRXMLDocument &doc,
                                           DSRXMLCursor cursor,
-                                          const size_t /*flags*/)
+                                          const size_t flags)
 {
     OFCondition result = SR_EC_InvalidDocument;
     if (cursor.valid())
     {
         OFString tmpString;
         /* get Study Instance UID from XML attribute */
-        result = doc.getElementFromAttribute(cursor, StudyInstanceUID, "uid");
+        if (flags & XF_acceptEmptyStudySeriesInstanceUID)
+        {
+            if (doc.getElementFromAttribute(cursor, StudyInstanceUID, "uid", OFFalse /*encoding*/, OFFalse /*required*/).bad())
+                doc.printMissingAttributeWarning(cursor, "uid");
+            result = EC_Normal;
+        } else
+            result = doc.getElementFromAttribute(cursor, StudyInstanceUID, "uid");
         /* goto first sub-element */
         cursor.gotoChild();
         /* iterate over all nodes */
@@ -956,14 +984,20 @@ OFCondition DSRDocument::readXMLStudyData(const DSRXMLDocument &doc,
 
 OFCondition DSRDocument::readXMLSeriesData(const DSRXMLDocument &doc,
                                            DSRXMLCursor cursor,
-                                           const size_t /*flags*/)
+                                           const size_t flags)
 {
     OFCondition result = SR_EC_InvalidDocument;
     if (cursor.valid())
     {
         OFString tmpString;
         /* get Series Instance UID from XML attribute */
-        result = doc.getElementFromAttribute(cursor, SeriesInstanceUID, "uid");
+        if (flags & XF_acceptEmptyStudySeriesInstanceUID)
+        {
+            if (doc.getElementFromAttribute(cursor, SeriesInstanceUID, "uid", OFFalse /*encoding*/, OFFalse /*required*/).bad())
+                doc.printMissingAttributeWarning(cursor, "uid");
+            result = EC_Normal;
+        } else
+            result = doc.getElementFromAttribute(cursor, SeriesInstanceUID, "uid");
         /* goto first sub-element */
         cursor.gotoChild();
         /* iterate over all nodes */
@@ -999,14 +1033,20 @@ OFCondition DSRDocument::readXMLSeriesData(const DSRXMLDocument &doc,
 
 OFCondition DSRDocument::readXMLInstanceData(const DSRXMLDocument &doc,
                                              DSRXMLCursor cursor,
-                                             const size_t /*flags*/)
+                                             const size_t flags)
 {
     OFCondition result = SR_EC_InvalidDocument;
     if (cursor.valid())
     {
         OFString tmpString;
         /* get SOP Instance UID from XML attribute */
-        result = doc.getElementFromAttribute(cursor, SOPInstanceUID, "uid");
+        if (flags & XF_acceptEmptyStudySeriesInstanceUID)
+        {
+            if (doc.getElementFromAttribute(cursor, SOPInstanceUID, "uid", OFFalse /*encoding*/, OFFalse /*required*/).bad())
+                doc.printMissingAttributeWarning(cursor, "uid");
+            result = EC_Normal;
+        } else
+            result = doc.getElementFromAttribute(cursor, SOPInstanceUID, "uid");
         /* goto first sub-element */
         cursor.gotoChild();
         /* iterate over all nodes */
@@ -1015,6 +1055,8 @@ OFCondition DSRDocument::readXMLInstanceData(const DSRXMLDocument &doc,
             /* check for known element tags */
             if (doc.matchNode(cursor, "creation"))
             {
+                /* Instance Creator UID */
+                doc.getElementFromAttribute(cursor, InstanceCreatorUID, "uid", OFFalse /*encoding*/, OFFalse /*required*/);
                 /* Instance Creation Date */
                 DSRDateTreeNode::getValueFromXMLNodeContent(doc, doc.getNamedNode(cursor.getChild(), "date"), tmpString);
                 InstanceCreationDate.putOFStringArray(tmpString);
@@ -1224,6 +1266,7 @@ OFCondition DSRDocument::writeXML(STD_NAMESPACE ostream &stream,
         stream << dcmFindNameOfUID(tmpString.c_str(), "" /* empty value as default */);
         stream << "</sopclass>" << OFendl;
         writeStringFromElementToXML(stream, SpecificCharacterSet, "charset", (flags & XF_writeEmptyTags) > 0);
+        writeStringFromElementToXML(stream, TimezoneOffsetFromUTC, "timezone", (flags & XF_writeEmptyTags) > 0);
         writeStringFromElementToXML(stream, Modality, "modality", (flags & XF_writeEmptyTags) > 0);
         /* check for additional device information */
         if (!ManufacturerModelName.isEmpty())
@@ -1299,13 +1342,13 @@ OFCondition DSRDocument::writeXML(STD_NAMESPACE ostream &stream,
         }
         stream << "</instance>" << OFendl;
 
-        if ((flags & XF_writeEmptyTags) || !CodingSchemeIdentification.empty())
+        if ((flags & XF_writeEmptyTags) || !CodingSchemeIdentification.isEmpty())
         {
             stream << "<coding>" << OFendl;
             CodingSchemeIdentification.writeXML(stream, flags);
             stream << "</coding>" << OFendl;
         }
-        if ((flags & XF_writeEmptyTags) || !CurrentRequestedProcedureEvidence.empty())
+        if ((flags & XF_writeEmptyTags) || !CurrentRequestedProcedureEvidence.isEmpty())
         {
             stream << "<evidence type=\"Current Requested Procedure\">" << OFendl;
             CurrentRequestedProcedureEvidence.writeXML(stream, flags);
@@ -1313,13 +1356,13 @@ OFCondition DSRDocument::writeXML(STD_NAMESPACE ostream &stream,
         }
         if (getDocumentType() != DT_KeyObjectSelectionDocument)
         {
-            if ((flags & XF_writeEmptyTags) || !PertinentOtherEvidence.empty())
+            if ((flags & XF_writeEmptyTags) || !PertinentOtherEvidence.isEmpty())
             {
                 stream << "<evidence type=\"Pertinent Other\">" << OFendl;
                 PertinentOtherEvidence.writeXML(stream, flags);
                 stream << "</evidence>" << OFendl;
             }
-            if ((flags & XF_writeEmptyTags) || !ReferencedInstances.empty())
+            if ((flags & XF_writeEmptyTags) || !ReferencedInstances.isEmpty())
             {
                 stream << "<reference>" << OFendl;
                 ReferencedInstances.writeXML(stream, flags);
@@ -1366,14 +1409,14 @@ OFCondition DSRDocument::writeXML(STD_NAMESPACE ostream &stream,
             }
             stream << "</verification>" << OFendl;
 
-            if ((flags & XF_writeEmptyTags) || !PredecessorDocuments.empty())
+            if ((flags & XF_writeEmptyTags) || !PredecessorDocuments.isEmpty())
             {
                 stream << "<predecessor>" << OFendl;
                 PredecessorDocuments.writeXML(stream, flags);
                 stream << "</predecessor>" << OFendl;
             }
         }
-        if ((flags & XF_writeEmptyTags) || !IdenticalDocuments.empty())
+        if ((flags & XF_writeEmptyTags) || !IdenticalDocuments.isEmpty())
         {
             stream << "<identical>" << OFendl;
             IdenticalDocuments.writeXML(stream, flags);
@@ -1539,7 +1582,7 @@ OFCondition DSRDocument::renderHTML(STD_NAMESPACE ostream &stream,
         /* used for HTML tmpString conversion */
         OFString htmlString;
         /* update only some DICOM attributes */
-        updateAttributes(OFFalse /* updateAll */);
+        updateAttributes(OFFalse /*updateAll*/);
 
         // --- HTML/XHTML document structure (start) ---
 
@@ -1742,7 +1785,7 @@ OFCondition DSRDocument::renderHTML(STD_NAMESPACE ostream &stream,
                     stream << "</tr>" << OFendl;
                 }
                 /* predecessor documents */
-                if (!PredecessorDocuments.empty())
+                if (!PredecessorDocuments.isEmpty())
                 {
                     stream << "<tr>" << OFendl;
                     stream << "<td><b>Predecessor Docs:</b></td>" << OFendl;
@@ -1751,7 +1794,7 @@ OFCondition DSRDocument::renderHTML(STD_NAMESPACE ostream &stream,
                 }
             }
             /* identical documents */
-            if (!IdenticalDocuments.empty())
+            if (!IdenticalDocuments.isEmpty())
             {
                 stream << "<tr>" << OFendl;
                 stream << "<td><b>Identical Docs:</b></td>" << OFendl;
@@ -1759,7 +1802,7 @@ OFCondition DSRDocument::renderHTML(STD_NAMESPACE ostream &stream,
                 stream << "</tr>" << OFendl;
             }
             /* referenced instances */
-            if (!ReferencedInstances.empty())
+            if (!ReferencedInstances.isEmpty())
             {
                 stream << "<tr>" << OFendl;
                 stream << "<td><b>Referenced Objects:</b></td>" << OFendl;
@@ -1981,7 +2024,13 @@ DSRTypes::E_VerificationFlag DSRDocument::getVerificationFlag() const
 }
 
 
-size_t DSRDocument::getNumberOfVerifyingObservers()
+OFBool DSRDocument::hasVerifyingObservers() const
+{
+    return (VerifyingObserver.card() > 0);
+}
+
+
+size_t DSRDocument::getNumberOfVerifyingObservers() const
 {
     return OFstatic_cast(size_t, VerifyingObserver.card());
 }
@@ -2140,6 +2189,13 @@ OFCondition DSRDocument::getInstanceCreatorUID(OFString &value,
 }
 
 
+OFCondition DSRDocument::getTimezoneOffsetFromUTC(OFString &value,
+                                                  const signed long pos) const
+{
+    return getStringValueFromElement(TimezoneOffsetFromUTC, value, pos);
+}
+
+
 OFCondition DSRDocument::getPatientName(OFString &value,
                                         const signed long pos) const
 {
@@ -2343,6 +2399,16 @@ OFCondition DSRDocument::setCompletionFlagDescription(const OFString &value,
 }
 
 
+OFCondition DSRDocument::setTimezoneOffsetFromUTC(const OFString &value,
+                                                  const OFBool check)
+{
+    OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1", getSpecificCharacterSet()) : EC_Normal;
+    if (result.good())
+        result = TimezoneOffsetFromUTC.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DSRDocument::setPatientName(const OFString &value,
                                         const OFBool check)
 {
@@ -2831,6 +2897,7 @@ OFCondition DSRDocument::finalizeDocument()
 
 void DSRDocument::updateAttributes(const OFBool updateAll)
 {
+    DCMSR_DEBUG("Updating " << (updateAll ? "all " : "") << "DICOM header attributes");
     const E_DocumentType documentType = getDocumentType();
     /* retrieve SOP class UID from internal document type */
     SOPClassUID.putString(documentTypeToSOPClassUID(documentType));
@@ -2838,6 +2905,14 @@ void DSRDocument::updateAttributes(const OFBool updateAll)
     Modality.putString(documentTypeToModality(documentType));
     if (updateAll)
     {
+        OFString tmpString;
+        /* determine local timezone (if required) */
+        if (requiresTimezoneModule(documentType) && TimezoneOffsetFromUTC.isEmpty())
+        {
+            DCMSR_DEBUG("  Determining local timezone for Timezone Offset From UTC");
+            TimezoneOffsetFromUTC.putOFStringArray(localTimezone(tmpString));
+        }
+
         /* create new instance number if required (type 1) */
         if (InstanceNumber.isEmpty())
             InstanceNumber.putString("1");
@@ -2849,7 +2924,7 @@ void DSRDocument::updateAttributes(const OFBool updateAll)
         /* create new SOP instance UID if required */
         if (SOPInstanceUID.isEmpty())
         {
-            OFString tmpString;
+            DCMSR_DEBUG("  Generating new value for SOP Instance UID");
             SOPInstanceUID.putString(dcmGenerateUniqueIdentifier(uid, SITE_INSTANCE_UID_ROOT));
             /* set instance creation date to current date (YYYYMMDD) */
             InstanceCreationDate.putOFStringArray(currentDate(tmpString));
@@ -2860,10 +2935,16 @@ void DSRDocument::updateAttributes(const OFBool updateAll)
         }
         /* create new study instance UID if required */
         if (StudyInstanceUID.isEmpty())
+        {
+            DCMSR_DEBUG("  Generating new value for Study Instance UID");
             StudyInstanceUID.putString(dcmGenerateUniqueIdentifier(uid, SITE_STUDY_UID_ROOT));
+        }
         /* create new series instance UID if required */
         if (SeriesInstanceUID.isEmpty())
+        {
+            DCMSR_DEBUG("  Generating new value for Series Instance UID");
             SeriesInstanceUID.putString(dcmGenerateUniqueIdentifier(uid, SITE_SERIES_UID_ROOT));
+        }
 
         /* check and set content date if required */
         if (ContentDate.isEmpty())
diff --git a/dcmsr/libsrc/dsrdoctr.cc b/dcmsr/libsrc/dsrdoctr.cc
index a69adb7..69ec0c1 100644
--- a/dcmsr/libsrc/dsrdoctr.cc
+++ b/dcmsr/libsrc/dsrdoctr.cc
@@ -444,3 +444,12 @@ void DSRDocumentTree::swap(DSRDocumentTree &tree)
     /* swap other members */
     OFswap(DocumentType, tree.DocumentType);
 }
+
+
+OFCondition DSRDocumentTree::print(STD_NAMESPACE ostream &stream,
+                                   const size_t flags,
+                                   const DSRPositionCounter *posCounter)
+{
+    /* call inherited method */
+    return DSRDocumentSubTree::print(stream, flags, posCounter);
+}
diff --git a/dcmsr/libsrc/dsrimgfr.cc b/dcmsr/libsrc/dsrimgfr.cc
index 05ce940..b4c2cc6 100644
--- a/dcmsr/libsrc/dsrimgfr.cc
+++ b/dcmsr/libsrc/dsrimgfr.cc
@@ -30,10 +30,16 @@
 
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
+#include "dcmtk/ofstd/ofdiag.h"
 
+// This is not about specialization but static member initialization, the
+// Visual Studio warning is therefore inappropriate and suppressed.
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_NO_SUITABLE_DEFINITION_FOR_TEMPLATE_INSTANTIATION
 /* declared in class DSRListOfItems<T> */
 DCMTK_EXPLICIT_SPECIALIZATION
 const Sint32 DSRListOfItems<Sint32>::EmptyItem = 0;
+#include DCMTK_DIAGNOSTIC_POP
 
 
 DSRImageFrameList::DSRImageFrameList()
diff --git a/dcmsr/libsrc/dsrimgse.cc b/dcmsr/libsrc/dsrimgse.cc
index bc45139..1d2b6a4 100644
--- a/dcmsr/libsrc/dsrimgse.cc
+++ b/dcmsr/libsrc/dsrimgse.cc
@@ -30,10 +30,16 @@
 
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
+#include "dcmtk/ofstd/ofdiag.h"
 
+// This is not about specialization but static member initialization, the
+// Visual Studio warning is therefore inappropriate and suppressed.
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_NO_SUITABLE_DEFINITION_FOR_TEMPLATE_INSTANTIATION
 /* declared in class DSRListOfItems<T> */
 DCMTK_EXPLICIT_SPECIALIZATION
 const Uint16 DSRListOfItems<Uint16>::EmptyItem = 0;
+#include DCMTK_DIAGNOSTIC_POP
 
 
 DSRImageSegmentList::DSRImageSegmentList()
diff --git a/dcmsr/libsrc/dsrrefin.cc b/dcmsr/libsrc/dsrrefin.cc
index 1becfc8..46eb708 100644
--- a/dcmsr/libsrc/dsrrefin.cc
+++ b/dcmsr/libsrc/dsrrefin.cc
@@ -63,7 +63,7 @@ void DSRReferencedInstanceList::clear()
 }
 
 
-OFBool DSRReferencedInstanceList::empty() const
+OFBool DSRReferencedInstanceList::isEmpty() const
 {
     return ItemList.empty();
 }
diff --git a/dcmsr/libsrc/dsrsaecc.cc b/dcmsr/libsrc/dsrsaecc.cc
new file mode 100644
index 0000000..fced6b4
--- /dev/null
+++ b/dcmsr/libsrc/dsrsaecc.cc
@@ -0,0 +1,133 @@
+/*
+ *
+ *  Copyright (C) 2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsr
+ *
+ *  Author: Joerg Riesmeier
+ *
+ *  Purpose:
+ *    classes: DSRSimplifiedAdultEchoSRConstraintChecker
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrsaecc.h"
+
+
+DSRSimplifiedAdultEchoSRConstraintChecker::DSRSimplifiedAdultEchoSRConstraintChecker()
+  : DSRIODConstraintChecker()
+{
+}
+
+
+DSRSimplifiedAdultEchoSRConstraintChecker::~DSRSimplifiedAdultEchoSRConstraintChecker()
+{
+}
+
+
+OFBool DSRSimplifiedAdultEchoSRConstraintChecker::isByReferenceAllowed() const
+{
+    return OFFalse;
+}
+
+
+OFBool DSRSimplifiedAdultEchoSRConstraintChecker::isTemplateSupportRequired() const
+{
+    return OFTrue;
+}
+
+
+OFCondition DSRSimplifiedAdultEchoSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                     OFString &mappingResource) const
+{
+    templateIdentifier = "5300";
+    mappingResource = "DCMR";
+    return EC_Normal;
+}
+
+
+DSRTypes::E_DocumentType DSRSimplifiedAdultEchoSRConstraintChecker::getDocumentType() const
+{
+    return DT_SimplifiedAdultEchoSR;
+}
+
+
+OFBool DSRSimplifiedAdultEchoSRConstraintChecker::checkContentRelationship(const E_ValueType sourceValueType,
+                                                                           const E_RelationshipType relationshipType,
+                                                                           const E_ValueType targetValueType,
+                                                                           const OFBool byReference) const
+{
+    /* the following code implements the constraints of table A.35.17-2 in DICOM PS3.3 */
+    OFBool result = OFFalse;
+    /* by-reference relationships not allowed at all */
+    if (!byReference)
+    {
+        /* row 1 of the table */
+        if ((relationshipType == RT_contains) && (sourceValueType == VT_Container))
+        {
+            result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_Num) ||
+                    (targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef) || (targetValueType == VT_PName) ||
+                    (targetValueType == VT_Container);
+        }
+        /* row 2 of the table */
+        else if ((relationshipType == RT_hasObsContext) &&
+            ((sourceValueType == VT_Text) || (sourceValueType == VT_Code) || (sourceValueType == VT_Num)))
+        {
+            result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_Num) ||
+                    (targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef) || (targetValueType == VT_PName) ||
+                    (targetValueType == VT_Composite);
+        }
+        /* row 3 of the table */
+        else if ((relationshipType == RT_hasAcqContext) && (sourceValueType == VT_Container))
+        {
+            result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_Num) ||
+                    (targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef) || (targetValueType == VT_PName) ||
+                    (targetValueType == VT_Container);
+        }
+        /* row 4 of the table */
+        else if (relationshipType == RT_hasConceptMod)
+        {
+            result = (targetValueType == VT_Text) || (targetValueType == VT_Code);
+        }
+        /* row 5 the table */
+        else if ((relationshipType == RT_hasProperties) &&
+            ((sourceValueType == VT_Text) || (sourceValueType == VT_Code) || (sourceValueType == VT_Num)))
+        {
+            result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_Num) ||
+                    (targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef) || (targetValueType == VT_PName) ||
+                    (targetValueType == VT_Container);
+        }
+        /* row 6 of the table */
+        else if ((relationshipType == RT_inferredFrom) &&
+            ((sourceValueType == VT_Text) || (sourceValueType == VT_Code) || (sourceValueType == VT_Num)))
+        {
+            result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_Num) ||
+                    (targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef) || (targetValueType == VT_Container) ||
+                    (targetValueType == VT_Image) || (targetValueType == VT_SCoord) || (targetValueType == VT_Waveform) ||
+                    (targetValueType == VT_TCoord);
+        }
+        /* row 7 of the table */
+        else if ((relationshipType == RT_selectedFrom) && (sourceValueType == VT_SCoord))
+        {
+            result = (targetValueType == VT_Image);
+        }
+        /* row 8 of the table */
+        else if ((relationshipType == RT_selectedFrom) && (sourceValueType == VT_TCoord))
+        {
+            result = (targetValueType == VT_Waveform);
+        }
+    }
+    return result;
+}
diff --git a/dcmsr/libsrc/dsrsc3gr.cc b/dcmsr/libsrc/dsrsc3gr.cc
index 794f1be..7e281f7 100644
--- a/dcmsr/libsrc/dsrsc3gr.cc
+++ b/dcmsr/libsrc/dsrsc3gr.cc
@@ -29,10 +29,16 @@
 #include "dcmtk/dcmdata/dcvrfl.h"
 
 #include "dcmtk/ofstd/ofstd.h"
+#include "dcmtk/ofstd/ofdiag.h"
 
+// This is not about specialization but static member initialization, the
+// Visual Studio warning is therefore inappropriate and suppressed.
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_NO_SUITABLE_DEFINITION_FOR_TEMPLATE_INSTANTIATION
 /* declared in class DSRListOfItems<T> */
 DCMTK_EXPLICIT_SPECIALIZATION
 const DSRGraphicData3DItem DSRListOfItems<DSRGraphicData3DItem>::EmptyItem(0, 0, 0);
+#include DCMTK_DIAGNOSTIC_POP
 
 
 DSRGraphicData3DList::DSRGraphicData3DList()
diff --git a/dcmsr/libsrc/dsrscogr.cc b/dcmsr/libsrc/dsrscogr.cc
index 745b420..815c284 100644
--- a/dcmsr/libsrc/dsrscogr.cc
+++ b/dcmsr/libsrc/dsrscogr.cc
@@ -29,10 +29,16 @@
 #include "dcmtk/dcmdata/dcvrfl.h"
 
 #include "dcmtk/ofstd/ofstd.h"
+#include "dcmtk/ofstd/ofdiag.h"
 
+// This is not about specialization but static member initialization, the
+// Visual Studio warning is therefore inappropriate and suppressed.
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_NO_SUITABLE_DEFINITION_FOR_TEMPLATE_INSTANTIATION
 /* declared in class DSRListOfItems<T> */
 DCMTK_EXPLICIT_SPECIALIZATION
 const DSRGraphicDataItem DSRListOfItems<DSRGraphicDataItem>::EmptyItem(0, 0);
+#include DCMTK_DIAGNOSTIC_POP
 
 
 DSRGraphicDataList::DSRGraphicDataList()
diff --git a/dcmsr/libsrc/dsrsoprf.cc b/dcmsr/libsrc/dsrsoprf.cc
index 512b123..fe8466a 100644
--- a/dcmsr/libsrc/dsrsoprf.cc
+++ b/dcmsr/libsrc/dsrsoprf.cc
@@ -805,7 +805,7 @@ void DSRSOPInstanceReferenceList::clear()
 }
 
 
-OFBool DSRSOPInstanceReferenceList::empty() const
+OFBool DSRSOPInstanceReferenceList::isEmpty() const
 {
     return StudyList.empty();
 }
diff --git a/dcmsr/libsrc/dsrtcodt.cc b/dcmsr/libsrc/dsrtcodt.cc
index c11180a..c4fdd85 100644
--- a/dcmsr/libsrc/dsrtcodt.cc
+++ b/dcmsr/libsrc/dsrtcodt.cc
@@ -27,10 +27,16 @@
 
 #include "dcmtk/dcmdata/dcdeftag.h"
 #include "dcmtk/dcmdata/dcvrdt.h"
+#include "dcmtk/ofstd/ofdiag.h"
 
+// This is not about specialization but static member initialization, the
+// Visual Studio warning is therefore inappropriate and suppressed.
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_NO_SUITABLE_DEFINITION_FOR_TEMPLATE_INSTANTIATION
 /* declared in class DSRListOfItems<T> */
 DCMTK_EXPLICIT_SPECIALIZATION
 const OFString DSRListOfItems<OFString>::EmptyItem;
+#include DCMTK_DIAGNOSTIC_POP
 
 
 DSRReferencedDateTimeList::DSRReferencedDateTimeList()
diff --git a/dcmsr/libsrc/dsrtcosp.cc b/dcmsr/libsrc/dsrtcosp.cc
index fc07faf..b91f19d 100644
--- a/dcmsr/libsrc/dsrtcosp.cc
+++ b/dcmsr/libsrc/dsrtcosp.cc
@@ -30,10 +30,16 @@
 
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
+#include "dcmtk/ofstd/ofdiag.h"
 
+// This is not about specialization but static member initialization, the
+// Visual Studio warning is therefore inappropriate and suppressed.
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_NO_SUITABLE_DEFINITION_FOR_TEMPLATE_INSTANTIATION
 /* declared in class DSRListOfItems<T> */
 DCMTK_EXPLICIT_SPECIALIZATION
 const Uint32 DSRListOfItems<Uint32>::EmptyItem = 0;
+#include DCMTK_DIAGNOSTIC_POP
 
 
 DSRReferencedSamplePositionList::DSRReferencedSamplePositionList()
diff --git a/dcmsr/libsrc/dsrtcoto.cc b/dcmsr/libsrc/dsrtcoto.cc
index 9030f51..277fc74 100644
--- a/dcmsr/libsrc/dsrtcoto.cc
+++ b/dcmsr/libsrc/dsrtcoto.cc
@@ -31,10 +31,15 @@
 #include "dcmtk/ofstd/ofstd.h"
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
+#include "dcmtk/ofstd/ofdiag.h"
 
+// This is not about specialization but static member initialization, the
+// Visual Studio warning is therefore inappropriate and suppressed.
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_NO_SUITABLE_DEFINITION_FOR_TEMPLATE_INSTANTIATION
 /* declared in class DSRListOfItems<T> */
 DCMTK_EXPLICIT_SPECIALIZATION const Float64 DSRListOfItems<Float64>::EmptyItem = 0;
-
+#include DCMTK_DIAGNOSTIC_POP
 
 DSRReferencedTimeOffsetList::DSRReferencedTimeOffsetList()
   : DSRListOfItems<Float64>()
diff --git a/dcmsr/libsrc/dsrtypes.cc b/dcmsr/libsrc/dsrtypes.cc
index 19a4d49..f95ac68 100644
--- a/dcmsr/libsrc/dsrtypes.cc
+++ b/dcmsr/libsrc/dsrtypes.cc
@@ -55,6 +55,7 @@
 #include "dcmtk/dcmsr/dsrc3dcc.h"
 #include "dcmtk/dcmsr/dsrrrdcc.h"
 #include "dcmtk/dcmsr/dsracqcc.h"
+#include "dcmtk/dcmsr/dsrsaecc.h"
 
 #include "dcmtk/dcmdata/dcuid.h"
 #include "dcmtk/dcmdata/dcvrda.h"
@@ -74,96 +75,97 @@
  *---------------------------------*/
 
 /* read flags */
-const size_t DSRTypes::RF_readDigitalSignatures          = 1 <<  0;
-const size_t DSRTypes::RF_acceptUnknownRelationshipType  = 1 <<  1;
-const size_t DSRTypes::RF_acceptInvalidContentItemValue  = 1 <<  2;
-const size_t DSRTypes::RF_ignoreRelationshipConstraints  = 1 <<  3;
-const size_t DSRTypes::RF_ignoreContentItemErrors        = 1 <<  4;
-const size_t DSRTypes::RF_skipInvalidContentItems        = 1 <<  5;
-const size_t DSRTypes::RF_showCurrentlyProcessedItem     = 1 <<  6;
+const size_t DSRTypes::RF_readDigitalSignatures             = 1 <<  0;
+const size_t DSRTypes::RF_acceptUnknownRelationshipType     = 1 <<  1;
+const size_t DSRTypes::RF_acceptInvalidContentItemValue     = 1 <<  2;
+const size_t DSRTypes::RF_ignoreRelationshipConstraints     = 1 <<  3;
+const size_t DSRTypes::RF_ignoreContentItemErrors           = 1 <<  4;
+const size_t DSRTypes::RF_skipInvalidContentItems           = 1 <<  5;
+const size_t DSRTypes::RF_showCurrentlyProcessedItem        = 1 <<  6;
 
 /* renderHTML flags */
-const size_t DSRTypes::HF_neverExpandChildrenInline      = 1 <<  0;
-const size_t DSRTypes::HF_alwaysExpandChildrenInline     = 1 <<  1;
-const size_t DSRTypes::HF_renderInlineCodes              = 1 <<  2;
-const size_t DSRTypes::HF_useCodeDetailsTooltip          = 1 <<  3;
-const size_t DSRTypes::HF_renderConceptNameCodes         = 1 <<  4;
-const size_t DSRTypes::HF_renderNumericUnitCodes         = 1 <<  5;
-const size_t DSRTypes::HF_useCodeMeaningAsUnit           = 1 <<  6;
-const size_t DSRTypes::HF_renderPatientTitle             = 1 <<  7;
-const size_t DSRTypes::HF_renderNoDocumentHeader         = 1 <<  8;
-const size_t DSRTypes::HF_renderDcmtkFootnote            = 1 <<  9;
-const size_t DSRTypes::HF_renderFullData                 = 1 << 10;
-const size_t DSRTypes::HF_renderSectionTitlesInline      = 1 << 11;
-const size_t DSRTypes::HF_copyStyleSheetContent          = 1 << 12;
-const size_t DSRTypes::HF_HTML32Compatibility            = 1 << 13;
-const size_t DSRTypes::HF_XHTML11Compatibility           = 1 << 14;
-const size_t DSRTypes::HF_addDocumentTypeReference       = 1 << 15;
-const size_t DSRTypes::HF_omitGeneratorMetaElement       = 1 << 16;
+const size_t DSRTypes::HF_neverExpandChildrenInline         = 1 <<  0;
+const size_t DSRTypes::HF_alwaysExpandChildrenInline        = 1 <<  1;
+const size_t DSRTypes::HF_renderInlineCodes                 = 1 <<  2;
+const size_t DSRTypes::HF_useCodeDetailsTooltip             = 1 <<  3;
+const size_t DSRTypes::HF_renderConceptNameCodes            = 1 <<  4;
+const size_t DSRTypes::HF_renderNumericUnitCodes            = 1 <<  5;
+const size_t DSRTypes::HF_useCodeMeaningAsUnit              = 1 <<  6;
+const size_t DSRTypes::HF_renderPatientTitle                = 1 <<  7;
+const size_t DSRTypes::HF_renderNoDocumentHeader            = 1 <<  8;
+const size_t DSRTypes::HF_renderDcmtkFootnote               = 1 <<  9;
+const size_t DSRTypes::HF_renderFullData                    = 1 << 10;
+const size_t DSRTypes::HF_renderSectionTitlesInline         = 1 << 11;
+const size_t DSRTypes::HF_copyStyleSheetContent             = 1 << 12;
+const size_t DSRTypes::HF_HTML32Compatibility               = 1 << 13;
+const size_t DSRTypes::HF_XHTML11Compatibility              = 1 << 14;
+const size_t DSRTypes::HF_addDocumentTypeReference          = 1 << 15;
+const size_t DSRTypes::HF_omitGeneratorMetaElement          = 1 << 16;
 /* internal */
-const size_t DSRTypes::HF_renderItemsSeparately          = 1 << 17;
-const size_t DSRTypes::HF_renderItemInline               = 1 << 18;
-const size_t DSRTypes::HF_currentlyInsideAnnex           = 1 << 19;
-const size_t DSRTypes::HF_createFootnoteReferences       = 1 << 20;
-const size_t DSRTypes::HF_convertNonASCIICharacters      = 1 << 21;
+const size_t DSRTypes::HF_renderItemsSeparately             = 1 << 17;
+const size_t DSRTypes::HF_renderItemInline                  = 1 << 18;
+const size_t DSRTypes::HF_currentlyInsideAnnex              = 1 << 19;
+const size_t DSRTypes::HF_createFootnoteReferences          = 1 << 20;
+const size_t DSRTypes::HF_convertNonASCIICharacters         = 1 << 21;
 /* shortcuts */
-const size_t DSRTypes::HF_renderAllCodes                 = DSRTypes::HF_renderInlineCodes |
-                                                           DSRTypes::HF_renderConceptNameCodes |
-                                                           DSRTypes::HF_renderNumericUnitCodes;
-const size_t DSRTypes::HF_internalUseOnly                = DSRTypes::HF_renderItemsSeparately |
-                                                           DSRTypes::HF_renderItemInline |
-                                                           DSRTypes::HF_currentlyInsideAnnex |
-                                                           DSRTypes::HF_createFootnoteReferences |
-                                                           DSRTypes::HF_convertNonASCIICharacters;
+const size_t DSRTypes::HF_renderAllCodes                    = DSRTypes::HF_renderInlineCodes |
+                                                              DSRTypes::HF_renderConceptNameCodes |
+                                                              DSRTypes::HF_renderNumericUnitCodes;
+const size_t DSRTypes::HF_internalUseOnly                   = DSRTypes::HF_renderItemsSeparately |
+                                                              DSRTypes::HF_renderItemInline |
+                                                              DSRTypes::HF_currentlyInsideAnnex |
+                                                              DSRTypes::HF_createFootnoteReferences |
+                                                              DSRTypes::HF_convertNonASCIICharacters;
 
 /* read/writeXML flags */
-const size_t DSRTypes::XF_writeEmptyTags                 = 1 << 0;
-const size_t DSRTypes::XF_writeTemplateIdentification    = 1 << 1;
-const size_t DSRTypes::XF_alwaysWriteItemIdentifier      = 1 << 2;
-const size_t DSRTypes::XF_codeComponentsAsAttribute      = 1 << 3;
-const size_t DSRTypes::XF_relationshipTypeAsAttribute    = 1 << 4;
-const size_t DSRTypes::XF_valueTypeAsAttribute           = 1 << 5;
-const size_t DSRTypes::XF_templateIdentifierAsAttribute  = 1 << 6;
-const size_t DSRTypes::XF_useDcmsrNamespace              = 1 << 7;
-const size_t DSRTypes::XF_addSchemaReference             = 1 << 8;
-const size_t DSRTypes::XF_validateSchema                 = 1 << 9;
-const size_t DSRTypes::XF_templateElementEnclosesItems   = 1 << 10;
-const size_t DSRTypes::XF_addCommentsForIncludedTemplate = 1 << 11;
+const size_t DSRTypes::XF_writeEmptyTags                    = 1 << 0;
+const size_t DSRTypes::XF_writeTemplateIdentification       = 1 << 1;
+const size_t DSRTypes::XF_alwaysWriteItemIdentifier         = 1 << 2;
+const size_t DSRTypes::XF_codeComponentsAsAttribute         = 1 << 3;
+const size_t DSRTypes::XF_relationshipTypeAsAttribute       = 1 << 4;
+const size_t DSRTypes::XF_valueTypeAsAttribute              = 1 << 5;
+const size_t DSRTypes::XF_templateIdentifierAsAttribute     = 1 << 6;
+const size_t DSRTypes::XF_useDcmsrNamespace                 = 1 << 7;
+const size_t DSRTypes::XF_addSchemaReference                = 1 << 8;
+const size_t DSRTypes::XF_validateSchema                    = 1 << 9;
+const size_t DSRTypes::XF_templateElementEnclosesItems      = 1 << 10;
+const size_t DSRTypes::XF_addCommentsForIncludedTemplate    = 1 << 11;
+const size_t DSRTypes::XF_acceptEmptyStudySeriesInstanceUID = 1 << 12;
 /* shortcuts */
-const size_t DSRTypes::XF_encodeEverythingAsAttribute    = DSRTypes::XF_codeComponentsAsAttribute |
-                                                           DSRTypes::XF_relationshipTypeAsAttribute |
-                                                           DSRTypes::XF_valueTypeAsAttribute |
-                                                           DSRTypes::XF_templateIdentifierAsAttribute;
+const size_t DSRTypes::XF_encodeEverythingAsAttribute       = DSRTypes::XF_codeComponentsAsAttribute |
+                                                              DSRTypes::XF_relationshipTypeAsAttribute |
+                                                              DSRTypes::XF_valueTypeAsAttribute |
+                                                              DSRTypes::XF_templateIdentifierAsAttribute;
 
 /* print flags */
-const size_t DSRTypes::PF_printItemPosition              = 1 << 0;
-const size_t DSRTypes::PF_shortenLongItemValues          = 1 << 1;
-const size_t DSRTypes::PF_printSOPInstanceUID            = 1 << 2;
-const size_t DSRTypes::PF_printConceptNameCodes          = 1 << 3;
-const size_t DSRTypes::PF_printNoDocumentHeader          = 1 << 4;
-const size_t DSRTypes::PF_printTemplateIdentification    = 1 << 5;
-const size_t DSRTypes::PF_useANSIEscapeCodes             = 1 << 6;
-const size_t DSRTypes::PF_printLongSOPClassName          = 1 << 7;
-const size_t DSRTypes::PF_printSOPClassUID               = 1 << 8;
-const size_t DSRTypes::PF_printInvalidCodes              = 1 << 9;
-const size_t DSRTypes::PF_printNodeID                    = 1 << 10;
-const size_t DSRTypes::PF_indicateEnhancedEncodingMode   = 1 << 11;
-const size_t DSRTypes::PF_printAnnotation                = 1 << 12;
-const size_t DSRTypes::PF_hideIncludedTemplateNodes      = 1 << 13;
-const size_t DSRTypes::PF_dontCountIncludedTemplateNodes = 1 << 14;
+const size_t DSRTypes::PF_printItemPosition                 = 1 << 0;
+const size_t DSRTypes::PF_shortenLongItemValues             = 1 << 1;
+const size_t DSRTypes::PF_printSOPInstanceUID               = 1 << 2;
+const size_t DSRTypes::PF_printConceptNameCodes             = 1 << 3;
+const size_t DSRTypes::PF_printNoDocumentHeader             = 1 << 4;
+const size_t DSRTypes::PF_printTemplateIdentification       = 1 << 5;
+const size_t DSRTypes::PF_useANSIEscapeCodes                = 1 << 6;
+const size_t DSRTypes::PF_printLongSOPClassName             = 1 << 7;
+const size_t DSRTypes::PF_printSOPClassUID                  = 1 << 8;
+const size_t DSRTypes::PF_printInvalidCodes                 = 1 << 9;
+const size_t DSRTypes::PF_printNodeID                       = 1 << 10;
+const size_t DSRTypes::PF_indicateEnhancedEncodingMode      = 1 << 11;
+const size_t DSRTypes::PF_printAnnotation                   = 1 << 12;
+const size_t DSRTypes::PF_hideIncludedTemplateNodes         = 1 << 13;
+const size_t DSRTypes::PF_dontCountIncludedTemplateNodes    = 1 << 14;
 /* shortcuts */
-const size_t DSRTypes::PF_printAllCodes                  = DSRTypes::PF_printConceptNameCodes;
+const size_t DSRTypes::PF_printAllCodes                     = DSRTypes::PF_printConceptNameCodes;
 
 /* checkByReferenceRelationships modes */
-const size_t DSRTypes::CM_updatePositionString           = 1 << 0;
-const size_t DSRTypes::CM_updateNodeID                   = 1 << 1;
-const size_t DSRTypes::CM_resetReferenceTargetFlag       = 1 << 2;
+const size_t DSRTypes::CM_updatePositionString              = 1 << 0;
+const size_t DSRTypes::CM_updateNodeID                      = 1 << 1;
+const size_t DSRTypes::CM_resetReferenceTargetFlag          = 1 << 2;
 
 /* checkByReferenceRelationships bit masks (avoid conflicts!) */
-const size_t DSRTypes::CB_maskPrintFlags                 = DSRTypes::PF_dontCountIncludedTemplateNodes;
-const size_t DSRTypes::CB_maskReadFlags                  = DSRTypes::RF_acceptUnknownRelationshipType |
-                                                           DSRTypes::RF_ignoreRelationshipConstraints |
-                                                           DSRTypes::RF_showCurrentlyProcessedItem;
+const size_t DSRTypes::CB_maskPrintFlags                    = DSRTypes::PF_dontCountIncludedTemplateNodes;
+const size_t DSRTypes::CB_maskReadFlags                     = DSRTypes::RF_acceptUnknownRelationshipType |
+                                                              DSRTypes::RF_ignoreRelationshipConstraints |
+                                                              DSRTypes::RF_showCurrentlyProcessedItem;
 
 
 /*---------------------*
@@ -174,7 +176,7 @@ struct S_DocumentTypeNameMap
 {
     DSRTypes::E_DocumentType Type;
     const char *SOPClassUID;
-    OFBool EnhancedEquipmentModule;
+    size_t ExtendedModules;
     const char *Modality;
     const char *ReadableName;
 };
@@ -306,30 +308,34 @@ makeOFConditionConst(SR_EC_ValueSetConstraintViolated,          OFM_dcmsr, 32, O
 makeOFConditionConst(SR_EC_InvalidTemplateStructure,            OFM_dcmsr, 33, OF_error, "Invalid Template Structure");
 makeOFConditionConst(SR_EC_CannotProcessIncludedTemplates,      OFM_dcmsr, 34, OF_error, "Cannot process Document Tree with included Templates");
 
-
 // NOTE:
 // error codes 1000 and above are reserved for the submodule "cmr"
 
 
+/* extended IOD modules (only used internally) */
+const size_t EM_EnhancedEquipment = 1 << 0;
+const size_t EM_Timezone          = 1 << 1;
+
 static const S_DocumentTypeNameMap DocumentTypeNameMap[] =
 {
-    {DSRTypes::DT_invalid,                             "",                                             OFFalse, "",   "invalid document type"},
-    {DSRTypes::DT_BasicTextSR,                         UID_BasicTextSRStorage,                         OFFalse, "SR", "Basic Text SR"},
-    {DSRTypes::DT_EnhancedSR,                          UID_EnhancedSRStorage,                          OFFalse, "SR", "Enhanced SR"},
-    {DSRTypes::DT_ComprehensiveSR,                     UID_ComprehensiveSRStorage,                     OFFalse, "SR", "Comprehensive SR"},
-    {DSRTypes::DT_KeyObjectSelectionDocument,          UID_KeyObjectSelectionDocumentStorage,          OFFalse, "KO", "Key Object Selection Document"},
-    {DSRTypes::DT_MammographyCadSR,                    UID_MammographyCADSRStorage,                    OFFalse, "SR", "Mammography CAD SR"},
-    {DSRTypes::DT_ChestCadSR,                          UID_ChestCADSRStorage,                          OFFalse, "SR", "Chest CAD SR"},
-    {DSRTypes::DT_ColonCadSR,                          UID_ColonCADSRStorage,                          OFTrue,  "SR", "Colon CAD SR"},
-    {DSRTypes::DT_ProcedureLog,                        UID_ProcedureLogStorage,                        OFFalse, "SR", "Procedure Log"},
-    {DSRTypes::DT_XRayRadiationDoseSR,                 UID_XRayRadiationDoseSRStorage,                 OFTrue,  "SR", "X-Ray Radiation Dose SR"},
-    {DSRTypes::DT_SpectaclePrescriptionReport,         UID_SpectaclePrescriptionReportStorage,         OFTrue,  "SR", "Spectacle Prescription Report"},
-    {DSRTypes::DT_MacularGridThicknessAndVolumeReport, UID_MacularGridThicknessAndVolumeReportStorage, OFTrue,  "SR", "Macular Grid Thickness and Volume Report"},
-    {DSRTypes::DT_ImplantationPlanSRDocument,          UID_ImplantationPlanSRDocumentStorage,          OFTrue,  "SR", "Implantation Plan SR Document"},
-    {DSRTypes::DT_Comprehensive3DSR,                   UID_Comprehensive3DSRStorage,                   OFFalse, "SR", "Comprehensive 3D SR"},
-    {DSRTypes::DT_RadiopharmaceuticalRadiationDoseSR,  UID_RadiopharmaceuticalRadiationDoseSRStorage,  OFTrue,  "SR", "Radiopharmaceutical Radiation Dose SR"},
-    {DSRTypes::DT_ExtensibleSR,                        UID_ExtensibleSRStorage,                        OFTrue,  "SR", "Extensible SR"},
-    {DSRTypes::DT_AcquisitionContextSR,                UID_AcquisitionContextSRStorage,                OFTrue,  "SR", "Acquisition Context SR"}
+    {DSRTypes::DT_invalid,                             "",                                             0,                                  "",   "invalid document type"},
+    {DSRTypes::DT_BasicTextSR,                         UID_BasicTextSRStorage,                         0,                                  "SR", "Basic Text SR"},
+    {DSRTypes::DT_EnhancedSR,                          UID_EnhancedSRStorage,                          0,                                  "SR", "Enhanced SR"},
+    {DSRTypes::DT_ComprehensiveSR,                     UID_ComprehensiveSRStorage,                     0,                                  "SR", "Comprehensive SR"},
+    {DSRTypes::DT_KeyObjectSelectionDocument,          UID_KeyObjectSelectionDocumentStorage,          0,                                  "KO", "Key Object Selection Document"},
+    {DSRTypes::DT_MammographyCadSR,                    UID_MammographyCADSRStorage,                    0,                                  "SR", "Mammography CAD SR"},
+    {DSRTypes::DT_ChestCadSR,                          UID_ChestCADSRStorage,                          0,                                  "SR", "Chest CAD SR"},
+    {DSRTypes::DT_ColonCadSR,                          UID_ColonCADSRStorage,                          EM_EnhancedEquipment,               "SR", "Colon CAD SR"},
+    {DSRTypes::DT_ProcedureLog,                        UID_ProcedureLogStorage,                        0,                                  "SR", "Procedure Log"},
+    {DSRTypes::DT_XRayRadiationDoseSR,                 UID_XRayRadiationDoseSRStorage,                 EM_EnhancedEquipment,               "SR", "X-Ray Radiation Dose SR"},
+    {DSRTypes::DT_SpectaclePrescriptionReport,         UID_SpectaclePrescriptionReportStorage,         EM_EnhancedEquipment,               "SR", "Spectacle Prescription Report"},
+    {DSRTypes::DT_MacularGridThicknessAndVolumeReport, UID_MacularGridThicknessAndVolumeReportStorage, EM_EnhancedEquipment,               "SR", "Macular Grid Thickness and Volume Report"},
+    {DSRTypes::DT_ImplantationPlanSRDocument,          UID_ImplantationPlanSRDocumentStorage,          EM_EnhancedEquipment,               "SR", "Implantation Plan SR Document"},
+    {DSRTypes::DT_Comprehensive3DSR,                   UID_Comprehensive3DSRStorage,                   0,                                  "SR", "Comprehensive 3D SR"},
+    {DSRTypes::DT_RadiopharmaceuticalRadiationDoseSR,  UID_RadiopharmaceuticalRadiationDoseSRStorage,  EM_EnhancedEquipment,               "SR", "Radiopharmaceutical Radiation Dose SR"},
+    {DSRTypes::DT_ExtensibleSR,                        UID_ExtensibleSRStorage,                        EM_EnhancedEquipment,               "SR", "Extensible SR"},
+    {DSRTypes::DT_AcquisitionContextSR,                UID_AcquisitionContextSRStorage,                EM_EnhancedEquipment,               "SR", "Acquisition Context SR"},
+    {DSRTypes::DT_SimplifiedAdultEchoSR,               UID_SimplifiedAdultEchoSRStorage,               EM_EnhancedEquipment | EM_Timezone, "SR", "Simplified Adult Echo SR"}
 };
 
 
@@ -544,7 +550,16 @@ OFBool DSRTypes::requiresEnhancedEquipmentModule(const E_DocumentType documentTy
     const S_DocumentTypeNameMap *iterator = DocumentTypeNameMap;
     while ((iterator->Type != DT_last) && (iterator->Type != documentType))
         iterator++;
-    return iterator->EnhancedEquipmentModule;
+    return (iterator->ExtendedModules & EM_EnhancedEquipment) > 0;
+}
+
+
+OFBool DSRTypes::requiresTimezoneModule(const E_DocumentType documentType)
+{
+    const S_DocumentTypeNameMap *iterator = DocumentTypeNameMap;
+    while ((iterator->Type != DT_last) && (iterator->Type != documentType))
+        iterator++;
+    return (iterator->ExtendedModules & EM_Timezone) > 0;
 }
 
 
@@ -1181,6 +1196,15 @@ const OFString &DSRTypes::currentDateTime(OFString &dateTimeString)
 }
 
 
+const OFString &DSRTypes::localTimezone(OFString &timezoneString)
+{
+    OFString dateTimeString;
+    DcmDateTime::getCurrentDateTime(dateTimeString, OFFalse /*seconds*/, OFFalse /*fraction*/, OFTrue /*timeZone*/);
+    timezoneString.assign(dateTimeString.substr(8 /* YYYYMMDD */ + 4 /* HHMM */, 5 /* &ZZZZ */));
+    return timezoneString;
+}
+
+
 const OFString &DSRTypes::dicomToReadableDate(const OFString &dicomDate,
                                               OFString &readableDate)
 {
@@ -1462,6 +1486,9 @@ DSRIODConstraintChecker *DSRTypes::createIODConstraintChecker(const E_DocumentTy
         case DT_AcquisitionContextSR:
             checker = new DSRAcquisitionContextConstraintChecker();
             break;
+        case DT_SimplifiedAdultEchoSR:
+            checker = new DSRSimplifiedAdultEchoSRConstraintChecker();
+            break;
         case DT_invalid:
             /* nothing to do */
             break;
diff --git a/dcmsr/libsrc/dsrwavch.cc b/dcmsr/libsrc/dsrwavch.cc
index 86e44af..b73a4c0 100644
--- a/dcmsr/libsrc/dsrwavch.cc
+++ b/dcmsr/libsrc/dsrwavch.cc
@@ -31,10 +31,16 @@
 
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
+#include "dcmtk/ofstd/ofdiag.h"
 
+// This is not about specialization but static member initialization, the
+// Visual Studio warning is therefore inappropriate and suppressed.
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_NO_SUITABLE_DEFINITION_FOR_TEMPLATE_INSTANTIATION
 /* declared in class DSRListOfItems<T> */
 DCMTK_EXPLICIT_SPECIALIZATION
 const DSRWaveformChannelItem DSRListOfItems<DSRWaveformChannelItem>::EmptyItem(0, 0);
+#include DCMTK_DIAGNOSTIC_POP
 
 
 DSRWaveformChannelList::DSRWaveformChannelList()
diff --git a/dcmsr/libsrc/dsrxmld.cc b/dcmsr/libsrc/dsrxmld.cc
index 23658ce..55c9690 100644
--- a/dcmsr/libsrc/dsrxmld.cc
+++ b/dcmsr/libsrc/dsrxmld.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -684,11 +684,24 @@ DSRTypes::E_RelationshipType DSRXMLDocument::getRelationshipTypeFromNode(const D
 
 void DSRXMLDocument::printUnexpectedNodeWarning(const DSRXMLCursor &cursor) const
 {
+    /* report warning message */
     OFString tmpString;
     DCMSR_WARN("Unexpected node '" << getFullNodePath(cursor, tmpString) << "', skipping");
 }
 
 
+void DSRXMLDocument::printMissingAttributeWarning(const DSRXMLCursor &cursor,
+                                                  const char *name) const
+{
+    /* report warning message */
+    if (name != NULL)
+    {
+        OFString tmpString;
+        DCMSR_WARN("XML attribute '" << name << "' missing/empty in " << getFullNodePath(cursor, tmpString));
+    }
+}
+
+
 void DSRXMLDocument::printMissingAttributeError(const DSRXMLCursor &cursor,
                                                 const char *name) const
 {
diff --git a/dcmsr/tests/CMakeLists.txt b/dcmsr/tests/CMakeLists.txt
index e1ea238..fcbf1f5 100644
--- a/dcmsr/tests/CMakeLists.txt
+++ b/dcmsr/tests/CMakeLists.txt
@@ -1,6 +1,6 @@
 # declare executables
 DCMTK_ADD_EXECUTABLE(mkreport mkreport)
-DCMTK_ADD_EXECUTABLE(dcmsr_tests tests tsrtree tsrdoctr tsrdoc tsrcodvl tsrnumvl tsrtpl tsrcmr)
+DCMTK_ADD_EXECUTABLE(dcmsr_tests tests tsrtree tsrdoctr tsrdoc tsrcodvl tsrnumvl tsrtpl tsrcmr tsrlist)
 
 # make sure executables are linked to the corresponding libraries
 DCMTK_TARGET_LINK_MODULES(mkreport dcmsr dcmimage dcmimgle dcmdata oflog ofstd)
diff --git a/dcmsr/tests/Makefile.dep b/dcmsr/tests/Makefile.dep
index 21d5734..c3114bf 100644
--- a/dcmsr/tests/Makefile.dep
+++ b/dcmsr/tests/Makefile.dep
@@ -565,6 +565,52 @@ tsrdoctr.o: tsrdoctr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtpltn.h ../include/dcmtk/dcmsr/dsrstpl.h \
  ../include/dcmtk/dcmsr/dsrnumtn.h ../include/dcmtk/dcmsr/dsrtextn.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h
+tsrlist.o: tsrlist.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/oftest.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../include/dcmtk/dcmsr/dsrtlist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h
 tsrnumvl.o: tsrnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
diff --git a/dcmsr/tests/Makefile.in b/dcmsr/tests/Makefile.in
index 8509e6c..fea8927 100644
--- a/dcmsr/tests/Makefile.in
+++ b/dcmsr/tests/Makefile.in
@@ -24,9 +24,10 @@ LIBDIRS = -L$(top_srcdir)/libcmr -L$(top_srcdir)/libsrc -L$(ofstddir)/libsrc \
 	-L$(oflogdir)/libsrc -L$(dcmdatadir)/libsrc -L$(dcmimgledir)/libsrc \
 	-L$(dcmimagedir)/libsrc
 LOCALLIBS = -lcmr -ldcmsr -ldcmimage -ldcmimgle -ldcmdata -loflog -lofstd $(TIFFLIBS) \
-	$(PNGLIBS) $(XMLLIBS) $(ZLIBLIBS) $(ICONVLIBS)
+	$(PNGLIBS) $(XMLLIBS) $(ZLIBLIBS) $(CHARCONVLIBS)
 
-tstobjs = tests.o tsrtree.o tsrdoctr.o tsrdoc.o tsrcodvl.o tsrnumvl.o tsrtpl.o tsrcmr.o
+tstobjs = tests.o tsrtree.o tsrdoctr.o tsrdoc.o tsrcodvl.o tsrnumvl.o tsrtpl.o tsrcmr.o \
+	tsrlist.o
 objs = mkreport.o $(tstobjs)
 progs = mkreport tests
 
diff --git a/dcmsr/tests/tests.cc b/dcmsr/tests/tests.cc
index c688077..36fd320 100644
--- a/dcmsr/tests/tests.cc
+++ b/dcmsr/tests/tests.cc
@@ -23,6 +23,8 @@
 
 #include "dcmtk/ofstd/oftest.h"
 
+OFTEST_REGISTER(dcmsr_addItems);
+OFTEST_REGISTER(dcmsr_getItems);
 OFTEST_REGISTER(dcmsr_addTreeNode_1);
 OFTEST_REGISTER(dcmsr_addTreeNode_2);
 OFTEST_REGISTER(dcmsr_addTreeNode_3);
diff --git a/dcmsr/tests/tsrlist.cc b/dcmsr/tests/tsrlist.cc
new file mode 100644
index 0000000..499ce1c
--- /dev/null
+++ b/dcmsr/tests/tsrlist.cc
@@ -0,0 +1,68 @@
+/*
+ *
+ *  Copyright (C) 2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsr
+ *
+ *  Author: Joerg Riesmeier
+ *
+ *  Purpose:
+ *    test program for class DSRListOfItems
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/oftest.h"
+
+#include "dcmtk/dcmsr/dsrtlist.h"
+
+
+OFTEST(dcmsr_addItems)
+{
+    // disable test case when building shared libraries because of linker errors
+#ifndef DCMTK_SHARED
+    /* prepare test data */
+    OFVector<Uint16> vec;
+    for (Uint16 i = 0; i < 10; ++i)
+        vec.push_back(i);
+    /* add data to list */
+    DSRListOfItems<Uint16> lst;
+    lst.addItems(vec);
+    /* and check result */
+    OFCHECK_EQUAL(lst.getNumberOfItems(), 10);
+    for (Uint16 j = 0; j < 10; ++j)
+        OFCHECK_EQUAL(lst.getItem(j + 1), j);
+    OFCHECK(lst.isElement(7));
+    OFCHECK(!lst.isElement(10));
+#endif
+}
+
+
+OFTEST(dcmsr_getItems)
+{
+    // disable test case when building shared libraries because of linker errors
+#ifndef DCMTK_SHARED
+    DSRListOfItems<Uint16> lst;
+    /* add data to list */
+    for (Uint16 i = 0; i < 10; ++i)
+        lst.addItem(i);
+    /* and check result */
+    OFCHECK_EQUAL(lst.getNumberOfItems(), 10);
+    OFVector<Uint16> vec;
+    OFCHECK(lst.getItems(vec).good());
+    OFCHECK_EQUAL(vec.size(), 10);
+    for (Uint16 j = 0; j < 10; ++j)
+        OFCHECK_EQUAL(vec.at(j), j);
+#endif
+}
diff --git a/dcmtls/docs/ciphers.txt b/dcmtls/docs/ciphers.txt
index a78f4da..c1d64bc 100644
--- a/dcmtls/docs/ciphers.txt
+++ b/dcmtls/docs/ciphers.txt
@@ -92,17 +92,8 @@ policy there is a number of aspects users should be aware of.
   regulations. These ciphersuites can be identified by the term "EXPORT" or
   "EXPORT1024" in their name.
 
-  Users should be aware that the security offered by these ciphersuites is
-  in general lower than the security offered by unrestricted ciphersuites.
-  Whether or not a ciphersuite is considered "safe" for a particular
-  application is a matter of the local security policy, though.
-
-  Users in Europe should be aware of the European Prestandard ENV 13608-3
-  "Health informatics - Security for healthcare communication - Part 3:
-  Secure data channels" which requires that no TLS ciphersuite providing
-  less than 80 bits of symmetric effective key space or less than 768 bits
-  of RSA or DH asymmetric key strength may be negotiated if conformance to
-  ENV 13608-3 is claimed by an application.
+  These ciphersuites must be considered insecure. Support for these
+  ciphersuites has been removed from DCMTK starting in version 3.6.1.
 
 4. Forward Secrecy Ciphersuites
 
@@ -139,10 +130,8 @@ policy there is a number of aspects users should be aware of.
   The unsupported ciphersuites are documented in OpenSSL's ciphers(1)
   manual page and currently include:
 
-  - TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA
   - TLS_DH_DSS_WITH_DES_CBC_SHA
   - TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA
-  - TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
   - TLS_DH_RSA_WITH_DES_CBC_SHA
   - TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA
   - TLS_DH_DSS_WITH_AES_128_CBC_SHA
@@ -168,12 +157,6 @@ TLS_RSA_WITH_NULL_SHA
   Secure Hash  : SHA-1
   Note         : UNENCRYPTED, NO CONFIDENTIALITY
 
-TLS_RSA_EXPORT_WITH_RC4_40_MD5
-
-  Key exchange : RSA (max. 512 bit)
-  Encryption   : RC4 with 40 bit key
-  Secure Hash  : MD5
-
 TLS_RSA_WITH_RC4_128_MD5
 
   Key exchange : RSA
@@ -186,24 +169,12 @@ TLS_RSA_WITH_RC4_128_SHA
   Encryption   : RC4 with 128 bit key
   Secure Hash  : SHA-1
 
-TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5
-
-  Key exchange : RSA (max. 512 bit)
-  Encryption   : RC2 (CBC mode) with 40 bit key
-  Secure Hash  : MD5
-
 TLS_RSA_WITH_IDEA_CBC_SHA
 
   Key exchange : RSA
   Encryption   : IDEA (CBC mode, 128 bit key)
   Secure Hash  : SHA-1
 
-TLS_RSA_EXPORT_WITH_DES40_CBC_SHA
-
-  Key exchange : RSA (max. 512 bit)
-  Encryption   : DES (CBC mode) with 40 bit key
-  Secure Hash  : SHA-1
-
 TLS_RSA_WITH_DES_CBC_SHA
 
   Key exchange : RSA
@@ -216,13 +187,6 @@ TLS_RSA_WITH_3DES_EDE_CBC_SHA
   Encryption   : 3DES (EDE CBC mode) with 168 bit key
   Secure Hash  : SHA-1
 
-TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA
-
-  Key exchange : Diffie-Hellman (max. 512 bit) with DSS certificate signature
-  Encryption   : DES (CBC mode) with 40 bit key
-  Secure Hash  : SHA-1
-  Note         : not supported by OpenSSL
-
 TLS_DH_DSS_WITH_DES_CBC_SHA
 
   Key exchange : Diffie-Hellman with DSS certificate signature
@@ -237,13 +201,6 @@ TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA
   Secure Hash  : SHA-1
   Note         : not supported by OpenSSL
 
-TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
-
-  Key exchange : Diffie-Hellman (max. 512 bit) with RSA certificate signature
-  Encryption   : DES (CBC mode) with 40 bit key
-  Secure Hash  : SHA-1
-  Note         : not supported by OpenSSL
-
 TLS_DH_RSA_WITH_DES_CBC_SHA
 
   Key exchange : Diffie-Hellman with RSA certificate signature
@@ -258,13 +215,6 @@ TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA
   Secure Hash  : SHA-1
   Note         : not supported by OpenSSL
 
-TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
-
-  Key exchange : Ephemeral Diffie-Hellman (max. 512 bit) with DSS certificate signature
-  Encryption   : DES (CBC mode) with 40 bit key
-  Secure Hash  : SHA-1
-  Note         : provides forward secrecy
-
 TLS_DHE_DSS_WITH_DES_CBC_SHA
 
   Key exchange : Ephemeral Diffie-Hellman with DSS certificate signature
@@ -279,13 +229,6 @@ TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
   Secure Hash  : SHA-1
   Note         : provides forward secrecy
 
-TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
-
-  Key exchange : Ephemeral Diffie-Hellman (max. 512 bit) with RSA certificate signature
-  Encryption   : DES (CBC mode) with 40 bit key
-  Secure Hash  : SHA-1
-  Note         : provides forward secrecy
-
 TLS_DHE_RSA_WITH_DES_CBC_SHA
 
   Key exchange : Ephemeral Diffie-Hellman with RSA certificate signature
@@ -300,13 +243,6 @@ TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
   Secure Hash  : SHA-1
   Note         : provides forward secrecy
 
-TLS_DH_anon_EXPORT_WITH_RC4_40_MD5
-
-  Key exchange : Anonymous Diffie-Hellman (max. 512 bit), no signatures
-  Encryption   : RC4 with 40 bit key
-  Secure Hash  : MD5
-  Note         : anonymous ciphersuite, susceptible to man-in-the-middle attacks
-
 TLS_DH_anon_WITH_RC4_128_MD5
 
   Key exchange : Anonymous Diffie-Hellman, no signatures
@@ -314,13 +250,6 @@ TLS_DH_anon_WITH_RC4_128_MD5
   Secure Hash  : MD5
   Note         : anonymous ciphersuite, susceptible to man-in-the-middle attacks
 
-TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA
-
-  Key exchange : Anonymous Diffie-Hellman (max. 512 bit), no signatures
-  Encryption   : DES (CBC mode) with 40 bit key
-  Secure Hash  : SHA-1
-  Note         : anonymous ciphersuite, susceptible to man-in-the-middle attacks
-
 TLS_DH_anon_WITH_DES_CBC_SHA
 
   Key exchange : Anonymous Diffie-Hellman, no signatures
@@ -335,37 +264,10 @@ TLS_DH_anon_WITH_3DES_EDE_CBC_SHA
   Secure Hash  : SHA-1
   Note         : anonymous ciphersuite, susceptible to man-in-the-middle attacks
 
-
 ===============================================================
 TLS Ciphersuites from draft-ietf-tls-56-bit-ciphersuites-00.txt
 ===============================================================
 
-TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA
-
-  Key exchange : RSA (max. 1024 bit)
-  Encryption   : DES (CBC mode) with 56 bit key
-  Secure Hash  : SHA-1
-
-TLS_RSA_EXPORT1024_WITH_RC4_56_SHA
-
-  Key exchange : RSA (max. 1024 bit)
-  Encryption   : RC4 with 56 bit key
-  Secure Hash  : SHA-1
-
-TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA
-
-  Key exchange : Ephemeral Diffie-Hellman (max. 1024 bit) with DSS certificate signature
-  Encryption   : DES (CBC mode) with 56 bit key
-  Secure Hash  : SHA-1
-  Note         : provides forward secrecy
-
-TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA
-
-  Key exchange : Ephemeral Diffie-Hellman (max. 1024 bit) with DSS certificate signature
-  Encryption   : RC4 with 56 bit key
-  Secure Hash  : SHA-1
-  Note         : provides forward secrecy
-
 TLS_DHE_DSS_WITH_RC4_128_SHA
 
   Key exchange : Ephemeral Diffie-Hellman with DSS certificate signature
@@ -373,24 +275,6 @@ TLS_DHE_DSS_WITH_RC4_128_SHA
   Secure Hash  : SHA-1
   Note         : provides forward secrecy
 
-
-===================================================================
-Additional Ciphersuites only available with OpenSSL 0.9.7 or newer.
-===================================================================
-
-TLS_RSA_EXPORT_WITH_RC4_56_MD5
-
-  Key exchange : RSA (max. 512 bit)
-  Encryption   : RC4 with 56 bit key
-  Secure Hash  : MD5
-
-TLS_RSA_EXPORT_WITH_RC2_CBC_56_MD5
-
-  Key exchange : RSA (max. 512 bit)
-  Encryption   : RC2 (CBC mode) with 56 bit key
-  Secure Hash  : MD5
-
-
 ==========================================================================
 AES Ciphersuites from RFC3268. Only available with OpenSSL 0.9.7 or newer.
 ==========================================================================
diff --git a/dcmtls/include/dcmtk/dcmtls/tlsscu.h b/dcmtls/include/dcmtk/dcmtls/tlsscu.h
index d9ba3cf..0b8eefa 100644
--- a/dcmtls/include/dcmtk/dcmtls/tlsscu.h
+++ b/dcmtls/include/dcmtk/dcmtls/tlsscu.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2013, OFFIS e.V.
+ *  Copyright (C) 2010-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -35,6 +35,7 @@
  *  class is derived from the general DcmSCU class and just adds the corresponding TLS
  *  capabilities.
  *  @warning This class is EXPERIMENTAL. Be careful to use it in production environment.
+ *  API changes in the future are possible and likely to happen.
  */
 class DCMTK_DCMTLS_EXPORT DcmTLSSCU : public DcmSCU
 {
@@ -46,9 +47,9 @@ public:
   DcmTLSSCU();
 
   /** Initialize SCU with connection peer information
-   *  @param peerHost [in] The hostname or IP of the host to talk to
-   *  @param peerAETtitle [in] AETitle of peer host to be used
-   *  @param portNum [in] TCP/IP port number to talk to
+   *  @param peerHost    The hostname or IP of the host to talk to
+   *  @param peerAETitle AETitle of peer host to be used
+   *  @param portNum     TCP/IP port number to talk to
    */
   DcmTLSSCU(const OFString& peerHost,
             const OFString& peerAETitle,
@@ -58,44 +59,45 @@ public:
     */
   virtual ~DcmTLSSCU();
 
-  /** Initialize network, i.e. prepare for association negotiation.
+  /** Initialize network, i.e.\ prepare for association negotiation
    *  @return EC_Normal if initialization was successful, otherwise error code
    */
   virtual OFCondition initNetwork();
 
-  /** Negotiate association by using presentation contexts and parameters
-   *  as defined by earlier function calls.
-   *  @return EC_Normal if negotiation was successful, otherwise error code
+  /** Negotiates association by using presentation contexts and parameters
+   *  as defined by earlier function calls
+   *  @return EC_Normal if negotiation was successful, otherwise error code.
    */
   virtual OFCondition negotiateAssociation();
 
   /** Closes the association of this SCU
    *  @deprecated The use of this method is deprecated. Please use
    *    DcmSCU::releaseAssociation() or DcmSCU::abortAssociation() instead.
-   *  @param closeType [in] Define whether to release or abort the association
+   *  @param closeType Define whether to release or abort the association
    */
   virtual void closeAssociation(const DcmCloseAssociationType closeType);
 
-  /** TODO: Not documented yet
-   *  @param str [in] Not documented yet
+  /** Add file with trusted certificate (used if authentication is enabled)
+   *  @param str Filename
    */
   virtual void addTrustedCertFile(const OFString& str);
 
-  /** TODO: Not documented yet
-   *  @param certDir [in] Not documented yet
+  /** Add directory to list of directories containing trusted certificates (used
+   *  if authentication is enabled)
+   *  @param certDir Not documented yet
    */
   virtual void addTrustedCertDir(const OFString& certDir);
 
-  /** TODO: Not documented yet
-   *  @param privateKey    [in] File with private key to authenticate with
-   *  @param certFile      [in] File with certificate to authenticate with
-   *  @param passphrase    [in] Password to access key. NULL asks user on console.
-   *                            "" will send empty password. Default is asking the
-   *                            user to enter password.
-   *  @param privKeyFormat [in] Format of private key parameter. Default is
-   *                            SSL_FILETYPE_PEM.
-   *  @param certFormat    [in] Format of certificate file parameter. Default is
-   *                            SSL_FILETYPE_PEM.
+  /** Turn on authentication for TLS
+   *  @param privateKey    File with private key to authenticate with
+   *  @param certFile      File with certificate to authenticate with
+   *  @param passphrase    Password to access key. NULL asks user on console.
+   *         "" will send empty password. Default is asking the
+   *         user to enter password.
+   *  @param privKeyFormat Format of private key parameter. Default is
+   *                       SSL_FILETYPE_PEM.
+   *  @param certFormat    Format of certificate file parameter. Default is
+   *                       SSL_FILETYPE_PEM.
    */
   virtual void enableAuthentication(const OFString& privateKey,
                                     const OFString& certFile,
@@ -103,40 +105,50 @@ public:
                                     const int privKeyFormat = SSL_FILETYPE_PEM,
                                     const int certFormat = SSL_FILETYPE_PEM);
 
-  /** Disables authentication. However, DcmTLSSCU will try to establish secured connection
-   *  in terms of encrypting data. Default is that authentication is disabled.
+  /** Disables authentication. However, DcmTLSSCU will try to establish secured
+   *  connection in terms of encrypting data. Default is that authentication is disabled.
    */
   virtual void disableAuthentication();
 
-  /** TODO: Not documented yet
-   *  @param cs [in] TODO: Not documented yet
+  /** Add ciphersuite to list of supported ciphersuites
+   *  @param cs The ciphersuite to add
    */
   virtual void addCiphersuite(const OFString& cs);
 
-  /** TODO: Not documented yet
-   *  @param seedFile [in] TODO: Not documented yet
+  /** Set file to be used as random seed for initializing the Pseudo Random
+   *  Number Generator (PRNG)
+   *  @param seedFile The seed file to be used.
    */
   virtual void setReadSeedFile(const OFString& seedFile);
 
-  /** TODO: Not documented yet
-   *  @param seedFile [in] TODO: Not documented yet
+  /** Set file to be use to store the updated random seed to store the updated
+   *  random seed from the Pseudo Random Number Generator (PRNG).
+   *  @param seedFile The seed file to be used for writing back seed info
    */
   virtual void setWriteSeedFile(const OFString& seedFile);
 
   /** Set whether peer's certificate must be there, only is checked if there or is ignored
-   *  @param cert [in] peer certificate verification mode. The following values are permitted:
-   *                   DCV_requireCertificate, DCV_checkCertificate, DCV_ignoreCertificate
+   *  @param cert Peer certificate verification mode. The following values are permitted:
+   *         DCV_requireCertificate, DCV_checkCertificate, DCV_ignoreCertificate
    */
   virtual void setPeerCertVerification(const DcmCertificateVerification cert);
 
-  /** Not documented yet
-   *  @param dhParam [in] TODO: Not documented yet
+  /** Set Diffie-Hellman parameters
+   *  @param dhParam Diffie-Hellman parameters to be used.
    */
   virtual void setDHParam(const OFString& dhParam);
 
   /** Returns OFTrue if authentication is enabled
-   *  @param ... TODO: Not documented yet
-   *  @return Return value OFTrue
+   *  @param privKeyFile   The file containing the private key used
+   *  @param certFile      The file containing the certificate used
+   *  @param passphrase    The passphrase used for unlocking the private key
+   *         file. If NULL, password is asked from STDIN. If empty string (""),
+   *         password is sent empty. All others values are sent as given.
+   *  @param privKeyFormat Format of the private key in privKeyFile, see
+   *         documentation of m_privateKeyFileFormat.
+   *  @param certFormat    The certificate format of certificate in certFile.
+   *         See documentation of m_certKeyFileFormat.
+   *  @return Returns OFTrue if authentication is enabled, OFFalse otherwise
    */
   virtual OFBool getAuthenticationParams(OFString& privKeyFile,
                                          OFString& certFile,
@@ -144,33 +156,36 @@ public:
                                          int& privKeyFormat,
                                          int& certFormat) const;
 
-  /** TODO: Not documented yet
-   *  @param files [out] TODO: Not documented yet
+  /** Get files considered for trusted certificates.
+   *  @param files The file names that are considered as trusted
+   *         certificates
    */
   virtual void getTrustedCertFiles(OFList<OFString>& files /*out*/) const;
 
-  /** TODO: Not documented yet
-   *  @param trustedDirs [out] TODO: Not documented yet
+  /** Get directories containing considered to contain trusted certificates.
+   *  @param trustedDirs directories consiered to contain trusted certificates.
    */
   virtual void getTrustedCertDirs(OFList<OFString>& trustedDirs /*out*/) const;
 
-  /** TODO: Not documented yet
-   *  @return TODO: Not documented yet
+  /** Get ciphersuites set to be supported
+   *  @return Ciphersuites set to be supported
    */
   virtual OFString getCiphersuites() const;
 
-  /** TODO: Not documented yet
-   *  @return TODO: Not documented yet
+  /** Get random seed file used for initializing Pseudo Random Number
+   *  Generator (PRNG)
+   *  @return Random seed file used for reading
    */
   virtual OFString getReadSeedFile() const;
 
-  /** TODO: Not documented yet
-   *  @return TODO: Not documented yet
+  /** Get random seed file the PRNG should use to store back updated random
+   *  seed information
+   *  @return Get random seed file used for writing back updated seed
    */
   virtual OFString getWriteSeedFile() const;
 
-  /** TODO: Not documented yet
-   *  @return TODO: Not documented yet
+  /** Get Diffie-Hellman parameters set to be used
+   *  @return Diffie-Hellman parameters set to be used
    */
   virtual OFString getDHParam() const;
 
@@ -183,7 +198,7 @@ private:
 
   /** Private undefined operator=. Shall never be called.
    *  @param src Source object
-   *  @return Reference to this
+   *  @return Reference to this object
    */
   DcmTLSSCU &operator=(const DcmTLSSCU &src);
 
@@ -211,21 +226,21 @@ private:
   /// Might be either "SSL_FILETYPE_PEM" (default) or "SSL_FILETYPE_ASN1"
   int m_certKeyFileFormat;
 
-  /// Password used for unlocking the private key file. If NULL, password is asked from
-  /// STDIN. If empty string (""), password is sent empty. All others values are sent as
-  /// given.
+  ///
   char* m_passwd;
 
-  /// String containing all cipher suites being (additionally? TODO) configured
+  /// String containing all cipher suites being configured to be used
   OFString m_ciphersuites;
 
-  /// TODO: Not documented yet
+  /// Random seed file used for initializing Pseudo Random Number
+  /// Generator (PRNG)
   OFString m_readSeedFile;
 
-  /// TODO: Not documented yet
+  /// Random seed file used for writing updated seed from Pseudo Random Number
+  /// Generator back to a file
   OFString m_writeSeedFile;
 
-  /// Denotes how certificates are handled, i.e. whether they are required, validated or
+  /// Denotes how certificates are handled, i.e.\ whether they are required, validated or
   /// only validated if present
   DcmCertificateVerification m_certVerification;
 
diff --git a/dcmtls/libsrc/Makefile.dep b/dcmtls/libsrc/Makefile.dep
index c75bd80..89f4e97 100644
--- a/dcmtls/libsrc/Makefile.dep
+++ b/dcmtls/libsrc/Makefile.dep
@@ -45,6 +45,7 @@ tlslayer.o: tlslayer.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmtls/tlstrans.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcmtrans.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -199,10 +200,12 @@ tlstrans.o: tlstrans.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../include/dcmtk/dcmtls/tlstrans.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcmtrans.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../../dcmnet/include/dcmtk/dcmnet/dcmlayer.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dcmlayer.h \
  ../../dcmnet/include/dcmtk/dcmnet/dndefine.h \
  ../include/dcmtk/dcmtls/tlsdefin.h ../include/dcmtk/dcmtls/tlslayer.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -231,7 +234,6 @@ tlstrans.o: tlstrans.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
- ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
@@ -249,7 +251,6 @@ tlstrans.o: tlstrans.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
- ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
diff --git a/dcmtls/libsrc/tlslayer.cc b/dcmtls/libsrc/tlslayer.cc
index 5512bcb..ddb086f 100644
--- a/dcmtls/libsrc/tlslayer.cc
+++ b/dcmtls/libsrc/tlslayer.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -48,6 +48,11 @@ END_EXTERN_C
 #define DCMTK_SSL_CTX_get0_param(A) A->param;
 #endif
 
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+#define SSL_CTX_get_cert_store(ctx) ctx->cert_store
+#define EVP_PKEY_base_id(key) EVP_PKEY_type(key->type)
+#endif
+
 extern "C" int DcmTLSTransportLayer_certificateValidationCallback(int ok, X509_STORE_CTX *storeContext);
 
 OFLogger DCM_dcmtlsLogger = OFLog::getLogger("dcmtk.dcmtls");
@@ -89,43 +94,26 @@ static const DcmCipherSuiteList cipherSuiteList[] =
 {
     {"TLS_RSA_WITH_NULL_MD5",                   SSL3_TXT_RSA_NULL_MD5},
     {"TLS_RSA_WITH_NULL_SHA",                   SSL3_TXT_RSA_NULL_SHA},
-    {"TLS_RSA_EXPORT_WITH_RC4_40_MD5",          SSL3_TXT_RSA_RC4_40_MD5},
     {"TLS_RSA_WITH_RC4_128_MD5",                SSL3_TXT_RSA_RC4_128_MD5},
     {"TLS_RSA_WITH_RC4_128_SHA",                SSL3_TXT_RSA_RC4_128_SHA},
-    {"TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5",      SSL3_TXT_RSA_RC2_40_MD5},
     {"TLS_RSA_WITH_IDEA_CBC_SHA",               SSL3_TXT_RSA_IDEA_128_SHA},
-    {"TLS_RSA_EXPORT_WITH_DES40_CBC_SHA",       SSL3_TXT_RSA_DES_40_CBC_SHA},
     {"TLS_RSA_WITH_DES_CBC_SHA",                SSL3_TXT_RSA_DES_64_CBC_SHA},
     {"TLS_RSA_WITH_3DES_EDE_CBC_SHA",           SSL3_TXT_RSA_DES_192_CBC3_SHA},
-    {"TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA",    SSL3_TXT_DH_DSS_DES_40_CBC_SHA},
     {"TLS_DH_DSS_WITH_DES_CBC_SHA",             SSL3_TXT_DH_DSS_DES_64_CBC_SHA},
     {"TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA",        SSL3_TXT_DH_DSS_DES_192_CBC3_SHA},
-    {"TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA",    SSL3_TXT_DH_RSA_DES_40_CBC_SHA},
     {"TLS_DH_RSA_WITH_DES_CBC_SHA",             SSL3_TXT_DH_RSA_DES_64_CBC_SHA},
     {"TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA",        SSL3_TXT_DH_RSA_DES_192_CBC3_SHA},
-    {"TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA",   SSL3_TXT_EDH_DSS_DES_40_CBC_SHA},
     {"TLS_DHE_DSS_WITH_DES_CBC_SHA",            SSL3_TXT_EDH_DSS_DES_64_CBC_SHA},
     {"TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA",       SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA},
-    {"TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",   SSL3_TXT_EDH_RSA_DES_40_CBC_SHA},
     {"TLS_DHE_RSA_WITH_DES_CBC_SHA",            SSL3_TXT_EDH_RSA_DES_64_CBC_SHA},
     {"TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA",       SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA},
-    {"TLS_DH_anon_EXPORT_WITH_RC4_40_MD5",      SSL3_TXT_ADH_RC4_40_MD5},
     {"TLS_DH_anon_WITH_RC4_128_MD5",            SSL3_TXT_ADH_RC4_128_MD5},
-    {"TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA",   SSL3_TXT_ADH_DES_40_CBC_SHA},
     {"TLS_DH_anon_WITH_DES_CBC_SHA",            SSL3_TXT_ADH_DES_64_CBC_SHA},
     {"TLS_DH_anon_WITH_3DES_EDE_CBC_SHA",       SSL3_TXT_ADH_DES_192_CBC_SHA},
-    {"TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA",     TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA},
-    {"TLS_RSA_EXPORT1024_WITH_RC4_56_SHA",      TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA},
-    {"TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA", TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA},
-    {"TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA",  TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA},
     {"TLS_DHE_DSS_WITH_RC4_128_SHA",            TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA}
 
 #if OPENSSL_VERSION_NUMBER >= 0x0090700fL
-    // cipersuites added in OpenSSL 0.9.7
     ,
-    {"TLS_RSA_EXPORT_WITH_RC4_56_MD5",          TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5},
-    {"TLS_RSA_EXPORT_WITH_RC2_CBC_56_MD5",      TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5},
-
     /* AES ciphersuites from RFC3268 */
     {"TLS_RSA_WITH_AES_128_CBC_SHA",            TLS1_TXT_RSA_WITH_AES_128_SHA},
     {"TLS_DH_DSS_WITH_AES_128_CBC_SHA",         TLS1_TXT_DH_DSS_WITH_AES_128_SHA},
@@ -184,10 +172,11 @@ DcmTLSTransportLayer::DcmTLSTransportLayer(int networkRole, const char *randFile
      // but the API has been available at least since 0.9.5.
      SSL_library_init();
      SSL_load_error_strings();
-     SSLeay_add_all_algorithms();
+     OpenSSL_add_all_algorithms();
      seedPRNG(randFile);
    }
 
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
    if (networkRole == DICOM_APPLICATION_ACCEPTOR)
    {
      transportLayerContext = SSL_CTX_new(TLSv1_server_method());
@@ -196,6 +185,21 @@ DcmTLSTransportLayer::DcmTLSTransportLayer(int networkRole, const char *randFile
    } else {
      transportLayerContext = SSL_CTX_new(TLSv1_method());
    }
+#else
+   // starting with OpenSSL 1.1.0, a new TLS_method() is offered
+   // that automatically selects the highest version of the TLS
+   // protocol supported by client and server.
+   // The previous TLSv1_methods are now deprecated and generate
+   // a warning.
+   if (networkRole == DICOM_APPLICATION_ACCEPTOR)
+   {
+     transportLayerContext = SSL_CTX_new(TLS_server_method());
+   } else if (networkRole == DICOM_APPLICATION_REQUESTOR) {
+     transportLayerContext = SSL_CTX_new(TLS_client_method());
+   } else {
+     transportLayerContext = SSL_CTX_new(TLS_method());
+   }
+#endif
 
 #ifdef DEBUG
    if (transportLayerContext == NULL)
@@ -280,7 +284,12 @@ DcmTransportLayerStatus DcmTLSTransportLayer::setCipherSuites(const char *suites
 {
   if (transportLayerContext && suites)
   {
-    if (!SSL_CTX_set_cipher_list(transportLayerContext, suites)) return TCS_tlsError;
+    if (!SSL_CTX_set_cipher_list(transportLayerContext, suites))
+    {
+      const char *err = ERR_reason_error_string(ERR_peek_error());
+      if (err) DCMTLS_ERROR("OpenSSL error: " << err);
+      return TCS_tlsError;
+    }
   } else return TCS_illegalCall;
   return TCS_ok;
 }
@@ -295,7 +304,12 @@ DcmTransportLayerStatus DcmTLSTransportLayer::setPrivateKeyFile(const char *file
   /* fileType should be SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM */
   if (transportLayerContext)
   {
-    if (0 >= SSL_CTX_use_PrivateKey_file(transportLayerContext, fileName, fileType)) return TCS_tlsError;
+    if (0 >= SSL_CTX_use_PrivateKey_file(transportLayerContext, fileName, fileType))
+    {
+      const char *err = ERR_reason_error_string(ERR_peek_error());
+      if (err) DCMTLS_ERROR("OpenSSL error: " << err);
+      return TCS_tlsError;
+    }
   } else return TCS_illegalCall;
   return TCS_ok;
 }
@@ -305,7 +319,12 @@ DcmTransportLayerStatus DcmTLSTransportLayer::setCertificateFile(const char *fil
   /* fileType should be SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM */
   if (transportLayerContext)
   {
-    if (0 >= SSL_CTX_use_certificate_file(transportLayerContext, fileName, fileType)) return TCS_tlsError;
+    if (0 >= SSL_CTX_use_certificate_file(transportLayerContext, fileName, fileType))
+    {
+      const char *err = ERR_reason_error_string(ERR_peek_error());
+      if (err) DCMTLS_ERROR("OpenSSL error: " << err);
+      return TCS_tlsError;
+    }
   } else return TCS_illegalCall;
   return TCS_ok;
 }
@@ -330,9 +349,19 @@ DcmTransportLayerStatus DcmTLSTransportLayer::addTrustedCertificateFile(const ch
   /* fileType should be SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM */
   if (transportLayerContext)
   {
-    X509_LOOKUP *x509_lookup = X509_STORE_add_lookup(transportLayerContext->cert_store, X509_LOOKUP_file());
-    if (x509_lookup == NULL) return TCS_tlsError;
-    if (! X509_LOOKUP_load_file(x509_lookup, fileName, fileType)) return TCS_tlsError;
+    X509_LOOKUP *x509_lookup = X509_STORE_add_lookup(SSL_CTX_get_cert_store(transportLayerContext), X509_LOOKUP_file());
+    if (x509_lookup == NULL)
+    {
+      const char *err = ERR_reason_error_string(ERR_peek_error());
+      if (err) DCMTLS_ERROR("OpenSSL error: " << err);
+      return TCS_tlsError;
+    }
+    if (! X509_LOOKUP_load_file(x509_lookup, fileName, fileType))
+    {
+      const char *err = ERR_reason_error_string(ERR_peek_error());
+      if (err) DCMTLS_ERROR("OpenSSL error: " << err);
+      return TCS_tlsError;
+    }
   } else return TCS_illegalCall;
   return TCS_ok;
 }
@@ -342,9 +371,19 @@ DcmTransportLayerStatus DcmTLSTransportLayer::addTrustedCertificateDir(const cha
   /* fileType should be SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM */
   if (transportLayerContext)
   {
-    X509_LOOKUP *x509_lookup = X509_STORE_add_lookup(transportLayerContext->cert_store, X509_LOOKUP_hash_dir());
-    if (x509_lookup == NULL) return TCS_tlsError;
-    if (! X509_LOOKUP_add_dir(x509_lookup, pathName, fileType)) return TCS_tlsError;
+    X509_LOOKUP *x509_lookup = X509_STORE_add_lookup(SSL_CTX_get_cert_store(transportLayerContext), X509_LOOKUP_hash_dir());
+    if (x509_lookup == NULL)
+    {
+      const char *err = ERR_reason_error_string(ERR_peek_error());
+      if (err) DCMTLS_ERROR("OpenSSL error: " << err);
+      return TCS_tlsError;
+    }
+    if (! X509_LOOKUP_add_dir(x509_lookup, pathName, fileType))
+    {
+      const char *err = ERR_reason_error_string(ERR_peek_error());
+      if (err) DCMTLS_ERROR("OpenSSL error: " << err);
+      return TCS_tlsError;
+    }
   } else return TCS_illegalCall;
   return TCS_ok;
 }
@@ -464,7 +503,7 @@ OFString DcmTLSTransportLayer::dumpX509Certificate(X509 *peerCertificate)
     EVP_PKEY *pubkey = X509_get_pubkey(peerCertificate); // creates copy of public key
     if (pubkey)
     {
-      switch (EVP_PKEY_type(pubkey->type))
+      switch (EVP_PKEY_base_id(pubkey))
       {
         case EVP_PKEY_RSA:
           certPubKeyType = "RSA";
@@ -484,11 +523,11 @@ OFString DcmTLSTransportLayer::dumpX509Certificate(X509 *peerCertificate)
     }
     OFOStringStream out;
     out << "X.509v" << certVersion << " Certificate" << OFendl
-         << "  Subject      : " << certSubjectName << OFendl
-         << "  Issued by    : " << certIssuerName << OFendl
-         << "  Serial no.   : " << certSerialNumber << OFendl
-         << "  Validity     : not before " << certValidNotBefore << ", not after " << certValidNotAfter << OFendl
-         << "  Public key   : " << certPubKeyType << ", " << certPubKeyBits << " bits" << OFendl << OFStringStream_ends;
+        << "  Subject     : " << certSubjectName << OFendl
+        << "  Issued by   : " << certIssuerName << OFendl
+        << "  Serial no.  : " << certSerialNumber << OFendl
+        << "  Validity    : not before " << certValidNotBefore << ", not after " << certValidNotAfter << OFendl
+        << "  Public key  : " << certPubKeyType << ", " << certPubKeyBits << " bits" << OFStringStream_ends;
     OFSTRINGSTREAM_GETOFSTRING(out, ret)
     return ret;
   } else {
diff --git a/dcmtls/libsrc/tlstrans.cc b/dcmtls/libsrc/tlstrans.cc
index 10f2803..1fd695a 100644
--- a/dcmtls/libsrc/tlstrans.cc
+++ b/dcmtls/libsrc/tlstrans.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2010, OFFIS e.V.
+ *  Copyright (C) 1998-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -296,19 +296,19 @@ OFString& DcmTLSConnection::dumpConnectionParameters(OFString& str)
   if (tlsConnection == NULL)
   {
     // This should never happen (famous last words)
-    str = "Transport connection: TLS/SSL over TCP/IP\n  Error: No Connection\n";
+    str = "Transport connection: TLS/SSL over TCP/IP\n  Error: No Connection";
     return str;
   }
 
   X509 *peerCert = SSL_get_peer_certificate(tlsConnection);
   OFOStringStream stream;
   stream << "Transport connection: TLS/SSL over TCP/IP" << OFendl
-         << "  Protocol: " << SSL_get_version(tlsConnection) << OFendl
-         << "  Ciphersuite: " << SSL_CIPHER_get_name(SSL_get_current_cipher(tlsConnection))
+         << "  Protocol    : " << SSL_get_version(tlsConnection) << OFendl
+         << "  Ciphersuite : " << SSL_CIPHER_get_name(SSL_get_current_cipher(tlsConnection))
          << ", version: " << SSL_CIPHER_get_version(SSL_get_current_cipher(tlsConnection))
          << ", encryption: " << SSL_CIPHER_get_bits(SSL_get_current_cipher(tlsConnection), NULL) << " bits" << OFendl
-         << DcmTLSTransportLayer::dumpX509Certificate(peerCert) << OFendl;
-  // out << "Certificate verification: " << X509_verify_cert_error_string(SSL_get_verify_result(tlsConnection)) << OFendl;
+         << DcmTLSTransportLayer::dumpX509Certificate(peerCert);
+  // stream << OFendl << "Certificate verification: " << X509_verify_cert_error_string(SSL_get_verify_result(tlsConnection));
   X509_free(peerCert);
   stream << OFStringStream_ends;
   OFSTRINGSTREAM_GETSTR(stream, res)
diff --git a/dcmtls/tests/dcmtk_ca.pl b/dcmtls/tests/dcmtk_ca.pl
index e688fa1..6b1de9d 100755
--- a/dcmtls/tests/dcmtk_ca.pl
+++ b/dcmtls/tests/dcmtk_ca.pl
@@ -1,6 +1,6 @@
-#!/usr/local/bin/perl
+#!/usr/bin/perl
 #
-#  Copyright (C) 1998-2010, OFFIS e.V.
+#  Copyright (C) 1998-2016, OFFIS e.V.
 #  All rights reserved.  See COPYRIGHT file for details.
 #
 #  This software and supporting documentation were developed by
@@ -11,7 +11,7 @@
 #   D-26121 Oldenburg, Germany
 #
 #
-#  Module: dcmpstat
+#  Module: dcmtls
 #
 #  Author: Marco Eichelberg
 #
@@ -75,15 +75,15 @@ usage: dcmtk_ca.pl command [options] arguments
     newca [options] directory
       generate a new Certification Authority; directory must not yet exist.
       -type rsa|dsa                      type of CA certificate (default:rsa)
-      -days days                         validity of CA certificate (365)
-      -bits bits                         bits in CA key (default: 2048)
+      -days days                         validity of CA certificate (730)
+      -bits bits                         bits in CA key (default: 4096)
     mkcert [options] ca_dir certfile keyfile
       generate a new key pair and use the Certification Authority in ca_dir
       to certify the public key; write certificate to certfile and the private
       key to keyfile.
       -type rsa|dsa                      type of certificate (default:rsa)
-      -days days                         validity of certificate (365)
-      -bits bits                         bits in private key (default: 1024)
+      -days days                         validity of certificate (730)
+      -bits bits                         bits in private key (default: 2048)
       -des yes|no                        encrypt private key (default: yes)
       -pkcs12 filename                   export certificate to PKCS#12
       -pkcs12name name                   PKCS#12 symbolic name
@@ -102,7 +102,7 @@ sub createNewCA
   local($days) = $options{'-days'};
   if ($days ne '') { $days = "-days $days"; }
   local($bits) = $options{'-bits'};
-  if ($bits == 0) { $bits = 2048; }
+  if ($bits == 0) { $bits = 4096; }
   local($type) = $options{'-type'};
   local($keytype);
   if ($type eq 'dsa')
@@ -154,7 +154,7 @@ sub createNewCertificate
   if ($days ne '') { $days = "-days $days"; }
   local($ca_certificate) = $options{'-cacert'};
   local($bits) = $options{'-bits'};
-  if ($bits == 0) { $bits = 1024; }
+  if ($bits == 0) { $bits = 2048; }
   local($type) = $options{'-type'};
   local($encryption);
   local($des) = $options{'-des'};
@@ -253,9 +253,9 @@ default_ca	= CA_default		# The default ca section
 
 dir		= ${ca_directory}	# Where everything is kept
 certs		= \$dir/certs		# Where the issued certs are kept
-crl_dir		= \$dir/crl		# Where the issued crl are kept
+crl_dir 	= \$dir/crl		# Where the issued crl are kept
 database	= \$dir/index.txt	# database index file.
-new_certs_dir	= \$dir/newcerts		# default place for new certs.
+new_certs_dir	= \$dir/newcerts	# default place for new certs.
 
 certificate	= \$dir/cacert.pem 	# The CA certificate
 serial		= \$dir/serial 		# The current serial number
@@ -269,9 +269,9 @@ x509_extensions	= usr_cert		# The extentions to add to the cert
 # so this is commented out by default to leave a V1 CRL.
 # crl_extensions	= crl_ext
 
-default_days	= 365			# how long to certify for
-default_crl_days= 30			# how long before next CRL
-default_md	= md5			# which md to use.
+default_days	= 730			# how long to certify for
+default_crl_days= 30	  		# how long before next CRL
+default_md	= sha256	  	# which md to use.
 preserve	= no			# keep passed DN ordering
 
 # A few difference way of specifying how similar the request should look
@@ -303,11 +303,11 @@ emailAddress		= optional
 ####################################################################
 [ req ]
 
-default_bits		= 1024
+default_bits		= 2048
 default_keyfile 	= privkey.pem
 distinguished_name	= req_distinguished_name
 attributes		= req_attributes
-x509_extensions	= v3_ca	# The extentions to add to the self signed cert
+x509_extensions 	= v3_ca	# The extentions to add to the self signed cert
 
 # Passwords for private keys if not present they will be prompted for
 # input_password = secret
diff --git a/dcmtract/docs/dcmtract.dox b/dcmtract/docs/dcmtract.dox
index 12566ff..94d3379 100644
--- a/dcmtract/docs/dcmtract.dox
+++ b/dcmtract/docs/dcmtract.dox
@@ -1,6 +1,6 @@
 /*!
 
-\page mod_dcmtract dcmtract: a library for working with Tractography Results
+\page mod_dcmtract dcmtract: a library for working with tractography results
 
 This module contains classes to deal with DICOM Tractography Results objects.
 It is able to create, load and access the contained fiber tracks and the related
@@ -22,7 +22,6 @@ Module.
 The main class of this module is:
 \li \b TrcTractographyResults
 
-
 \section Examples
 
 The following (complete) example shows how to load a DICOM Tractography Results
diff --git a/dcmtract/include/dcmtk/dcmtract/trcstatistic.h b/dcmtract/include/dcmtk/dcmtract/trcstatistic.h
index 6752221..98dab55 100755
--- a/dcmtract/include/dcmtk/dcmtract/trcstatistic.h
+++ b/dcmtract/include/dcmtk/dcmtract/trcstatistic.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2016, Open Connections GmbH
+ *  Copyright (C) 2016-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -75,20 +75,6 @@ public:
    */
   virtual OFCondition write(DcmItem& destination);
 
-  /** Set descriptive information of statistic
-   *  @param  typeCode The type of statistic, DICOM prescribes codes from
-   *          CID 7263 "Diffusion Tractography Measurement Types"
-   *  @param  typeModifierCode Defines the region of interest, DICOM prescribes
-   *          code from CID 7464 "General Region of Interest Measurement
-   *          Modifiers"
-   *  @param  unitsCode The physical units of the statistic value, DICOM
-   *          prescribes code from CID 82 "Units of Measurement" (UCUM).
-   *  @return EC_Normal if setting was successful, error otherwise.
-   */
-  virtual OFCondition set(const CodeSequenceMacro& typeCode,
-                          const CodeSequenceMacro& typeModifierCode,
-                          const CodeSequenceMacro& unitsCode);
-
   /** Get descriptive information of statistic
    *  @param  typeCode Returns type of statistic
    *  @param  typeModifierCode Returns region of interest
@@ -105,6 +91,20 @@ public:
 
 protected:
 
+  /** Set descriptive information of statistic
+   *  @param  typeCode The type of statistic, DICOM prescribes codes from
+   *          CID 7263 "Diffusion Tractography Measurement Types"
+   *  @param  typeModifierCode Defines the region of interest, DICOM prescribes
+   *          code from CID 7464 "General Region of Interest Measurement
+   *          Modifiers"
+   *  @param  unitsCode The physical units of the statistic value, DICOM
+   *          prescribes code from CID 82 "Units of Measurement" (UCUM).
+   *  @return EC_Normal if setting was successful, error otherwise.
+   */
+  virtual OFCondition setCommon(const CodeSequenceMacro& typeCode,
+                                const CodeSequenceMacro& typeModifierCode,
+                                const CodeSequenceMacro& unitsCode);
+
   /// Single item from Concept Name Code Sequence
   CodeSequenceMacro m_Type;
 
@@ -220,6 +220,10 @@ public:
                           CodeSequenceMacro& unitsCode,
                           const Float32*& statisticValues,
                           unsigned long& numValues);
+
+  // Make sure the original virtual get() function from TrcStatistic
+  // stays visible
+  using TrcStatistic::get;
 };
 
 /** Class representing a Track Set statistic, i.e. a single statistic value that
@@ -312,6 +316,10 @@ public:
                           CodeSequenceMacro& unitsCode,
                           Float64& statisticValue);
 
+    // Make sure the original virtual get() function from TrcStatistic
+  // stays visible
+  using TrcStatistic::get;
+
 };
 
 
diff --git a/dcmtract/include/dcmtk/dcmtract/trctractographyresults.h b/dcmtract/include/dcmtk/dcmtract/trctractographyresults.h
index c2f1fc3..f37947f 100644
--- a/dcmtract/include/dcmtk/dcmtract/trctractographyresults.h
+++ b/dcmtract/include/dcmtk/dcmtract/trctractographyresults.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2016, Open Connections GmbH
+ *  Copyright (C) 2016-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -47,6 +47,8 @@ public:
 
   /** Create new Tractography Results object. The resulting object then can
    *  be filled by using addTrackSet().
+   *  The memory of the resulting Tractography Results object has to be freed by the
+   *  caller.
    *  @param  contentIdentification Content identification for this object
    *  @param  contentDate The date the content creation started
    *  @param  contentTime The time the content creation started
@@ -122,7 +124,9 @@ public:
 
   // -------------------- loading and saving ---------------------
 
-  /** Load Tractography Results object from item file
+  /** Load Tractography Results object from a file.
+   *  The memory of the resulting Tractography Results object has to be freed by the
+   *  caller.
    *  @param  filename The file to read from
    *  @param  tractography  The resulting Tractography Results object. NULL if
    *          dataset could not be read successfully.
@@ -131,7 +135,9 @@ public:
   static OFCondition loadFile(const OFString& filename,
                               TrcTractographyResults*& tractography);
 
-  /** Load Tractography Results object from item object.
+  /** Load Tractography Results object from dataset object.
+   *  The memory of the resulting Tractography Results object has to be freed
+   *  by the caller.
    *  @param  dataset The dataset to read from
    *  @param  tractography  The resulting Tractography Results object. NULL if
    *          dataset could not be read successfully.
diff --git a/dcmtract/libsrc/CMakeLists.txt b/dcmtract/libsrc/CMakeLists.txt
index 71d1cdf..1b35c3b 100644
--- a/dcmtract/libsrc/CMakeLists.txt
+++ b/dcmtract/libsrc/CMakeLists.txt
@@ -2,4 +2,3 @@
 DCMTK_ADD_LIBRARY(dcmtract trctypes trctrackset trctrack trcmeasurement trcstatistic trcmodtractresults trctractographyresults)
 
 DCMTK_TARGET_LINK_MODULES(dcmtract dcmiod dcmdata ofstd oflog)
-DCMTK_TARGET_LINK_LIBRARIES(dcmtract ${ZLIB_LIBS} ${WIN32_STD_LIBRARIES})
diff --git a/dcmtract/libsrc/Makefile.dep b/dcmtract/libsrc/Makefile.dep
index 16a7637..ff84b2e 100644
--- a/dcmtract/libsrc/Makefile.dep
+++ b/dcmtract/libsrc/Makefile.dep
@@ -59,6 +59,8 @@ trcmeasurement.o: trcmeasurement.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -91,11 +93,9 @@ trcmeasurement.o: trcmeasurement.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -183,6 +183,8 @@ trcmodtractresults.o: trcmodtractresults.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -216,11 +218,9 @@ trcmodtractresults.o: trcmodtractresults.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -312,6 +312,8 @@ trcstatistic.o: trcstatistic.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -344,11 +346,9 @@ trcstatistic.o: trcstatistic.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -436,6 +436,8 @@ trctrack.o: trctrack.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -512,6 +514,8 @@ trctrackset.o: trctrackset.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -542,11 +546,9 @@ trctrackset.o: trctrackset.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
@@ -638,6 +640,8 @@ trctractographyresults.o: trctractographyresults.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
@@ -668,11 +672,9 @@ trctractographyresults.o: trctractographyresults.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
- ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
  ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
diff --git a/dcmtract/libsrc/trcstatistic.cc b/dcmtract/libsrc/trcstatistic.cc
index 2ac4f79..a04c8f7 100755
--- a/dcmtract/libsrc/trcstatistic.cc
+++ b/dcmtract/libsrc/trcstatistic.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2016, Open Connections GmbH
+ *  Copyright (C) 2016-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -92,9 +92,9 @@ OFCondition TrcStatistic::get(CodeSequenceMacro& typeCode,
 }
 
 
-OFCondition TrcStatistic::set(const CodeSequenceMacro& typeCode,
-                              const CodeSequenceMacro& typeModifierCode,
-                              const CodeSequenceMacro& unitsCode)
+OFCondition TrcStatistic::setCommon(const CodeSequenceMacro& typeCode,
+                                    const CodeSequenceMacro& typeModifierCode,
+                                    const CodeSequenceMacro& unitsCode)
 {
   OFCondition result;
   result = OFconst_cast(CodeSequenceMacro*, &typeCode)->check(OFTrue /* quiet */);
@@ -155,7 +155,7 @@ OFCondition TrcTracksStatistic::create(const CodeSequenceMacro& typeCode,
     return EC_MemoryExhausted;
 
   //OFCondition result = OFstatic_cast(TrcStatistic*,statistic)->set(typeCode, typeModifierCode, unitsCode);
-  OFCondition result = statistic->TrcStatistic::set(typeCode, typeModifierCode, unitsCode);
+  OFCondition result = statistic->TrcStatistic::setCommon(typeCode, typeModifierCode, unitsCode);
   if (result.good())
   {
     result = statistic->getData().putAndInsertFloat32Array(DCM_FloatingPointValues, statisticValues, numValues);
@@ -231,7 +231,7 @@ OFCondition TrcTracksStatistic::set(const CodeSequenceMacro& typeCode,
   {
     return TRC_EC_InvalidStatisticData;
   }
-  OFCondition result = TrcStatistic::set(typeCode, typeModifierCode, unitsCode);
+  OFCondition result = TrcStatistic::setCommon(typeCode, typeModifierCode, unitsCode);
   if (result.good())
   {
     result = m_Item->putAndInsertFloat32Array(DCM_FloatingPointValues, statisticValues, numValues);
@@ -336,7 +336,7 @@ OFCondition TrcTrackSetStatistic::set(const CodeSequenceMacro& typeCode,
                                       const CodeSequenceMacro& unitsCode,
                                       const Float64 statisticValue)
 {
-  OFCondition result = TrcStatistic::set(typeCode, typeModifierCode, unitsCode);
+  OFCondition result = TrcStatistic::setCommon(typeCode, typeModifierCode, unitsCode);
   if (result.good())
   {
     result = m_Item->putAndInsertFloat64(DCM_FloatingPointValue, statisticValue, 0);
diff --git a/dcmtract/libsrc/trctrackset.cc b/dcmtract/libsrc/trctrackset.cc
index d6988ba..8c8c4b7 100644
--- a/dcmtract/libsrc/trctrackset.cc
+++ b/dcmtract/libsrc/trctrackset.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2016, Open Connections GmbH
+ *  Copyright (C) 2016-2017, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -511,7 +511,7 @@ OFCondition TrcTrackSet::setRecommendedDisplayCIELabValue(const Uint16 L,
                                                           const Uint16 a,
                                                           const Uint16 b)
 {
-  DcmElement* elem = newDicomElement(DCM_RecommendedDisplayCIELabValue);
+  DcmElement* elem = DcmItem::newDicomElement(DCM_RecommendedDisplayCIELabValue);
   if (elem)
   {
     if (elem->putUint16(L, 0).good())
diff --git a/dcmwlm/apps/Makefile.in b/dcmwlm/apps/Makefile.in
index 9c3b944..491deb3 100644
--- a/dcmwlm/apps/Makefile.in
+++ b/dcmwlm/apps/Makefile.in
@@ -36,7 +36,7 @@ LOCALINCLUDES = $(dcmnetinc) $(dcmdatainc) $(ofloginc) $(ofstdinc)
 LIBDIRS = -L$(top_srcdir)/libsrc $(dcmnetlibdir) $(dcmdatalibdir) \
 	$(ofloglibdir) $(ofstdlibdir)
 LOCALLIBS = -ldcmwlm $(dcmnetlib) $(dcmdatalib) $(ofloglib) $(ofstdlib) \
-	$(ZLIBLIBS) $(TCPWRAPPERLIBS) $(ICONVLIBS)
+	$(ZLIBLIBS) $(TCPWRAPPERLIBS) $(CHARCONVLIBS)
 
 objs = wlcefs.o wlmscpfs.o
 progs = wlmscpfs
diff --git a/dcmwlm/docs/wlmscpfs.man b/dcmwlm/docs/wlmscpfs.man
index d609c0c..ad67a48 100644
--- a/dcmwlm/docs/wlmscpfs.man
+++ b/dcmwlm/docs/wlmscpfs.man
@@ -255,10 +255,13 @@ Currently, the \b wlmscpfs application supports the following attributes as
 matching keys:
 
 \verbatim
+(0008,0020) StudyDate
+(0008,0030) StudyTime
 (0008,0050) AccessionNumber
 (0008,0090) ReferringPhysicianName
 (0010,0010) PatientName
 (0010,0020) PatientID
+(0010,0021) IssuerOfPatientID
 (0010,0030) PatientBirthDate
 (0010,0040) PatientSex
 (0010,2297) Responsible Person
diff --git a/dcmwlm/include/dcmtk/dcmwlm/wlfsim.h b/dcmwlm/include/dcmtk/dcmwlm/wlfsim.h
index 649556d..c02a145 100644
--- a/dcmwlm/include/dcmtk/dcmwlm/wlfsim.h
+++ b/dcmwlm/include/dcmtk/dcmwlm/wlfsim.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2012, OFFIS e.V.
+ *  Copyright (C) 1996-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -154,6 +154,24 @@ class DCMTK_DCMWLM_EXPORT WlmFileSystemInteractionManager
     void DetermineMatchingKeyAttributeValues( DcmDataset *dataset, const char **&matchingKeyAttrValues );
 
       /** This function returns OFTrue if the dataset's and the search mask's values in
+       *  attribute issuer of patient id match; otherwise OFFalse will be returned.
+       *  @param datasetValue    Value for the corresponding attribute in the dataset; might be NULL.
+       *  @param searchMaskValue Value for the corresponding attribute in the search mask; never NULL.
+       *  @return OFTrue if the values match, OFFalse otherwise.
+       */
+    OFBool IssuerOfPatientIDsMatch( const char *datasetValue, const char *searchMaskValue );
+
+      /** This function returns OFTrue if the dataset's and the search mask's values in
+       *  attribute study date and study time match; otherwise OFFalse will be returned.
+       *  @param datasetDateValue    Value for the corresponding attribute in the dataset; might be NULL.
+       *  @param datasetTimeValue    Value for the corresponding attribute in the dataset; might be NULL.
+       *  @param searchMaskDateValue Value for the corresponding attribute in the search mask; might be NULL.
+       *  @param searchMaskTimeValue Value for the corresponding attribute in the search mask; might be NULL.
+       *  @return OFTrue if the values match, OFFalse otherwise.
+       */
+    OFBool StudyDateTimesMatch( const char *datasetDateValue, const char *datasetTimeValue, const char *searchMaskDateValue, const char *searchMaskTimeValue  );
+
+      /** This function returns OFTrue if the dataset's and the search mask's values in
        *  attribute scheduled station AE title match; otherwise OFFalse will be returned.
        *  @param datasetValue    Value for the corresponding attribute in the dataset; might be NULL.
        *  @param searchMaskValue Value for the corresponding attribute in the search mask; never NULL.
diff --git a/dcmwlm/include/dcmtk/dcmwlm/wltypdef.h b/dcmwlm/include/dcmtk/dcmwlm/wltypdef.h
index c79ad55..c60ed7f 100644
--- a/dcmwlm/include/dcmtk/dcmwlm/wltypdef.h
+++ b/dcmwlm/include/dcmtk/dcmwlm/wltypdef.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2014, OFFIS e.V.
+ *  Copyright (C) 1996-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -108,7 +108,7 @@ makeOFConditionConst(WLM_EC_DatabaseStatementConfigFilesNotExistent, OFM_dcmwlm,
 makeOFConditionConst(WLM_EC_CannotConnectToDataSource,               OFM_dcmwlm,  5, OF_error, "Cannot connect to data source.");
 
 /// number of currently supported matching key attributes
-#define NUMBER_OF_SUPPORTED_MATCHING_KEY_ATTRIBUTES 17
+#define NUMBER_OF_SUPPORTED_MATCHING_KEY_ATTRIBUTES 20
 
 /// structure for handling arbitrary types of superior sequences in query result datasets
 struct DCMTK_DCMWLM_EXPORT WlmSuperiorSequenceInfoType
diff --git a/dcmwlm/libsrc/Makefile.dep b/dcmwlm/libsrc/Makefile.dep
index 7675948..b6f71a5 100644
--- a/dcmwlm/libsrc/Makefile.dep
+++ b/dcmwlm/libsrc/Makefile.dep
@@ -228,6 +228,7 @@ wlfsim.o: wlfsim.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmatch.h \
  ../include/dcmtk/dcmwlm/wltypdef.h ../include/dcmtk/dcmwlm/wldefine.h \
  ../include/dcmtk/dcmwlm/wlds.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
diff --git a/dcmwlm/libsrc/wlds.cc b/dcmwlm/libsrc/wlds.cc
index c0c5ffe..24c3780 100644
--- a/dcmwlm/libsrc/wlds.cc
+++ b/dcmwlm/libsrc/wlds.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2014, OFFIS e.V.
+ *  Copyright (C) 1996-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -67,9 +67,9 @@ WlmDataSource::WlmDataSource()
 
   // Initialize member variables.
   identifiers = new DcmDataset();
-  offendingElements = new DcmAttributeTag( DCM_OffendingElement, 0 );
-  errorElements = new DcmAttributeTag( DCM_OffendingElement, 0 );
-  errorComment = new DcmLongString( DCM_ErrorComment, 0 );
+  offendingElements = new DcmAttributeTag( DCM_OffendingElement);
+  errorElements = new DcmAttributeTag( DCM_OffendingElement);
+  errorComment = new DcmLongString( DCM_ErrorComment);
 }
 
 // ----------------------------------------------------------------------------
@@ -630,6 +630,9 @@ OFBool WlmDataSource::CheckMatchingKey( const DcmElement *elem )
 //                   DCM_AdmissionID                                       (0038,0010)  LO  O  2
 //                   DCM_RequestedProcedurePriority                        (0040,1003)  SH  O  2
 //                   DCM_PatientBirthDate                                  (0010,0030)  DA  O  2
+//                   DCM_IssuerOfPatientID                                 (0010,0021)  LO  O  3
+//                   DCM_StudyDate                                         (0008,0020)  DA  O  3
+//                   DCM_StudyTime                                         (0008,0030)  TM  O  3
 //                As a result, the following data types have to be supported in this function:
 //                AE, DA, TM, CS, PN, LO and SH. For the correct specification of these datatypes
 //                2003 DICOM standard, part 5, section 6.2, table 6.2-1.
@@ -1181,6 +1184,9 @@ OFBool WlmDataSource::IsSupportedMatchingKeyAttribute( DcmElement *element, DcmS
 //                   DCM_AdmissionID                                       (0038,0010)  LO  O  2
 //                   DCM_RequestedProcedurePriority                        (0040,1003)  SH  O  2
 //                   DCM_PatientBirthDate                                  (0010,0030)  DA  O  2
+//                   DCM_IssuerOfPatientID                                 (0010,0021)  LO  O  3
+//                   DCM_StudyDate                                         (0008,0020)  DA  O  3
+//                   DCM_StudyTime                                         (0008,0030)  TM  O  3
 // Parameters   : element            - [in] Pointer to the element which shall be checked.
 //                supSequenceElement - [in] Pointer to the superordinate sequence element of which
 //                                     the currently processed element is an attribute, or NULL if
@@ -1218,6 +1224,9 @@ OFBool WlmDataSource::IsSupportedMatchingKeyAttribute( DcmElement *element, DcmS
         elementKey == DCM_ResponsiblePerson              ||
         elementKey == DCM_ResponsiblePersonRole          ||
         elementKey == DCM_PatientID                      ||
+        elementKey == DCM_IssuerOfPatientID              ||
+        elementKey == DCM_StudyDate                      ||
+        elementKey == DCM_StudyTime                      ||
         elementKey == DCM_AccessionNumber                ||
         elementKey == DCM_RequestedProcedureID           ||
         elementKey == DCM_ReferringPhysicianName         ||
diff --git a/dcmwlm/libsrc/wldsfs.cc b/dcmwlm/libsrc/wldsfs.cc
index 5247f5f..ae724e6 100644
--- a/dcmwlm/libsrc/wldsfs.cc
+++ b/dcmwlm/libsrc/wldsfs.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2013, OFFIS e.V.
+ *  Copyright (C) 1996-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -262,9 +262,9 @@ WlmDataSourceStatusType WlmDataSourceFileSystem::StartFindRequest( const DcmData
   delete offendingElements;
   delete errorElements;
   delete errorComment;
-  offendingElements = new DcmAttributeTag( DCM_OffendingElement, 0 );
-  errorElements = new DcmAttributeTag( DCM_OffendingElement, 0 );
-  errorComment = new DcmLongString( DCM_ErrorComment, 0 );
+  offendingElements = new DcmAttributeTag( DCM_OffendingElement);
+  errorElements = new DcmAttributeTag( DCM_OffendingElement);
+  errorComment = new DcmLongString( DCM_ErrorComment);
 
   // Initialize member variable identifiers; this variable will contain the search mask.
   ClearDataset( identifiers );
diff --git a/dcmwlm/libsrc/wlfsim.cc b/dcmwlm/libsrc/wlfsim.cc
index 92aa07f..3f165ad 100644
--- a/dcmwlm/libsrc/wlfsim.cc
+++ b/dcmwlm/libsrc/wlfsim.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2013, OFFIS e.V.
+ *  Copyright (C) 1996-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,6 +49,7 @@ END_EXTERN_C
 #include "dcmtk/dcmdata/dcitem.h"
 #include "dcmtk/dcmdata/dcvrda.h"
 #include "dcmtk/dcmdata/dcvrtm.h"
+#include "dcmtk/dcmdata/dcmatch.h"
 #include "dcmtk/dcmwlm/wltypdef.h"
 #include "dcmtk/dcmwlm/wlds.h"
 #include "dcmtk/dcmdata/dctk.h"
@@ -783,6 +784,7 @@ OFBool WlmFileSystemInteractionManager::DatasetMatchesSearchMask( DcmDataset *da
 //                OFFalse - The dataset does not match the search mask in the matching key attribute values.
 {
   OFBool dateTimeMatchHasBeenPerformed = OFFalse;
+  OFBool studyDateTimeMatchHasBeenPerformed = OFFalse;
 
   // initialize result variable
   OFBool matchFound = OFTrue;
@@ -891,6 +893,22 @@ OFBool WlmFileSystemInteractionManager::DatasetMatchesSearchMask( DcmDataset *da
           matchFound = PatientsBirthDatesMatch( mkaValuesDataset[16], mkaValuesSearchMask[16] );
           break;
 
+        case 17:
+          // matching key attribute is DCM_IssuerOfPatientID (LO, 1)
+          matchFound = IssuerOfPatientIDsMatch( mkaValuesDataset[17], mkaValuesSearchMask[17] );
+          break;
+
+        case 18:
+        case 19:
+          // matching key attributes are  DCM_StudyDate (DA, 1) and DCM_StudyTime (TM, 1)
+          // only do something if a date time match has not yet been performed
+          if( !studyDateTimeMatchHasBeenPerformed )
+          {
+            matchFound = StudyDateTimesMatch( mkaValuesDataset[18], mkaValuesDataset[19], mkaValuesSearchMask[18], mkaValuesSearchMask[19] );
+            studyDateTimeMatchHasBeenPerformed = OFTrue;
+          }
+          break;
+
         default:
           break;
       }
@@ -947,6 +965,9 @@ void WlmFileSystemInteractionManager::DetermineMatchingKeyAttributeValues( DcmDa
       case 14 : tag = DCM_AdmissionID                      ; break;
       case 15 : tag = DCM_RequestedProcedurePriority       ; break;
       case 16 : tag = DCM_PatientBirthDate                 ; break;
+      case 17 : tag = DCM_IssuerOfPatientID                ; break;
+      case 18 : tag = DCM_StudyDate                        ; break;
+      case 19 : tag = DCM_StudyTime                        ; break;
       default:                                               break;
     }
 
@@ -1050,6 +1071,51 @@ OFBool WlmFileSystemInteractionManager::WildcardStripSpacesMatch( const char *da
 
 // ----------------------------------------------------------------------------
 
+OFBool WlmFileSystemInteractionManager::IssuerOfPatientIDsMatch( const char *datasetValue, const char *searchMaskValue )
+// Date         : January 23, 2017
+// Author       : Thorben Hasenpusch
+// Task         : This function returns OFTrue if the dataset's and the search mask's values in
+//                attribute issuer of patient id match; otherwise OFFalse will be returned.
+// Parameters   : datasetValue    - [in] Value for the corresponding attribute in the dataset; might be NULL.
+//                searchMaskValue - [in] Value for the corresponding attribute in the search mask; never NULL.
+// Return Value : OFTrue if the values match, OFFalse otherwise.
+{
+  return WildcardStripSpacesMatch( datasetValue, searchMaskValue );
+}
+
+OFBool WlmFileSystemInteractionManager::StudyDateTimesMatch( const char *datasetDateValue, const char *datasetTimeValue, const char *searchMaskDateValue, const char *searchMaskTimeValue )
+// Date         : Februar 27, 2017
+// Author       : Jan Schlamelcher
+// Task         : This function returns OFTrue if the dataset's and the search mask's values in
+//                attribute study date and study time match; otherwise OFFalse will be returned.
+// Parameters   : datasetDateValue    - [in] Value for the corresponding attribute in the dataset; might be NULL.
+//                datasetTimeValue    - [in] Value for the corresponding attribute in the dataset; might be NULL.
+//                searchMaskDateValue - [in] Value for the corresponding attribute in the search mask; might be NULL.
+//                searchMaskTimeValue - [in] Value for the corresponding attribute in the search mask; might be NULL.
+// Return Value : OFTrue if the values match, OFFalse otherwise.
+{
+  if( !datasetDateValue )
+    datasetDateValue = "";
+  if( !datasetTimeValue )
+    datasetTimeValue = "";
+  if( !searchMaskDateValue )
+    searchMaskDateValue = "";
+  if( !searchMaskTimeValue )
+    searchMaskTimeValue = "";
+  const char* datasetDateValueEnd = datasetDateValue + strlen( datasetDateValue );
+  const char* datasetTimeValueEnd = datasetTimeValue + strlen( datasetTimeValue );
+  const char* searchMaskDateValueEnd = searchMaskDateValue + strlen( searchMaskDateValue );
+  const char* searchMaskTimeValueEnd = searchMaskTimeValue + strlen( searchMaskTimeValue );
+  OFStandard::trimString( datasetDateValue, datasetDateValueEnd );
+  OFStandard::trimString( datasetTimeValue, datasetTimeValueEnd );
+  OFStandard::trimString( searchMaskDateValue, searchMaskDateValueEnd );
+  OFStandard::trimString( searchMaskTimeValue, searchMaskTimeValueEnd );
+  return DcmAttributeMatching::rangeMatchingDateTime( datasetDateValue, datasetDateValueEnd - datasetDateValue,
+                                                      datasetTimeValue, datasetTimeValueEnd - datasetTimeValue,
+                                                      searchMaskDateValue, searchMaskDateValueEnd - searchMaskDateValue,
+                                                      searchMaskTimeValue, searchMaskTimeValueEnd - searchMaskTimeValue );
+}
+
 OFBool WlmFileSystemInteractionManager::ScheduledStationAETitlesMatch( const char *datasetValue, const char *searchMaskValue )
 // Date         : July 12, 2002
 // Author       : Thomas Wilkens
diff --git a/dcmwlm/libsrc/wlmactmg.cc b/dcmwlm/libsrc/wlmactmg.cc
index 8f04b03..351ccb8 100644
--- a/dcmwlm/libsrc/wlmactmg.cc
+++ b/dcmwlm/libsrc/wlmactmg.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2014, OFFIS e.V.
+ *  Copyright (C) 1996-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -55,7 +55,7 @@ static void FindCallback( void *callbackData, OFBool cancelled, T_DIMSE_C_FindRQ
 //                search mask that was passed. In certain circumstances, the selected information
 //                will be dumped to stdout.
 // Parameters   : callbackData        - [in] data for this callback function
-//                cancelled           - [in] Specifies if we encounteres a C-CANCEL-RQ. In such a case
+//                cancelled           - [in] Specifies if we encountered a C-CANCEL-RQ. In such a case
 //                                      the search shall be cancelled.
 //                request             - [in] The original C-FIND-RQ message.
 //                requestIdentifiers  - [in] Contains the search mask.
@@ -217,11 +217,11 @@ OFCondition WlmActivityManager::StartProvidingService()
 
     // read socket handle number from stdin, i.e. the anonymous pipe
     // to which our parent process has written the handle number.
-    if (ReadFile(hStdIn, buf, sizeof(buf), &bytesRead, NULL))
+    if (ReadFile(hStdIn, buf, sizeof(buf) - 1, &bytesRead, NULL))
     {
       // make sure buffer is zero terminated
       buf[bytesRead] = '\0';
-        dcmExternalSocketHandle.set(atoi(buf));
+      dcmExternalSocketHandle.set(atoi(buf));
     }
     else
     {
@@ -285,7 +285,7 @@ OFCondition WlmActivityManager::StartProvidingService()
 void WlmActivityManager::RefuseAssociation( T_ASC_Association **assoc, WlmRefuseReasonType reason )
 // Date         : December 10, 2001
 // Author       : Thomas Wilkens
-// Task         : This function takes care of refusing an assocation request.
+// Task         : This function takes care of refusing an association request.
 // Parameters   : assoc  - [in] The association (network connection to another DICOM application).
 //                reason - [in] The reason why the association request will be refused.
 // Return Value : none.
@@ -353,7 +353,7 @@ OFCondition WlmActivityManager::WaitForAssociation( T_ASC_Network * net )
 // Author       : Thomas Wilkens
 // Task         : This function takes care of receiving, negotiating and accepting/refusing an
 //                association request. Additionally, it handles the request the association
-//                requesting application transmits after a connection isd established.
+//                requesting application transmits after a connection is established.
 // Parameters   : net - [in] Contains network parameters.
 // Return Value : Indicator which shows if function was executed successfully.
 {
@@ -377,7 +377,7 @@ OFCondition WlmActivityManager::WaitForAssociation( T_ASC_Network * net )
   // Listen to a socket for timeout seconds and wait for an association request.
   OFCondition cond = ASC_receiveAssociation( net, &assoc, opt_maxPDU, NULL, NULL, OFFalse, DUL_NOBLOCK, timeout );
 
-  // just return, if timeout occured (DUL_NOASSOCIATIONREQUEST)
+  // just return, if timeout occurred (DUL_NOASSOCIATIONREQUEST)
   // or (WIN32) if dcmnet has started a child for us, to handle this
   // association (signaled by "DULC_FORKEDCHILD") -> return to "event loop"
   if ( ( cond.code() == DULC_FORKEDCHILD ) || ( cond == DUL_NOASSOCIATIONREQUEST ) )
@@ -456,7 +456,7 @@ OFCondition WlmActivityManager::WaitForAssociation( T_ASC_Network * net )
   }
 
   // Condition 5: if the called application entity title is not supported
-  // whithin the data source we want to refuse the association request
+  // within the data source we want to refuse the association request
   dataSource->SetCalledApplicationEntityTitle( assoc->params->DULparams.calledAPTitle );
   if( !dataSource->IsCalledApplicationEntityTitleSupported() )
   {
@@ -538,7 +538,7 @@ OFCondition WlmActivityManager::WaitForAssociation( T_ASC_Network * net )
     else if( pid > 0 )
     {
       // Fork returns a positive process id if this is the parent process.
-      // If this is the case, remeber the process in a table and go ahead.
+      // If this is the case, remember the process in a table and go ahead.
       AddProcessToTable( pid, assoc );
 
       // the child will handle the association, we can drop it
@@ -566,7 +566,7 @@ OFCondition WlmActivityManager::NegotiateAssociation( T_ASC_Association *assoc )
 // Date         : December 10, 2001
 // Author       : Thomas Wilkens
 // Task         : This function negotiates a presentation context which will be used by this application
-//                and the other DICOM appliation that requests an association.
+//                and the other DICOM application that requests an association.
 // Parameters   : assoc - [in] The association (network connection to another DICOM application).
 // Return Value : OFCondition value denoting success or error.
 {
@@ -779,7 +779,7 @@ struct WlmFindContextType
 OFCondition WlmActivityManager::HandleFindSCP( T_ASC_Association *assoc, T_DIMSE_C_FindRQ *request, T_ASC_PresentationContextID presID )
 // Date         : December 10, 2001
 // Author       : Thomas Wilkens
-// Task         : This function processes a DIMSE C-FIND-RQ commmand that was
+// Task         : This function processes a DIMSE C-FIND-RQ command that was
 //                received over the network connection.
 // Parameters   : assoc    - [in] The association (network connection to another DICOM application).
 //                request  - [in] The DIMSE C-FIND-RQ message that was received.
@@ -800,7 +800,7 @@ OFCondition WlmActivityManager::HandleFindSCP( T_ASC_Association *assoc, T_DIMSE
 
   // Handle a C-FIND-Request on the provider side: receive the data set that represents the search mask
   // over the network, try to select corresponding records that match the search mask from some data source
-  // (this is done whithin the callback function FindCallback() that will be passed) and send corresponding
+  // (this is done within the callback function FindCallback() that will be passed) and send corresponding
   // C-FIND-RSP messages to the other DICOM application this application is connected with. In the end,
   // also send the C-FIND-RSP message that indicates that there are no more search results.
   OFCondition cond = DIMSE_findProvider( assoc, presID, request, FindCallback, &context, opt_blockMode, opt_dimse_timeout );
@@ -1038,7 +1038,7 @@ static void FindCallback( void *callbackData, OFBool cancelled, T_DIMSE_C_FindRQ
 //                search mask that was passed. In certain circumstances, the selected information
 //                will be dumped to stdout.
 // Parameters   : callbackData        - [in] data for this callback function
-//                cancelled           - [in] Specifies if we encounteres a C-CANCEL-RQ. In such a case
+//                cancelled           - [in] Specifies if we encountered a C-CANCEL-RQ. In such a case
 //                                      the search shall be cancelled.
 //                request             - [in] The original C-FIND-RQ message.
 //                requestIdentifiers  - [in] Contains the search mask.
diff --git a/dcmwlm/tests/Makefile.in b/dcmwlm/tests/Makefile.in
index cb242e1..a73d088 100644
--- a/dcmwlm/tests/Makefile.in
+++ b/dcmwlm/tests/Makefile.in
@@ -22,7 +22,7 @@ LOCALINCLUDES = -I$(dcmnetdir)/include -I$(dcmdatadir)/include \
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(dcmnetdir)/libsrc -L$(dcmdatadir)/libsrc \
 	-L$(oflogdir)/libsrc -L$(ofstddir)/libsrc
 LOCALLIBS = -ldcmwlm -ldcmnet -ldcmdata -loflog -lofstd $(ZLIBLIBS) \
-	$(TCPWRAPPERLIBS) $(ICONVLIBS)
+	$(TCPWRAPPERLIBS) $(CHARCONVLIBS)
 
 objs = wltest.o
 progs = wltest
diff --git a/dcmwlm/tests/wltest.cc b/dcmwlm/tests/wltest.cc
index 78dd7b6..f737b47 100644
--- a/dcmwlm/tests/wltest.cc
+++ b/dcmwlm/tests/wltest.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2011, OFFIS e.V.
+ *  Copyright (C) 1996-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -109,7 +109,7 @@ addOverrideKey(DcmDataset& overrideKeys, char* s)
         errmsg("unknown tag: (%04x,%04x)", g, e);
         usage();
     }
-    DcmElement *elem = newDicomElement(tag);
+    DcmElement *elem = DcmItem::newDicomElement(tag);
     if (elem == NULL) {
         errmsg("cannot create element for tag: (%04x,%04x)", g, e);
         usage();
diff --git a/docs/CHANGES.361 b/docs/CHANGES.361
index 2d05cde..3c6f4be 100644
--- a/docs/CHANGES.361
+++ b/docs/CHANGES.361
@@ -1,6 +1,4318 @@
 
 Changes between releases are documented here.
 
+**** Changes from 2017.02.28 (schlamelcher)
+
+- Updated CHANGES.361 for new development snapshot.
+  Affects: docs/CHANGES.361
+
+- Updated DCMTK_ABI_VERSION for new development snapshot.
+  Affects: CMake/dcmtkPrepare.cmake
+
+- Updated man pages for new development snapshot.
+  Affects: doxygen/manpages/man1/dcm2json.1
+           doxygen/manpages/man1/dcm2pdf.1
+           doxygen/manpages/man1/dcm2pnm.1
+           doxygen/manpages/man1/dcm2xml.1
+           doxygen/manpages/man1/dcmcjpeg.1
+           doxygen/manpages/man1/dcmcjpls.1
+           doxygen/manpages/man1/dcmconv.1
+           doxygen/manpages/man1/dcmcrle.1
+           doxygen/manpages/man1/dcmdjpeg.1
+           doxygen/manpages/man1/dcmdjpls.1
+           doxygen/manpages/man1/dcmdrle.1
+           doxygen/manpages/man1/dcmdspfn.1
+           doxygen/manpages/man1/dcmdump.1
+           doxygen/manpages/man1/dcmftest.1
+           doxygen/manpages/man1/dcmgpdir.1
+           doxygen/manpages/man1/dcmj2pnm.1
+           doxygen/manpages/man1/dcml2pnm.1
+           doxygen/manpages/man1/dcmmkcrv.1
+           doxygen/manpages/man1/dcmmkdir.1
+           doxygen/manpages/man1/dcmmklut.1
+           doxygen/manpages/man1/dcmodify.1
+           doxygen/manpages/man1/dcmp2pgm.1
+           doxygen/manpages/man1/dcmprscp.1
+           doxygen/manpages/man1/dcmprscu.1
+           doxygen/manpages/man1/dcmpschk.1
+           doxygen/manpages/man1/dcmpsmk.1
+           doxygen/manpages/man1/dcmpsprt.1
+           doxygen/manpages/man1/dcmpsrcv.1
+           doxygen/manpages/man1/dcmpssnd.1
+           doxygen/manpages/man1/dcmqridx.1
+           doxygen/manpages/man1/dcmqrscp.1
+           doxygen/manpages/man1/dcmqrti.1
+           doxygen/manpages/man1/dcmquant.1
+           doxygen/manpages/man1/dcmrecv.1
+           doxygen/manpages/man1/dcmscale.1
+           doxygen/manpages/man1/dcmsend.1
+           doxygen/manpages/man1/dcmsign.1
+           doxygen/manpages/man1/dcod2lum.1
+           doxygen/manpages/man1/dconvlum.1
+           doxygen/manpages/man1/drtdump.1
+           doxygen/manpages/man1/dsr2html.1
+           doxygen/manpages/man1/dsr2xml.1
+           doxygen/manpages/man1/dsrdump.1
+           doxygen/manpages/man1/dump2dcm.1
+           doxygen/manpages/man1/echoscu.1
+           doxygen/manpages/man1/findscu.1
+           doxygen/manpages/man1/getscu.1
+           doxygen/manpages/man1/img2dcm.1
+           doxygen/manpages/man1/movescu.1
+           doxygen/manpages/man1/pdf2dcm.1
+           doxygen/manpages/man1/storescp.1
+           doxygen/manpages/man1/storescu.1
+           doxygen/manpages/man1/termscu.1
+           doxygen/manpages/man1/wlmscpfs.1
+           doxygen/manpages/man1/xml2dcm.1
+           doxygen/manpages/man1/xml2dsr.1
+
+- Updated Makefile dependencies.
+  Affects: dcmdata/libi2d/Makefile.dep
+           dcmdata/libsrc/Makefile.dep
+           dcmdata/tests/Makefile.dep
+           dcmpstat/apps/Makefile.dep
+           dcmpstat/libsrc/Makefile.dep
+           dcmqrdb/apps/Makefile.dep
+           dcmqrdb/libsrc/Makefile.dep
+           dcmwlm/libsrc/Makefile.dep
+           ofstd/libsrc/Makefile.dep
+
+- Fixed formatting errors in dcmqrscp's man page.
+  Affects: dcmqrdb/docs/dcmqrscp.man
+
+- Documented dcmqrdb's new character set features.
+  Affects: dcmqrdb/docs/dcmqrcnf.txt
+           dcmqrdb/docs/dcmqrscp.man
+           dcmqrdb/etc/dcmqrscp.cfg
+
+- Fixed digits10 not being a compile time constant:
+  Fixed OFnumeric_limits::digits10 and OFnumeric_limits::max_digits10 not being
+  compile time constants due to a previous lazy fix for building with GCC
+  '-pedantic'.
+  Removed: ofstd/libsrc/oflimits.cc
+  Affects: config/arith.cc
+           ofstd/include/dcmtk/ofstd/oflimits.h
+           ofstd/libsrc/CMakeLists.txt
+           ofstd/libsrc/Makefile.in
+
+- Fixed Visual Studio linker problem with DLLs:
+  Visual Studio got confused by DcmQueryRetrieveCharacterSetOptions being
+  forward declared as a class while defined as a struct, which prevented it from
+  linking the functions using it from DLLs correctly.
+  Affects: dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h
+
+**** Changes from 2017.02.28 (riesmeier)
+
+- Further fixes to API documentation:
+  Further fixes to API documentation, mainly for reasons of consistency.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvrda.h
+           dcmdata/include/dcmtk/dcmdata/dcvrdt.h
+           dcmdata/include/dcmtk/dcmdata/dcvrtm.h
+
+- Updated documentation of getOFTimeFromString():
+  Made sure that the documentation of getOFTimeFromString() is again
+  consistent with the implementation (after the latter changed recently
+  with commit 255ecc7).
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvrtm.h
+
+- Updated documentation of getOFDateTimeFromString():
+  Made sure that the documentation of getOFDateTimeFromString() is again
+  consistent with the implementation (after the latter changed recently
+  with commit 255ecc7).
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvrdt.h
+
+- Removed documentation of macro STRICT_COMPARE:
+  Removed documentation of macro STRICT_COMPARE since it is no longer used
+  in the "dcmqrdb" module (as a result of the recent commit 4560c0a).
+  Affects: config/docs/macros.txt
+
+**** Changes from 2017.02.28 (schlamelcher)
+
+- Fixed wrong value range check in extractDigits():
+  OFStandard::extractDigits() used the wrong member of OFnumeric_limits to check
+  whether the given type could hold the requested number of digits (base two
+  digits instead of base 10).
+  Affects: ofstd/include/dcmtk/ofstd/ofstd.h
+
+- Workaround for clang non-type template argument issue:
+  Workaround for clang not wanting to interpret a size_t non-type template
+  argument as a boolean expression (!= 0) when C++11 support was enabled.
+  Affects: ofstd/include/dcmtk/ofstd/ofstd.h
+
+**** Changes from 2017.02.27 (schlamelcher)
+
+- Fixed Q/R matching on failed character set conversion:
+  Added error handling for the on the fly character set conversion during
+  attribute matching in dcmqrdb. The dcmqrdb library will now use the original
+  value if character set conversion fails, instead of the empty value that
+  caused Universal Matching behavior inappropriately.
+  Affects: dcmqrdb/libsrc/dcmqrdbi.cc
+
+- Added support for Issuer of Patient ID to dcmqrdb.
+  Affects: dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h
+           dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h
+           dcmqrdb/libsrc/dcmqrdbi.cc
+
+- Added support for additional Matching Keys:
+  Added support for the following attributes:
+  Issuer of Patient ID (0010,0021)
+  Study Date           (0008,0020)
+  Study Time           (0008,0030)
+  Affects: dcmwlm/docs/wlmscpfs.man
+           dcmwlm/include/dcmtk/dcmwlm/wlfsim.h
+           dcmwlm/include/dcmtk/dcmwlm/wltypdef.h
+           dcmwlm/libsrc/wlds.cc
+           dcmwlm/libsrc/wlfsim.cc
+
+- Moved dcmqrdb's trimString() function to OFStandard:
+  Moved dcmqrdb's trimString() function to OFStandard since other code might
+  also need it (e.g. dcmwlm).
+  Affects: dcmqrdb/libsrc/dcmqrdbi.cc
+           ofstd/include/dcmtk/ofstd/ofstd.h
+           ofstd/libsrc/ofstd.cc
+
+- Fixed date time parsing regarding time zones:
+  Fixed a bug in DcmDateTime::getOFDateTimeFromString() that did not allow
+  parsing time zone information from date time values that did not contain a
+  time value (e.g. 2017+0100).
+  Affects: dcmdata/libsrc/dcvrdt.cc
+
+- Added character set conversion support to dcmqrdb:
+  The dcmqrdb library now supports on the fly character set conversion for
+  attribute matching and converting the find response to the requested character
+  set.
+  The matching has been refactored to use DcmAttributeMatching internally.
+  Increased the size of attributes that are affected by Specific Character Set
+  in the index file so that values using multi byte encodings may still fit.
+  Affects: dcmqrdb/apps/dcmqrscp.cc
+           dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcbf.h
+           dcmqrdb/include/dcmtk/dcmqrdb/dcmqrcnf.h
+           dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdba.h
+           dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h
+           dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h
+           dcmqrdb/include/dcmtk/dcmqrdb/dcmqrtis.h
+           dcmqrdb/libsrc/dcmqrcbf.cc
+           dcmqrdb/libsrc/dcmqrcnf.cc
+           dcmqrdb/libsrc/dcmqrdbi.cc
+           dcmqrdb/libsrc/dcmqrsrv.cc
+           dcmqrdb/libsrc/dcmqrtis.cc
+
+**** Changes from 2017.02.26 (riesmeier)
+
+- Fixed typo, tab character and trailing space.
+  Affects: ofstd/include/dcmtk/ofstd/oflist.h
+
+**** Changes from 2017.02.26 (eichelberg)
+
+- Fixed minor integer over/undeflows reported by clang:
+  Fixed a few harmless integer overflows and underflows reported
+  by clang when compiled with -fsanitize=integer.
+  Affects: dcmdata/libi2d/i2dbmps.cc
+           dcmdata/libsrc/dcswap.cc
+           ofstd/include/dcmtk/ofstd/oflist.h
+           ofstd/libsrc/offname.cc
+
+**** Changes from 2017.02.24 (schlamelcher)
+
+- Introduced DcmAttributeMatching:
+  DcmAttributeMatching implements the different attribute matching functions
+  defined in the DICOM standard for Query/Retrieve and Worklist queries.
+  DcmAttributeMatching may either be used by explicitly calling one of its
+  static member matching functions or by creating an DcmAttributeMatching
+  object for a specific VR.
+  Added:   dcmdata/include/dcmtk/dcmdata/dcmatch.h
+           dcmdata/libsrc/dcmatch.cc
+           dcmdata/tests/tmatch.cc
+  Affects: dcmdata/libsrc/CMakeLists.txt
+           dcmdata/libsrc/Makefile.in
+           dcmdata/tests/CMakeLists.txt
+           dcmdata/tests/Makefile.in
+           dcmdata/tests/tests.cc
+           ofstd/include/dcmtk/ofstd/ofdatime.h
+
+**** Changes from 2017.02.24 (riesmeier)
+
+- Added parentheses around boolean operations:
+  Added parentheses around boolean operations (i.e. comparisons) in order
+  to be consistent with the rest of the source file.
+  Affects: ofstd/libsrc/ofdatime.cc
+
+- Added trailing "." after first sentence (Doxygen):
+  This trailing "." is required since the "first sentence" is used as a brief
+  description by Doxygen (e.g. when generating HTML output).
+  Affects: ofstd/include/dcmtk/ofstd/ofdatime.h
+
+- Updated copyright date after previous commit.
+  Affects: ofstd/include/dcmtk/ofstd/ofdate.h
+           ofstd/include/dcmtk/ofstd/ofdatime.h
+           ofstd/libsrc/ofdatime.cc
+
+**** Changes from 2017.02.24 (schlamelcher)
+
+- Refactored string to date and time conversion:
+  Refactored DcmDate, DcmTime and DcmDateTime string parser functions to work
+  on character string + size input in addition to the existing functions that
+  work on OFStrings. The new functions do not require the strings to be zero
+  terminated and are therefore composable.
+  DcmDateTime::getOFDateTimeFromString is now implemented based on
+  DcmTime::getOFTimeFromString, which is now possible since the functions
+  can now be used on substrings without unnecessary copies.
+  Default parameters have been replaced by respective overloads to provide
+  a consistent API in all three classes (all now have a function that takes
+  no additional parameters to the string and the result).
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvrda.h
+           dcmdata/include/dcmtk/dcmdata/dcvrdt.h
+           dcmdata/include/dcmtk/dcmdata/dcvrtm.h
+           dcmdata/libsrc/dcvrda.cc
+           dcmdata/libsrc/dcvrdt.cc
+           dcmdata/libsrc/dcvrtm.cc
+           ofstd/include/dcmtk/ofstd/ofdatime.h
+
+- Added string to number helper functions:
+  Added helper functions for extracting fixed length unsigned integer numbers
+  from character strings that do not require the strings to be zero terminated.
+  Affects: ofstd/include/dcmtk/ofstd/ofstd.h
+
+- Added comparison operators for OFDateTime:
+  Added less, greater, less or equal and greater or equal comparison operators
+  to OFDateTime.
+  Affects: ofstd/include/dcmtk/ofstd/ofdate.h
+           ofstd/include/dcmtk/ofstd/ofdatime.h
+           ofstd/libsrc/ofdatime.cc
+           ofstd/tests/tofdatim.cc
+
+**** Changes from 2017.02.22 (onken)
+
+- Added error message when writing sequences.
+  Affects: dcmiod/include/dcmtk/dcmiod/iodutil.h
+
+**** Changes from 2017.02.21 (riesmeier)
+
+- Various documentation fixes to newDicomElement():
+  Fixed typos, wrong descriptions, parameters and line breaks in the API
+  documentation of the newDicomElement() functions.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcitem.h
+
+**** Changes from 2017.02.17 (eichelberg)
+
+- Fixed DJDecoderRegistration::registerCodecs():
+  Fixed parameter list of DJDecoderRegistration::registerCodecs(),
+  which contained one superfluous parameter.
+  Affects: dcmjpeg/include/dcmtk/dcmjpeg/djdecode.h
+           dcmjpeg/libsrc/djdecode.cc
+
+**** Changes from 2017.02.15 (riesmeier)
+
+- Enhanced logging in case of error:
+  Enhanced output to the logger in case of fatal errors, e.g. if the DICOMDIR
+  file to be updated is invalid/corrupted.
+  Affects: dcmdata/apps/dcmgpdir.cc
+
+- Fixed crash while processing an invalid DICOMDIR:
+  Fixed a crash that could occur while processing an invalid DICOMDIR file,
+  e.g. when a single Directory Record was referenced more than once and,
+  therefore, deleted more than once (from the DcmDicomDir destructor). Now,
+  an error is both reported to the logger and returned to the caller.
+  The main changes were done to DcmDicomDir::moveRecordToTree(). Additionally,
+  slightly enhanced comments on other functions and improved the logger output.
+  Thanks to forum user "psih128" for the report and for the sample file.
+  Closes DCMTK Bug #388.
+  Affects: dcmdata/libsrc/dcdicdir.cc
+
+**** Changes from 2017.02.14 (grallert)
+
+- Fixed and enhanced documentation of JSON functions:
+  Removed leading '*' characters between @code{.cpp} and @endcode sections
+  within doxygen markup.
+  Further enhanced the documentation of DcmJsonFormat.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcjson.h
+
+**** Changes from 2017.02.10 (onken)
+
+- Fixed missing assignment from last commit:
+  Enhanced intendation.
+  Affects: dcmdata/libsrc/dcitem.cc
+
+- Hide public element constructors setting length:
+  DCMTK's VR classes allowed to construct new DICOM elements by tag and a
+  given length value. Internally the length is set, however, no related memory
+  is allocated. This is the desired behaviour when reading new DICOM datasets
+  since after creation of the element with a specific length after reading tag
+  and length from the stream, the value is read and set on the element right
+  afterwards.
+  However, if such an element is created manually by a user who tries afterwards
+  to access (read or write) a value to that element, a crash can occur since
+  the element itself expects to have memory allocated up to the given length.
+  In order to fix this, the related VR classes' constructors have been removed
+  from the public interface and have been made protected. So far, only DcmItem
+  and partly DcmDirectoryRecord (as "parsing" classes constructing elements in
+  the valid way described above) need direct access to those constructors and
+  thus have been amended by related friend declarations.
+  The global functions newDicomElement(...) that use those constructors directly
+  or indirectly have been moved into DcmItem as static methods. The ones that
+  can be used publicly (those only taking tag and not length), are made public
+  while the only one taking length (and other parsing parameters) is protected
+  and is only used by DcmItem or safely from within other public methods.
+  An alternative approach would have been to change the parsing behaviour
+  that constructs element with explicit length first, in order to fill them
+  with a value in the second step. Instead, onld could construct with 0
+  length and only set the length when actually setting the value. This
+  would make the explicit length constructors superfluous.
+  However, since the parser's internals are quite complicated regarding
+  length handling, it was not touched for now. However, the work done may make
+  it easier to change the parser accordingly later.
+  Another approach would be to always allocate memory in the constructors.
+  However this will lead often to double initializations since most methods
+  that set a value in a subsequent call will delete that memory to allocate
+  the value newly a second time. Also, the possibility to create elements with
+  an explicit empty value of a specific length is of limited use: For number-
+  based VRs this can easily be imitated by calling the related set() method
+  afterwards, while for strings it is not even clear what an empty value
+  of a specifc length might be.
+  Thanks to forum user spasmous <spasmous at gmail.com> for the report.
+  This fixes DCMTK bug #374.
+  Affects: dcmdata/apps/dump2dcm.cc
+           dcmdata/apps/xml2dcm.cc
+           dcmdata/include/dcmtk/dcmdata/dcbytstr.h
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/include/dcmtk/dcmdata/dcpixseq.h
+           dcmdata/include/dcmtk/dcmdata/dcsequen.h
+           dcmdata/include/dcmtk/dcmdata/dcvrat.h
+           dcmdata/include/dcmtk/dcmdata/dcvrfd.h
+           dcmdata/include/dcmtk/dcmdata/dcvrfl.h
+           dcmdata/include/dcmtk/dcmdata/dcvrobow.h
+           dcmdata/include/dcmtk/dcmdata/dcvrol.h
+           dcmdata/include/dcmtk/dcmdata/dcvrsl.h
+           dcmdata/include/dcmtk/dcmdata/dcvrss.h
+           dcmdata/include/dcmtk/dcmdata/dcvrul.h
+           dcmdata/include/dcmtk/dcmdata/dcvrulup.h
+           dcmdata/include/dcmtk/dcmdata/dcvrus.h
+           dcmdata/include/dcmtk/dcmdata/libi2d/i2doutpl.h
+           dcmdata/libi2d/i2d.cc
+           dcmdata/libsrc/dcbytstr.cc
+           dcmdata/libsrc/dcitem.cc
+           dcmdata/libsrc/dcpath.cc
+           dcmdata/libsrc/dcpixseq.cc
+           dcmdata/libsrc/dcsequen.cc
+           dcmdata/libsrc/dcvrat.cc
+           dcmdata/libsrc/dcvrfd.cc
+           dcmdata/libsrc/dcvrfl.cc
+           dcmdata/libsrc/dcvrobow.cc
+           dcmdata/libsrc/dcvrol.cc
+           dcmdata/libsrc/dcvrsl.cc
+           dcmdata/libsrc/dcvrss.cc
+           dcmdata/libsrc/dcvrul.cc
+           dcmdata/libsrc/dcvrulup.cc
+           dcmdata/libsrc/dcvrus.cc
+           dcmiod/libsrc/iodutil.cc
+           dcmiod/libsrc/modbase.cc
+           dcmiod/libsrc/modenhusimage.cc
+           dcmiod/libsrc/modmultiframedimension.cc
+           dcmiod/libsrc/modusfor.cc
+           dcmnet/apps/movescu.cc
+           dcmnet/libsrc/dimcmd.cc
+           dcmnet/libsrc/diutil.cc
+           dcmqrdb/libsrc/dcmqrdbi.cc
+           dcmtract/libsrc/trctrackset.cc
+           dcmwlm/libsrc/wlds.cc
+           dcmwlm/libsrc/wldsfs.cc
+           dcmwlm/tests/wltest.cc
+
+**** Changes from 2017.02.08 (riesmeier)
+
+- Added two missing SOP Classes to modality table:
+  Added two missing non-patient Storage SOP Classes to the modality table,
+  which e.g. maps a known UID to a short character code ("modality") that
+  can be used to generate a meaningful filename prefix. That way, a storage
+  receiver of a Color Palette Storage object will generate a filename
+  starting with "CP." instead of "UNKNOWN." (which is the default in case
+  of an unknown UID).
+  Affects: dcmdata/libsrc/dcuid.cc
+
+- Fixed name numberOfAllDcmStorageSOPClassUIDs:
+  Fixed inconsistent name numberOfAllDcmStorageSOPClassUIDs by renaming
+  it to numberOfDcmAllStorageSOPClassUIDs since the related global array
+  is called dcmAllStorageSOPClassUIDs and not allDcmStorageSOPClassUIDs.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcuid.cc
+           dcmnet/apps/movescu.cc
+           dcmnet/apps/storescp.cc
+           dcmpstat/apps/dcmpsrcv.cc
+           dcmqrdb/libsrc/dcmqrptb.cc
+           dcmqrdb/libsrc/dcmqrsrv.cc
+
+- Allow for sending non-patient DICOM objects:
+  The storescu and dcmsend tool (based on the class DcmStorageSCU) are now
+  able to send non-patient DICOM objects. The latter was already able to do
+  so but reported a warning to the DEBUG logger that an "unknown storage SOP
+  class (with standard UID prefix)" is to be transferred. This warning has
+  now disappeared.
+  This partly closes DCMTK Conformance #695.
+  Affects: dcmnet/apps/storescu.cc
+           dcmnet/libsrc/dstorscu.cc
+
+- Further enhanced support for non-patient objects:
+  Added optional parameter to dcmIsaStorageSOPClassUID() that allows for
+  checking a given SOP Class UID for being a known Storage SOP Class UID
+  of a non-patient DICOM object. Also added support to check for image
+  objects only. The default behavior of this function has not changed,
+  i.e. only those Storage SOP Classes are covered that fit into into the
+  conventional PATIENT-STUDY-SERIES-INSTANCE information model.
+  The function dcmIsImageStorageSOPClassUID() is now only a shortcut for
+  calling dcmIsaStorageSOPClassUID() with the new type parameter being
+  ESSC_Image. This is useful in order to be backward compatible.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcuid.cc
+
+**** Changes from 2017.02.07 (onken)
+
+- Rebuilt dependencies.
+  Affects: dcmdata/apps/Makefile.dep
+           dcmdata/libsrc/Makefile.dep
+           dcmdata/tests/Makefile.dep
+           dcmiod/tests/Makefile.dep
+           dcmnet/apps/Makefile.dep
+           dcmnet/libsrc/Makefile.dep
+           dcmnet/tests/Makefile.dep
+           dcmpmap/libsrc/Makefile.dep
+           dcmpstat/tests/Makefile.dep
+           dcmseg/libsrc/Makefile.dep
+           dcmsr/libsrc/Makefile.dep
+           dcmtls/libsrc/Makefile.dep
+           ofstd/libsrc/Makefile.dep
+           ofstd/tests/Makefile.dep
+
+- Remove unused files from build system.
+  Removed: dcmpmap/tests/Makefile.dep
+           dcmseg/apps/CMakeLists.txt
+  Affects: dcmpmap/Makefile.in
+
+**** Changes from 2017.02.06 (riesmeier)
+
+- Cleanup of comments (retired DICOM SOP Classes).
+  Affects: dcmnet/etc/storescp.cfg
+
+- Further fixes regarding non-patient objects:
+  Replaced some non-patient DICOM objects in dcmLongSCUStorageSOPClassUIDs by
+  the three Legacy Converted Enhanced Image objects. This is another step
+  towards a clearer distinction between patient and non-patient objects.
+  Also see DCMTK Conformance #695.
+  Affects: dcmdata/libsrc/dcuid.cc
+           dcmnet/docs/getscu.man
+           dcmqrdb/docs/dcmqrscp.man
+
+- Fixes for non-patient DICOM Storage Objects:
+  Various fixes for non-patient DICOM Storage Objects such as Color Palette
+  or Generic Implant Template Storage. The array dcmAllStorageSOPClassUIDs
+  only contains the UIDs of those Storage SOP Classes that fit into the
+  conventional PATIENT-STUDY-SERIES-INSTANCE information model. Of course,
+  all other DICOM objects for which the Storage Service is defined should
+  also be transferred using a C-STORE message.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcuid.cc
+           dcmnet/docs/storescp.man
+           dcmnet/etc/storescp.cfg
+           dcmqrdb/docs/dcmqrscp.man
+
+- Added new sample association negotiation profile:
+  Added new sample association negotiation profile "AllDICOM" for SCPs, e.g.
+  for storescp or dcmrecv. This new profile allows for accepting all 126
+  Storage SOP Classes that are currently defined in the DICOM standard (i.e.
+  without retired, draft, DICOS and DICONDE Storage SOP Classes).
+  Affects: dcmnet/etc/storescp.cfg
+
+- Fixed wrong name of Storage SOP Class:
+  Fixed wrong name of Wide Field Ophthalmic Photography 3D Coordinates Image
+  Storage SOP Class; the name prefix "Wide Field" was missing for some reason.
+  Affects: dcmdata/libsrc/dcuid.cc
+
+**** Changes from 2017.02.06 (onken)
+
+- Fixed crash in debug mode (const pointer misuse):
+  Fixed crash in debug mode apparently caused by writing to const pointer.
+  Minor changes (parameter type, whitespace).
+  Closes DCMTK Bug #646.
+  Affects: dcmnet/include/dcmtk/dcmnet/dccfpcmp.h
+           dcmnet/libsrc/dccfpcmp.cc
+
+**** Changes from 2017.02.03 (onken)
+
+- Moved latest post-read checks to DcmDataset:
+  Moved the recently introduced post-read checks into DcmDataset since they only
+  apply to datasets and not general purpose items. This eliminates the need of
+  explicitly checking in the code whether it is working on top level or not.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcdatset.h
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/libsrc/dcdatset.cc
+           dcmdata/libsrc/dcitem.cc
+
+- Fixed dcumentation one more time.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcitem.h
+
+- Fixed parameter type, and docs.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcitem.h
+
+**** Changes from 2017.02.03 (riesmeier)
+
+- Fixed wrong indentation of new options.
+  Affects: dcmdata/docs/dcmconv.man
+           dcmdata/docs/dcmdump.man
+
+**** Changes from 2017.02.03 (onken)
+
+- Report error in case of wrong Pixel Data encoding:
+  It has been reported that some DICOM datasets do write encapsulated pixel data
+  without following the related rules, i.e. to use undefined length for the Pixel
+  Data element and to use Pixel Sequence and Pixel Items inside.
+  So far such files (using defined length on encapsulated Pixel Data) have been
+  read without any warnings or errors giving the impression that the data is
+  valid.
+  Now, DCMTK will per default report an error if reading such files. There is a
+  global switch which permits to enforce the old behaviour, i.e. to read such
+  files as if the encoding would be correct. However, in that case a warning
+  is printed.
+  Options demonstrating the flag have been added to dcmdump and dcmconv.
+  The new functionality is aware of the fact that Pixel Data not being part of
+  the top level dataset, i.e. nested within sequences, must not use the
+  encapsulated format but remain uncompressed (as for icon images).
+  The validity of internal structures of the Pixel Data element (Pixel Sequence
+  and Items) is not checked by this new compatibility flag.
+  This closes DCMTK Bug #427.
+  Affects: dcmdata/apps/dcmconv.cc
+           dcmdata/apps/dcmdump.cc
+           dcmdata/docs/dcmconv.man
+           dcmdata/docs/dcmdump.man
+           dcmdata/include/dcmtk/dcmdata/dcerror.h
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/include/dcmtk/dcmdata/dcobject.h
+           dcmdata/libsrc/dcerror.cc
+           dcmdata/libsrc/dcitem.cc
+           dcmdata/libsrc/dcobject.cc
+
+**** Changes from 2017.02.02 (riesmeier)
+
+- Added support for unkown VR "??" in dump file:
+  Added support for unknown VR "??" that is e.g. used by dcmdump when parsing
+  "Unknown Tag & Data" in a transfer syntax with implicit VR.
+  Thanks to forum user "ionut.vaida" for the triggering posting.
+  Affects: dcmdata/apps/dump2dcm.cc
+
+- Fixed typo in command line option check:
+  Fixed a typo when checking the command line option "--prefer-mpeg4-2-st".
+  Affects: dcmnet/apps/getscu.cc
+
+- Check returned status of chooseRepresentation():
+  Check returned status of chooseRepresentation() and report an error if
+  changing the pixel representation fails. This information is useful in
+  cases where a DICOM file cannot be converted because of the Pixel Data.
+  Affects: dcmdata/apps/dcmconv.cc
+
+**** Changes from 2017.02.01 (riesmeier)
+
+- Added further support for Supplement 195 (HEVC):
+  Added further support for Supplement 195 (HEVC/H.265 Transfer Syntax). Now,
+  also movescu's --accept-all option supports the two new transfer syntaxes.
+  Partly closes DCMTK Conformance #702.
+  Affects: dcmnet/apps/movescu.cc
+           dcmnet/docs/movescu.man
+
+- Shortened description of MPEG xfer options:
+  Shortened description of the various MPEG (mainly -4 but also -2) transfer
+  syntax options in order to fit into the max. line length of 80 characters.
+  The full description is, of course, still available in the man page.
+  Affects: dcmnet/apps/getscu.cc
+           dcmnet/apps/movescu.cc
+           dcmnet/apps/storescp.cc
+           dcmnet/apps/storescu.cc
+           dcmqrdb/apps/dcmqrscp.cc
+
+- Fixed description of option --prefer-mpeg4-bd.
+  Affects: dcmnet/docs/getscu.man
+
+**** Changes from 2017.02.01 (schlamelcher)
+
+- Added missing comment header to several unit tests.
+  Affects: ofstd/tests/tlimits.cc
+           ofstd/tests/toption.cc
+           ofstd/tests/ttuple.cc
+           ofstd/tests/tvariant.cc
+
+**** Changes from 2017.02.01 (onken)
+
+- Fixed minor documentation issue.
+  Affects: dcmnet/include/dcmtk/dcmnet/dcuserid.h
+
+**** Changes from 2017.02.01 (schlamelcher)
+
+- Minor fixes in code comments of yesterdays commits.
+  Affects: dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h
+           dcmqrdb/libsrc/dcmqrdbi.cc
+
+**** Changes from 2017.02.01 (onken)
+
+- Fixed minor documnetation issue.
+  Affects: dcmtls/include/dcmtk/dcmtls/tlsscu.h
+
+- Fixed User Identification Negotiation ack message:
+  Fixed User Identification Negotiation Acknowledgement message which used the
+  same user item identifier (0x58) as the request but has to use a different one
+  (0x59) instead. Enhanced documentation.
+  Fixes DCMTK bug #437.
+  Thanks for the report to Yves Neumann<neumann at image-systems.biz>.
+  Affects: dcmnet/include/dcmtk/dcmnet/dcuserid.h
+           dcmnet/libsrc/dcuserid.cc
+           dcmnet/libsrc/dulparse.cc
+
+- Added missing documentation:
+  Closes DCMTK Bug #541.
+  Affects: dcmtls/include/dcmtk/dcmtls/tlsscu.h
+
+**** Changes from 2017.02.01 (riesmeier)
+
+- Fixed bug introduced with last commit (crash):
+  Fixed a severe bug introduced with the last commit that caused the tool to
+  crash if option --accept-all (+xa) was used. The reason was that the size
+  of the array "transferSyntaxes" was not increased even though new entries
+  were added to it (namely, three new MPEG4 transfer syntaxes).
+  Affects: dcmnet/apps/movescu.cc
+
+**** Changes from 2017.01.31 (riesmeier)
+
+- Removed obsolete command line options:
+  Removed options that were removed from the command line tool.
+  Also removed outdated/useless section on "JSON Encoding".
+  Affects: dcmdata/docs/dcm2json.man
+
+- Updated credits with regard to the Debian package.
+  Affects: CREDITS
+
+- Removed useless "option block" for single option.
+  Affects: dcmdata/apps/dcm2json.cc
+
+- Use DCM_MaxReadLength as the default value:
+  Use DCM_MaxReadLength as the default value for the "maxReadLength" parameter
+  and not "4096", i.e. a numerical value. Also fixed source code formatting.
+  Affects: dcmdata/apps/dcm2json.cc
+
+- Minor fixes for reasons of consistency:
+  Minor fixes such as source code formatting or naming conventions for
+  reasons of consistency with existing code.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvr.h
+           dcmdata/libsrc/dcvr.cc
+
+- Made sure that a value is loaded before modified:
+  Made sure that an element value is actually loaded before it is modified
+  with DcmElement::changeValue(). This fixes a possible crash (segmentation
+  fault) in case the "maxReadLength" parameter of the various loadFile/read
+  methods was set to a very low value (i.e., less than 4).
+  Thanks to Michael Schinner <Michael.Schinner at ith-icoserve.com> for the bug
+  report and for the test program that demonstrates this crash.
+  Affects: dcmdata/libsrc/dcelem.cc
+
+**** Changes from 2017.01.31 (grallert)
+
+- Removed unused command line parameters from dcm2json:
+  Removed --load-all, --load-short and --max-read-length, since they have no
+  meaning for dcm2json (all elements will be read as needed for the JSON output
+  anyway).
+  Affects: dcmdata/apps/dcm2json.cc
+
+- Added MPEG-4 transfer syntax options to several apps:
+  Several MPEG-4 transfer syntaxes may now be proposed/preferred via the
+  respective command line arguments of storescu etc.
+  Affects: dcmnet/apps/getscu.cc
+           dcmnet/apps/movescu.cc
+           dcmnet/apps/storescp.cc
+           dcmnet/apps/storescu.cc
+           dcmnet/docs/getscu.man
+           dcmnet/docs/movescu.man
+           dcmnet/docs/storescp.man
+           dcmnet/docs/storescu.man
+           dcmqrdb/apps/dcmqrscp.cc
+           dcmqrdb/docs/dcmqrscp.man
+           dcmqrdb/libsrc/dcmqrcbm.cc
+           dcmqrdb/libsrc/dcmqrsrv.cc
+
+**** Changes from 2017.01.31 (schlamelcher)
+
+- Added Specific Character Set to the dcmqrdb index:
+  The value of Specific Character set (if any) is now also stored into the index
+  file of dcmqrdb and provided within find responses.
+  Don't forget to re-create your database indices using dcmqridx.
+  Affects: dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h
+           dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h
+           dcmqrdb/libsrc/dcmqrdbi.cc
+
+- Refactored dcmqrdb element list to use new/delete:
+  Dcmqrdb's list implementation is now created and destroyed using new/delete
+  instead of malloc/free. This ensures all list element members are correctly
+  initialized via the constructor and enables the use of non-POD types inside
+  the list.
+  Affects: dcmqrdb/libsrc/dcmqrdbi.cc
+
+- Fixed: ST is also affected by specific character set.
+  Affects: dcmdata/libsrc/dcvr.cc
+
+**** Changes from 2017.01.31 (riesmeier)
+
+- Added support for recently approved CP-1619:
+  Added support for CP-1619 to the data dictionary.
+  This CP was approved during this week's DICOM WG-06 meeting.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+**** Changes from 2017.01.30 (schlamelcher)
+
+- Added DcmSpecificCharacterSet state checking methods:
+  The initialization state (i.e. whether selectCharacterSet was called before)
+  of an DcmSpecificCharacterSet object can now be queried via the corresponding
+  operator OFBool and operator! methods. This eases using a persistent object
+  for multiple character set conversions.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcspchrs.h
+           dcmdata/libsrc/dcspchrs.cc
+
+- Refactored DcmCharString based classes using DcmVR:
+  DcmCharString and the VR classes based on it now use the information from
+  DcmVR for character set conversions; this reduces information redundancy.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcchrstr.h
+           dcmdata/include/dcmtk/dcmdata/dcvrlo.h
+           dcmdata/include/dcmtk/dcmdata/dcvrpn.h
+           dcmdata/include/dcmtk/dcmdata/dcvrsh.h
+           dcmdata/libsrc/dcchrstr.cc
+           dcmdata/libsrc/dcvrlo.cc
+           dcmdata/libsrc/dcvrpn.cc
+           dcmdata/libsrc/dcvrsh.cc
+
+- Added additional information to DcmVR:
+  DcmVR now also provides Specific Character Set related information, if a given
+  VR is affected by the value of Specific Character Set and what delimiter
+  characters are to be regarded for character set conversion.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvr.h
+           dcmdata/libsrc/dcvr.cc
+
+**** Changes from 2017.01.27 (riesmeier)
+
+- Removed gethostbyname from compatibility header:
+  Removed gethostbyname() function from dcmnet's old compatibility header file
+  since this function has been wrapped and moved to ofstd with commit a144346.
+  Affects: dcmnet/include/dcmtk/dcmnet/dcompat.h
+
+- Removed obsolete macro (Windows 95 workaround):
+  Removed the obsolete macro NO_WINDOWS95_ADDRESS_TRANSLATION_WORKAROUND,
+  which probably nobody every used. Since the gethostbyname() function,
+  at least officially, does not accept an IP address on many operating
+  systems, the "workaround" is now the only way of doing it. And, since
+  it was already the default behavior for almost 20 years now, nothing
+  changes at all.
+  Also see DCMTK Bug #391.
+  Affects: config/docs/macros.txt
+           dcmnet/libsrc/dulfsm.cc
+
+**** Changes from 2017.01.25 (riesmeier)
+
+- Added explicit typecast to function parameter:
+  Added explicit typecast to "int" parameter of Windows function
+  WideCharToMultiByte() in order to avoid a compiler warning.
+  Affects: ofstd/libsrc/ofstd.cc
+
+- Changed type for index/number of sequence items:
+  Changed data type used for the index and number of sequence items. The type
+  "size_t" seems to be more appropriate than "unsigned long" since internally
+  an OFList (subset of std:list) instance is used for the data management.
+  As a consequence, VisualStudio and other compilers will not warn anymore on
+  a "possible loss of data" (warning C4267).
+  Affects: dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtads.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtags.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtass.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbads.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtccs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtces.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtchs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtddps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drteas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtes.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfes.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtgas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiais.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtians.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtibls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtibs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drticpds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drticps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtircs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtitts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtoas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtois.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtras.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrims.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrses.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtscris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtshds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsins.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsns.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttms0.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttms9.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttscds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtudis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtvls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h
+           dcmrt/libsrc/drtaadcs.cc
+           dcmrt/libsrc/drtadcs.cc
+           dcmrt/libsrc/drtads.cc
+           dcmrt/libsrc/drtafs.cc
+           dcmrt/libsrc/drtags.cc
+           dcmrt/libsrc/drtajcs.cc
+           dcmrt/libsrc/drtas1.cc
+           dcmrt/libsrc/drtas5.cc
+           dcmrt/libsrc/drtas6.cc
+           dcmrt/libsrc/drtas7.cc
+           dcmrt/libsrc/drtass.cc
+           dcmrt/libsrc/drtbads.cc
+           dcmrt/libsrc/drtbas.cc
+           dcmrt/libsrc/drtbcps.cc
+           dcmrt/libsrc/drtbl2.cc
+           dcmrt/libsrc/drtbl5.cc
+           dcmrt/libsrc/drtbldls.cc
+           dcmrt/libsrc/drtbldps.cc
+           dcmrt/libsrc/drtblds1.cc
+           dcmrt/libsrc/drtblds5.cc
+           dcmrt/libsrc/drtblds6.cc
+           dcmrt/libsrc/drtbldts.cc
+           dcmrt/libsrc/drtbrcss.cc
+           dcmrt/libsrc/drtbrdrs.cc
+           dcmrt/libsrc/drtbrs.cc
+           dcmrt/libsrc/drtbs.cc
+           dcmrt/libsrc/drtbss.cc
+           dcmrt/libsrc/drtbvcps.cc
+           dcmrt/libsrc/drtcbars.cc
+           dcmrt/libsrc/drtccs.cc
+           dcmrt/libsrc/drtcctus.cc
+           dcmrt/libsrc/drtcdrs.cc
+           dcmrt/libsrc/drtces.cc
+           dcmrt/libsrc/drtcgis.cc
+           dcmrt/libsrc/drtchs.cc
+           dcmrt/libsrc/drtcims.cc
+           dcmrt/libsrc/drtcis.cc
+           dcmrt/libsrc/drtcncs.cc
+           dcmrt/libsrc/drtcos.cc
+           dcmrt/libsrc/drtcpas.cc
+           dcmrt/libsrc/drtcpis.cc
+           dcmrt/libsrc/drtcps.cc
+           dcmrt/libsrc/drtcs.cc
+           dcmrt/libsrc/drtcsas.cc
+           dcmrt/libsrc/drtcshs.cc
+           dcmrt/libsrc/drtcsis.cc
+           dcmrt/libsrc/drtcss.cc
+           dcmrt/libsrc/drtdcs.cc
+           dcmrt/libsrc/drtdddps.cc
+           dcmrt/libsrc/drtddps.cc
+           dcmrt/libsrc/drtdias.cc
+           dcmrt/libsrc/drtdimcs.cc
+           dcmrt/libsrc/drtdimrs.cc
+           dcmrt/libsrc/drtdirs.cc
+           dcmrt/libsrc/drtdose.cc
+           dcmrt/libsrc/drtdrs.cc
+           dcmrt/libsrc/drtds.cc
+           dcmrt/libsrc/drtdspcs.cc
+           dcmrt/libsrc/drtdss.cc
+           dcmrt/libsrc/drtdvhs.cc
+           dcmrt/libsrc/drtdvrrs.cc
+           dcmrt/libsrc/drteas.cc
+           dcmrt/libsrc/drtecs.cc
+           dcmrt/libsrc/drtes.cc
+           dcmrt/libsrc/drtfds.cc
+           dcmrt/libsrc/drtfes.cc
+           dcmrt/libsrc/drtfgs.cc
+           dcmrt/libsrc/drtfgss.cc
+           dcmrt/libsrc/drtfms.cc
+           dcmrt/libsrc/drtfsss.cc
+           dcmrt/libsrc/drtgas.cc
+           dcmrt/libsrc/drtgpis.cc
+           dcmrt/libsrc/drthsdrs.cc
+           dcmrt/libsrc/drtiais.cc
+           dcmrt/libsrc/drtians.cc
+           dcmrt/libsrc/drtiblds.cc
+           dcmrt/libsrc/drtibls.cc
+           dcmrt/libsrc/drtibs.cc
+           dcmrt/libsrc/drticpds.cc
+           dcmrt/libsrc/drticps.cc
+           dcmrt/libsrc/drtics.cc
+           dcmrt/libsrc/drtiis.cc
+           dcmrt/libsrc/drtimage.cc
+           dcmrt/libsrc/drtionpl.cc
+           dcmrt/libsrc/drtiontr.cc
+           dcmrt/libsrc/drtipiqs.cc
+           dcmrt/libsrc/drtircs.cc
+           dcmrt/libsrc/drtiseis.cc
+           dcmrt/libsrc/drtitts.cc
+           dcmrt/libsrc/drtiwps.cc
+           dcmrt/libsrc/drtiws.cc
+           dcmrt/libsrc/drtlsds.cc
+           dcmrt/libsrc/drtlsds6.cc
+           dcmrt/libsrc/drtlsds7.cc
+           dcmrt/libsrc/drtmacds.cc
+           dcmrt/libsrc/drtmas.cc
+           dcmrt/libsrc/drtmdrs.cc
+           dcmrt/libsrc/drtmls.cc
+           dcmrt/libsrc/drtmps.cc
+           dcmrt/libsrc/drtmris.cc
+           dcmrt/libsrc/drtmss.cc
+           dcmrt/libsrc/drtmucs.cc
+           dcmrt/libsrc/drtoas.cc
+           dcmrt/libsrc/drtois.cc
+           dcmrt/libsrc/drtopis.cc
+           dcmrt/libsrc/drtos.cc
+           dcmrt/libsrc/drtpbcs.cc
+           dcmrt/libsrc/drtpcs.cc
+           dcmrt/libsrc/drtpcxs.cc
+           dcmrt/libsrc/drtpdecs.cc
+           dcmrt/libsrc/drtpdeds.cc
+           dcmrt/libsrc/drtpfms.cc
+           dcmrt/libsrc/drtpics.cc
+           dcmrt/libsrc/drtplan.cc
+           dcmrt/libsrc/drtporcs.cc
+           dcmrt/libsrc/drtporis.cc
+           dcmrt/libsrc/drtppcs.cc
+           dcmrt/libsrc/drtprsis.cc
+           dcmrt/libsrc/drtpscs.cc
+           dcmrt/libsrc/drtpsics.cc
+           dcmrt/libsrc/drtpss.cc
+           dcmrt/libsrc/drtpsss.cc
+           dcmrt/libsrc/drtpvis.cc
+           dcmrt/libsrc/drtqds.cc
+           dcmrt/libsrc/drtras.cc
+           dcmrt/libsrc/drtrbas2.cc
+           dcmrt/libsrc/drtrbas8.cc
+           dcmrt/libsrc/drtrbls.cc
+           dcmrt/libsrc/drtrbos1.cc
+           dcmrt/libsrc/drtrbos6.cc
+           dcmrt/libsrc/drtrbos7.cc
+           dcmrt/libsrc/drtrbs2.cc
+           dcmrt/libsrc/drtrbs4.cc
+           dcmrt/libsrc/drtrbs8.cc
+           dcmrt/libsrc/drtrcdrs.cc
+           dcmrt/libsrc/drtrcos.cc
+           dcmrt/libsrc/drtrcps.cc
+           dcmrt/libsrc/drtrcs.cc
+           dcmrt/libsrc/drtrdros.cc
+           dcmrt/libsrc/drtrdrs1.cc
+           dcmrt/libsrc/drtrdrs6.cc
+           dcmrt/libsrc/drtrdrs8.cc
+           dcmrt/libsrc/drtrds.cc
+           dcmrt/libsrc/drtrecs.cc
+           dcmrt/libsrc/drtrfgs.cc
+           dcmrt/libsrc/drtrfors.cc
+           dcmrt/libsrc/drtrics.cc
+           dcmrt/libsrc/drtrims.cc
+           dcmrt/libsrc/drtris.cc
+           dcmrt/libsrc/drtrlsds.cc
+           dcmrt/libsrc/drtrmdrs.cc
+           dcmrt/libsrc/drtrms.cc
+           dcmrt/libsrc/drtrmss6.cc
+           dcmrt/libsrc/drtrmss7.cc
+           dcmrt/libsrc/drtrpcs.cc
+           dcmrt/libsrc/drtrpis.cc
+           dcmrt/libsrc/drtrppcs.cc
+           dcmrt/libsrc/drtrpphs.cc
+           dcmrt/libsrc/drtrpps.cc
+           dcmrt/libsrc/drtrppss.cc
+           dcmrt/libsrc/drtrps.cc
+           dcmrt/libsrc/drtrris1.cc
+           dcmrt/libsrc/drtrris6.cc
+           dcmrt/libsrc/drtrris9.cc
+           dcmrt/libsrc/drtrrms.cc
+           dcmrt/libsrc/drtrros.cc
+           dcmrt/libsrc/drtrrpcs.cc
+           dcmrt/libsrc/drtrrros.cc
+           dcmrt/libsrc/drtrrs.cc
+           dcmrt/libsrc/drtrrshs.cc
+           dcmrt/libsrc/drtrrtps.cc
+           dcmrt/libsrc/drtrrtps3.cc
+           dcmrt/libsrc/drtrrtps4.cc
+           dcmrt/libsrc/drtrrtps5.cc
+           dcmrt/libsrc/drtrscs.cc
+           dcmrt/libsrc/drtrsers.cc
+           dcmrt/libsrc/drtrses.cc
+           dcmrt/libsrc/drtrshs.cc
+           dcmrt/libsrc/drtrshs6.cc
+           dcmrt/libsrc/drtrshs7.cc
+           dcmrt/libsrc/drtrsis.cc
+           dcmrt/libsrc/drtrsns.cc
+           dcmrt/libsrc/drtrsos.cc
+           dcmrt/libsrc/drtrsrs.cc
+           dcmrt/libsrc/drtrss.cc
+           dcmrt/libsrc/drtrsss.cc
+           dcmrt/libsrc/drtrsts.cc
+           dcmrt/libsrc/drtrtrs2.cc
+           dcmrt/libsrc/drtrtrs4.cc
+           dcmrt/libsrc/drtrvis.cc
+           dcmrt/libsrc/drtrws.cc
+           dcmrt/libsrc/drtrwvms.cc
+           dcmrt/libsrc/drtscris.cc
+           dcmrt/libsrc/drtscs.cc
+           dcmrt/libsrc/drtsdcs.cc
+           dcmrt/libsrc/drtsds.cc
+           dcmrt/libsrc/drtshds.cc
+           dcmrt/libsrc/drtsins.cc
+           dcmrt/libsrc/drtsis.cc
+           dcmrt/libsrc/drtsns.cc
+           dcmrt/libsrc/drtspccs.cc
+           dcmrt/libsrc/drtspcs.cc
+           dcmrt/libsrc/drtspgis.cc
+           dcmrt/libsrc/drtsptcs.cc
+           dcmrt/libsrc/drtss.cc
+           dcmrt/libsrc/drtssrcs.cc
+           dcmrt/libsrc/drtssrs.cc
+           dcmrt/libsrc/drtsss.cc
+           dcmrt/libsrc/drtstrct.cc
+           dcmrt/libsrc/drttms0.cc
+           dcmrt/libsrc/drttms9.cc
+           dcmrt/libsrc/drttreat.cc
+           dcmrt/libsrc/drttscds.cc
+           dcmrt/libsrc/drttsibs.cc
+           dcmrt/libsrc/drttsmds.cc
+           dcmrt/libsrc/drttts.cc
+           dcmrt/libsrc/drtudis.cc
+           dcmrt/libsrc/drtvls.cc
+           dcmrt/libsrc/drtwps.cc
+           dcmrt/libsrc/drtwrs.cc
+           dcmrt/libsrc/drtwrsrs.cc
+           dcmrt/libsrc/drtws.cc
+           dcmrt/libsrc/drtxrs.cc
+
+- Pass value of correct type to "size" parameter:
+  Pass value of correct type to "size" parameter of the getOutputData()
+  method of class DicomImage, i.e. "unsigned long" instead of "size_t".
+  This avoids a warning message being reported by certain compilers, e.g.
+  VisualStudio 2015 (x64).
+  Affects: dcmrt/libsrc/drmimage.cc
+
+- Added missing brackets to "if( || )" statement.
+  Affects: ofstd/tests/toffile.cc
+
+- Minor cleanup in dump output of TLS connections:
+  Fixed indentation and newlines in dump output of TLS connections.
+  Affects: dcmtls/libsrc/tlslayer.cc
+           dcmtls/libsrc/tlstrans.cc
+
+- Replaced remaining tabs by spaces.
+  Affects: dcmnet/libsrc/dcmtrans.cc
+
+**** Changes from 2017.01.23 (riesmeier)
+
+- Disable exception throwing in destructor:
+  Don't throw an exception from the destructor in order to avoid that the
+  application terminates abruptly. The original code line comes from the
+  underlying Log4cplus library.
+  Affects: oflog/libsrc/hierlock.cc
+
+**** Changes from 2017.01.20 (onken)
+
+- Added hints that memory has to be freed by caller:
+  Added hints that Segmentation and Tractography Results objects that are created
+  by the existing static methods have to be freed by the caller.
+  Affects: dcmseg/include/dcmtk/dcmseg/segdoc.h
+           dcmtract/include/dcmtk/dcmtract/trctractographyresults.h
+
+**** Changes from 2017.01.20 (riesmeier)
+
+- Enhanced comments on charset to library mapping:
+  Enhanced comments on the mapping between DICOM character sets and the
+  underlying conversion libraries. Also fixed various vaguenesses.
+  Bottom line is: only the GNU libiconv (as of version 1.14) supports ALL
+  character sets that are currently defined in the DICOM standard. Both ICU
+  and the stdlibc iconv() function lack support of some Japanese character
+  sets, e.g. "ISO-IR-87" (JIS X 0201) and "ISO-IR-159" (JIS X 0212).
+  Affects: dcmdata/libsrc/dcspchrs.cc
+
+- Included missing standard header "assert":
+  Added missing standard header "assert.h" or "cassert" in order to compile
+  when HAVE_STL and HAVE_STD_STRING are defined. This header file is needed
+  for Linux systems with gcc (and probably others).
+  Affects: dcmdata/libsrc/dcjson.cc
+
+- Removed unused variable from writeJsonOpener().
+  Affects: dcmdata/libsrc/dcelem.cc
+
+- Added missing header include (without OpenSSL):
+  When compiled without OpenSSL support, the header file "dcmtrans.h" also
+  needs to be included for the new settings dcmSocketSend/ReceiveTimeout.
+  Affects: dcmnet/apps/storescp.cc
+           dcmnet/apps/storescu.cc
+
+- Fixed typos in API documentation.
+  Affects: dcmnet/include/dcmtk/dcmnet/dcmtrans.h
+
+**** Changes from 2017.01.19 (riesmeier)
+
+- Added new option --socket-timeout to storescu/scp:
+  Added new option --socket-timeout, which allows for specifying the timeout
+  for sending and receiving data on a network socket. A default of 60 seconds
+  is useful in cases where the sender (e.g. storescu) looses the connection
+  to the receiver (e.g. storescp) because the network cable is pulled or the
+  like. A value 0 means that the send() or recv() function never timeouts.
+  Affects: dcmnet/apps/storescp.cc
+           dcmnet/apps/storescu.cc
+           dcmnet/docs/storescp.man
+           dcmnet/docs/storescu.man
+
+- Made send() and recv() timeout configurable:
+  Made the timeout for the send() and recv() function configurable, i.e. the
+  default value of 60 seconds can now be changed at runtime. The previously
+  used macros DISABLE_RECV_TIMEOUT and DISABLE_SEND_TIMEOUT have, therefore,
+  become obsolete.
+  This partly closes DCMTK Bug #618.
+  Affects: config/docs/macros.txt
+           dcmnet/include/dcmtk/dcmnet/dcmtrans.h
+           dcmnet/libsrc/dcmtrans.cc
+
+- Added #warning on DONT_DISABLE_NAGLE_ALGORITHM:
+  Added warning during compilation if outdated DONT_DISABLE_NAGLE_ALGORITHM
+  is still used. Also readded this previously supported macro to the main
+  documentation file with a hint on the new behavior.
+  Affects: config/docs/macros.txt
+           dcmnet/libsrc/dul.cc
+           dcmnet/libsrc/dulfsm.cc
+
+- Minor corrections to documentation/comments.
+  Affects: dcmnet/include/dcmtk/dcmnet/dul.h
+
+- Simplified output of default option values:
+  Simplified output of default option values and also of the range of valid
+  values. This approach is now consistent with other tools like "storescu".
+  Affects: dcmnet/apps/storescp.cc
+
+**** Changes from 2017.01.19 (onken)
+
+- Fixed potential NULL pointer and implicit casts:
+  Two potential NULL pointer derefences have been fixed as well as various
+  implicit casts that could lead to data loss. Guards have been added where
+  necessary and remaining (safe) casts have been made explicit.
+  Affects: dcmiod/include/dcmtk/dcmiod/iodutil.h
+           dcmiod/libsrc/iodutil.cc
+           dcmnet/apps/getscu.cc
+           dcmnet/apps/storescu.cc
+           dcmpmap/libsrc/dpmparametricmapiod.cc
+           dcmseg/include/dcmtk/dcmseg/segtypes.h
+           dcmseg/libsrc/segdoc.cc
+
+- Fixed (harmless) shadowed variabl.
+  Affects: dcmfg/libsrc/fgframeanatomy.cc
+
+**** Changes from 2017.01.18 (riesmeier)
+
+- Do not pass simple const parameters by reference.
+  Affects: dcmnet/include/dcmtk/dcmnet/assoc.h
+           dcmnet/libsrc/assoc.cc
+
+- Do not disable Nagle algorithm by default:
+  Beginning with DCMTK 3.4.1, the so-called Nagle algorithm was disabled by
+  default for each DICOM transport connection in order to increase the network
+  performance, especially on Windows systems. However, on most modern operating
+  systems this default does not seem to be appropriate anymore. Therefore, the
+  default has been changed and the compiler macro DONT_DISABLE_NAGLE_ALGORITHM
+  has been replaced by DISABLE_NAGLE_ALGORITHM, so at compilation time the Nagle
+  algorithm can still be disabled (if needed). In addition, the environment
+  variable NO_TCPDELAY allows for changing this default at runtime.
+  See "config/docs/macros.txt" and "config/docs/envvars.txt" for details.
+  Closes DCMTK Feature #364.
+  Affects: config/docs/envvars.txt
+           config/docs/macros.txt
+           dcmnet/libsrc/dul.cc
+           dcmnet/libsrc/dulfsm.cc
+
+- Fixed maximum number of bytes to read from stdin:
+  Limit maximum number of bytes to read from stdin in order to avoid a
+  possible buffer overflow. This issue has been reported by the static
+  code analysis tool of VisualStudio 2015.
+  Also fixed various typos in comments.
+  Affects: dcmnet/apps/storescp.cc
+           dcmwlm/libsrc/wlmactmg.cc
+
+- Replaced binary ("&") by boolean ("&&") AND.
+  Affects: dcmdata/libsrc/dcddirif.cc
+
+- Fixed warnings reported by VisualStudio 2015:
+  Added explicit typecasts in order to avoid warnings of type C4267
+  "possible loss of data" reported by VisualStudio 2015.
+  Affects: dcmnet/include/dcmtk/dcmnet/dcuserid.h
+           dcmnet/libsrc/assoc.cc
+           dcmnet/libsrc/dcuserid.cc
+           dcmnet/libsrc/dulconst.cc
+           dcmpstat/libsrc/dvpstat.cc
+
+- Updated latest tested CMake version:
+  Updated information on latest CMake version that has been tested to "3.7.2".
+  Affects: CMake/dcmtkPrepare.cmake
+
+**** Changes from 2017.01.17 (onken)
+
+- Avoid another variable shadow warning.
+  Affects: dcmpmap/libsrc/dpmparametricmapiod.cc
+
+- Print conn. timeout to TRACE instead DEBUG level:
+  If select() runs into a timeout when listening for TCP connections, a message
+  was printed to the DEBUG log level. Since this can occur quite often (depending
+  on the timeout), the message has been moved to the TRACE logger instead.
+  Affects: dcmnet/libsrc/diutil.cc
+
+- Fixed warning about unused parameter.
+  Affects: ofstd/include/dcmtk/ofstd/ofoption.h
+
+- Fixed warnings about overloaded virtual functions.
+  Affects: dcmtract/include/dcmtk/dcmtract/trcstatistic.h
+           dcmtract/libsrc/trcstatistic.cc
+
+- Avoid warnings about shadowed names.
+  Affects: dcmfg/libsrc/fg.cc
+           dcmiod/tests/tcielabutil.cc
+
+**** Changes from 2017.01.16 (riesmeier)
+
+- Do not set TCP send and receive buffer length:
+  By default, don't set the TCP send and receive buffer length anymore since
+  modern operating systems know much better what appropriate values are. If
+  the user wants, he can still specify a certain buffer length by using the
+  environment variable TCP_BUFFER_LENGTH (which was already supported by
+  previous versions of the DCMTK).
+  Thanks to Alexander Haderer <alexander.haderer at loescap.de> for the suggested
+  patch and forum user "tpalagyi" (and others) for the original report.
+  Closes DCMTK Feature #597.
+  Affects: config/docs/envvars.txt
+           dcmnet/libsrc/dul.cc
+           dcmnet/libsrc/dulfsm.cc
+
+- Removed DCMTK's implementation of tempnam():
+  Removed DCMTK's implementation of tempnam() since it is not used any longer.
+  Also removed related documentation on environment variable TMPDIR.
+  Affects: config/docs/envvars.txt
+           dcmnet/include/dcmtk/dcmnet/dcompat.h
+           dcmnet/libsrc/dcompat.cc
+
+**** Changes from 2017.01.14 (riesmeier)
+
+- Added another character set test (for ISO-IR 149):
+  Added another character set conversion test that checks for the automatic
+  detection of 8- vs. 16-bit characters when using "ISO 2022 IR 149".
+  Affects: dcmdata/tests/tspchrs.cc
+
+**** Changes from 2017.01.13 (riesmeier)
+
+- Fixed issue with wrong detection of delimiters:
+  Fixed issue with wrong detection of delimiters (such as a backslash) when
+  converting a character string with multi-byte character set and code
+  extensions. Also enhanced support for character sets that use one or two
+  bytes per character such as "ISO 2022 IR 149".
+  Thanks to Bhuvan Bose <bhuvanbose86 at gmail.com> for the original report and
+  for the sample DICOM object (using "\ISO 2022 IR 87" character set).
+  Closes DCMTK Bug #684.
+  Affects: dcmdata/libsrc/dcspchrs.cc
+
+- Updated documentation regarding HT delimiter:
+  Updated documentation regarding the horizontal tab (HT) character being one
+  of the standard delimiters.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcspchrs.h
+           dcmdata/libsrc/dcspchrs.cc
+
+- Added another character set test (for ISO-IR 58):
+  Added another character set test based on the example from DICOM PS3.5 K.2.
+  This test uses GB 2312 (registered as ISO-IR 58), i.e. Simplified Chinese.
+  Affects: dcmdata/tests/tspchrs.cc
+
+**** Changes from 2017.01.09 (onken)
+
+- Fixed various documentation issues:
+  Fixed doxygen warnings by adding missing documentation of parameters and
+  return values as well as doubled section labels in dcmnet documentation that
+  also occur in other DCMTK modules.
+  Affects: dcmiod/include/dcmtk/dcmiod/iodcommn.h
+           dcmiod/include/dcmtk/dcmiod/iodmacro.h
+           dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h
+           dcmiod/include/dcmtk/dcmiod/modsynchronisation.h
+           dcmnet/docs/cptscp.dox
+           dcmnet/docs/dcmnet.dox
+           dcmnet/docs/dcmrecv.man
+           dcmnet/docs/dcmsend.man
+           dcmnet/docs/echoscu.man
+           dcmnet/docs/findscu.man
+           dcmnet/docs/getscu.man
+           dcmnet/docs/movescu.man
+           dcmnet/docs/storescp.man
+           dcmnet/docs/storescu.man
+           dcmnet/docs/termscu.man
+           dcmnet/include/dcmtk/dcmnet/dcuserid.h
+           dcmnet/include/dcmtk/dcmnet/scpcfg.h
+           dcmpmap/docs/dcmpmap.dox
+           dcmpmap/include/dcmtk/dcmpmap/dpmparametricmapiod.h
+           dcmseg/include/dcmtk/dcmseg/segdoc.h
+
+**** Changes from 2017.01.06 (onken)
+
+- Better SCP timeouts, test, cleanups and more docs:
+  A new possibility was added to return from DcmSCP's listen() loop in
+  non-blocking mode. A dedicated return code has been added, as well as
+  for the existing "stop after current association" feature. A test was added
+  to ensure DcmSCP works as expected.
+  Some methods have been cleaned up, especially calls for freeing association
+  structures have been concentrated into a single call.
+  Some further documentation was added, including possible return codes of
+  some important methods.
+  Added:   dcmnet/tests/tscuscp.cc
+  Affects: dcmnet/apps/Makefile.dep
+           dcmnet/include/dcmtk/dcmnet/cond.h
+           dcmnet/include/dcmtk/dcmnet/scp.h
+           dcmnet/libsrc/Makefile.dep
+           dcmnet/libsrc/cond.cc
+           dcmnet/libsrc/scp.cc
+           dcmnet/tests/CMakeLists.txt
+           dcmnet/tests/Makefile.dep
+           dcmnet/tests/Makefile.in
+           dcmnet/tests/tests.cc
+
+**** Changes from 2017.01.06 (riesmeier)
+
+- Removed "dcmwlm/wwwapps" from ".gitignore":
+  Removed retired "wwwapps" of the Worklist Management SCP module from the
+  ".gitignore" file.
+  Affects: .gitignore
+
+- Added Manpage of recently introduced dcm2json tool.
+  Added:   doxygen/manpages/man1/dcm2json.1
+
+- Let git ignore recently introduced dcm2json tool.
+  Affects: .gitignore
+
+- Added a section on the rendering limitations:
+  Added a section to the manpage that describes the (current) limitations
+  when rendering a GSPS object, e.g. textual and graphical annotations are
+  not supported.
+  Closes DCMTK Feature #665.
+  Affects: dcmpstat/docs/dcmp2pgm.man
+
+- Fixed incomplete renaming of command line options:
+  Fixed incomplete renaming of command line options --illegal-obow-reject,
+  --illegal-obow-convert, --illegal-voi-reject and --illegal-voi-convert,
+  which was done with commit 0b36181. Now, these options should work again
+  as expected since the correct option names are checked.
+  Affects: dcmdata/apps/dcmconv.cc
+           dcmdata/apps/dcmdump.cc
+
+- Removed unused configure variable/definition:
+  Remove unused GNU Autoconf (aka "./configure") variable/definition
+  DCMTK_ENABLE_BUILTIN_DICTIONARY. Seems to be a leftover from a previous
+  implementation attempt that has not been committed.
+  Affects: config/Makefile.def.in
+           config/configure
+           config/configure.in
+
+**** Changes from 2017.01.02 (onken)
+
+- Fixed installation of DCMTKConfigVersion.cmake:
+  DCMTKConfigVersion.cmake has not been installed, thus leading to an error
+  when importing DCMTK through find_package() with a specified version from
+  other CMake-based projects.
+  Thanks to Waldir Pimenta<waldir.pimenta at gmail.com> for the report and
+  suggested patch.
+  Closes DCMTK Bug #708.
+  Affects: CMake/GenerateCMakeExports.cmake
+           CMakeLists.txt
+
+**** Changes from 2016.12.16 (eichelberg)
+
+- Fixed integer underflow condition:
+  Minor fix to avoid a (harmless) integer underflow reported by
+  clang with -fsanitize=integer.
+  Affects: dcmdata/libsrc/dcstack.cc
+
+**** Changes from 2016.12.14 (schlamelcher)
+
+- Added magic word and version checks to dcmqrdb:
+  All dcmqrdb applications will now prefix the index file with the magic word
+  'QRDB' followed by two hexadecimal version digits. Both will be verified
+  whenever an existing index file is opened for reading/modification.
+  Please note that index files with the same magic word and version might still
+  be binary incompatible with each other if they originate from different
+  platforms (e.g. with different endianness or alignment). This mechanism is
+  meant to catch cases where the index must be re-created due to dcmtk updates.
+  Don't forget to re-create your database indices using dcmqridx.
+  Affects: dcmqrdb/include/dcmtk/dcmqrdb/dcmqrdbi.h
+           dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h
+           dcmqrdb/libsrc/dcmqrdbi.cc
+
+**** Changes from 2016.12.13 (riesmeier)
+
+- Further fixes to source code formatting.
+  Affects: dcmdata/apps/dcm2json.cc
+
+- Various minor fixes to new "dcm2json" tool:
+  Various minor fixes to the new "dcm2json" tool regarding documentation,
+  source code formatting, etc.
+  Affects: dcmdata/apps/dcm2json.cc
+           dcmdata/docs/dcm2json.man
+
+**** Changes from 2016.12.13 (schlamelcher)
+
+- Fixed oflog character set conversion defines.
+  Affects: oflog/include/dcmtk/oflog/config/defines.h
+
+- Fixed dcm2json when compiling as shared libraries.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcjson.h
+
+**** Changes from 2016.12.12 (schlamelcher)
+
+- Fixed a comment in OFCharacterEncoding:
+  A recently added comment for the iconv specific OFCharacterEncoding
+  implementation was (falsely) referring to the ICU.
+  Affects: ofstd/libsrc/ofchrenc.cc
+
+**** Changes from 2016.12.12 (grallert)
+
+- Added support for the DICOM JSON Model (part 18 F):
+  Introduced new DICOM to JSON converter that can be utilized to implement
+  web applications. JSON to DICOM conversion is currently not implemented.
+  Added:   dcmdata/apps/dcm2json.cc
+           dcmdata/docs/dcm2json.man
+           dcmdata/include/dcmtk/dcmdata/dcjson.h
+           dcmdata/libsrc/dcjson.cc
+  Affects: dcmdata/apps/CMakeLists.txt
+           dcmdata/apps/Makefile.in
+           dcmdata/docs/dcmdata.dox
+           dcmdata/include/dcmtk/dcmdata/dcbytstr.h
+           dcmdata/include/dcmtk/dcmdata/dcchrstr.h
+           dcmdata/include/dcmtk/dcmdata/dcdatset.h
+           dcmdata/include/dcmtk/dcmdata/dcelem.h
+           dcmdata/include/dcmtk/dcmdata/dcerror.h
+           dcmdata/include/dcmtk/dcmdata/dcfilefo.h
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/include/dcmtk/dcmdata/dcmetinf.h
+           dcmdata/include/dcmtk/dcmdata/dcobject.h
+           dcmdata/include/dcmtk/dcmdata/dcsequen.h
+           dcmdata/include/dcmtk/dcmdata/dcvrat.h
+           dcmdata/include/dcmtk/dcmdata/dcvrds.h
+           dcmdata/include/dcmtk/dcmdata/dcvris.h
+           dcmdata/include/dcmtk/dcmdata/dcvrlo.h
+           dcmdata/include/dcmtk/dcmdata/dcvrobow.h
+           dcmdata/include/dcmtk/dcmdata/dcvrod.h
+           dcmdata/include/dcmtk/dcmdata/dcvrof.h
+           dcmdata/include/dcmtk/dcmdata/dcvrol.h
+           dcmdata/include/dcmtk/dcmdata/dcvrpn.h
+           dcmdata/include/dcmtk/dcmdata/dcvrsh.h
+           dcmdata/libsrc/CMakeLists.txt
+           dcmdata/libsrc/Makefile.in
+           dcmdata/libsrc/dcbytstr.cc
+           dcmdata/libsrc/dcchrstr.cc
+           dcmdata/libsrc/dcdatset.cc
+           dcmdata/libsrc/dcelem.cc
+           dcmdata/libsrc/dcfilefo.cc
+           dcmdata/libsrc/dcitem.cc
+           dcmdata/libsrc/dcmetinf.cc
+           dcmdata/libsrc/dcobject.cc
+           dcmdata/libsrc/dcsequen.cc
+           dcmdata/libsrc/dcvrat.cc
+           dcmdata/libsrc/dcvrds.cc
+           dcmdata/libsrc/dcvris.cc
+           dcmdata/libsrc/dcvrlo.cc
+           dcmdata/libsrc/dcvrobow.cc
+           dcmdata/libsrc/dcvrod.cc
+           dcmdata/libsrc/dcvrof.cc
+           dcmdata/libsrc/dcvrol.cc
+           dcmdata/libsrc/dcvrpn.cc
+           dcmdata/libsrc/dcvrsh.cc
+
+**** Changes from 2016.12.09 (riesmeier)
+
+- Avoid compiler warning on unused parameter:
+  Avoid compiler warning on unused parameter, e.g. when compiling with gcc
+  -Wextra. Also the read and write item methods return EC_NotYetImplemented
+  instead of EC_Normal since no real content is ever read or written.
+  Closes DCMTK Bug #705.
+  Affects: dcmrt/libsrc/drtmas.cc
+
+**** Changes from 2016.12.08 (riesmeier)
+
+- Added comments on ICU conversions flags:
+  Added comments that ICU also supports other "conversions flags" and that
+  the (currently, very basic) implementation might be enhanced in the future.
+  Affects: ofstd/libsrc/ofchrenc.cc
+
+- Fixed wrong check on GLIBC macro:
+  Instead of "__GLIBC__" the macro "__GLIBC_" was checked, i.e. one trailing
+  underscore character was missing.
+  Affects: ofstd/libsrc/ofchrenc.cc
+
+**** Changes from 2016.12.07 (riesmeier)
+
+- Added missing period at the end of descriptions:
+  Added missing period at the end of some CMake variable/option descriptions
+  (for reasons of consistency).
+  Affects: CMake/GenerateDCMTKConfigure.cmake
+           CMake/dcmtkPrepare.cmake
+
+- Renamed isAvailable() and getVersionString():
+  Renamed the methods isAvailable() and getVersionString() back to their
+  original names, i.e. as they have been before the "refactoring". Now,
+  it is more consistent with other "libraries" used (e.g. "IJG" for JPEG)
+  and also easier to understand for a user of the API.
+  Affects: dcmdata/apps/dcm2xml.cc
+           dcmdata/apps/dcmconv.cc
+           dcmdata/apps/dcmdump.cc
+           dcmdata/libsrc/dcspchrs.cc
+           dcmsr/apps/dsr2html.cc
+           dcmsr/apps/dsr2xml.cc
+           dcmsr/apps/dsrdump.cc
+           ofstd/include/dcmtk/ofstd/ofchrenc.h
+           ofstd/libsrc/ofchrenc.cc
+           ofstd/tests/tchrenc.cc
+
+- Fixed source code formatting (where appropriate):
+  Fixed source code formatting after the character set conversion classes have
+  been "refactored". Now, the formatting should be (a little) more consistenti
+  than before.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcspchrs.h
+           dcmdata/libsrc/dcdirrec.cc
+           dcmdata/libsrc/dcitem.cc
+           dcmdata/libsrc/dcspchrs.cc
+           ofstd/libsrc/ofchrenc.cc
+
+- Updated note on character set conversion options:
+  Updated note on the character set conversion options: Now, this conversion
+  does not only rely on "libiconv". The available character encoding library
+  is shown in the output of --version.
+  Affects: dcmdata/docs/dcm2xml.man
+           dcmdata/docs/dcmconv.man
+           dcmdata/docs/dcmdump.man
+           dcmsr/docs/dsr2html.man
+           dcmsr/docs/dsr2xml.man
+           dcmsr/docs/dsrdump.man
+
+- Fixed various documentation issues:
+  Fixed various documentation and Doxygen-related issues that were introduced
+  with the "refactoring" of the character set conversion classes.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcspchrs.h
+           ofstd/include/dcmtk/ofstd/ofchrenc.h
+
+**** Changes from 2016.12.07 (schlamelcher)
+
+- Several fixes regarding character set conversion:
+  Fixed building with enabled C++11 support.
+  Fixed the code to suppress unnecessary warnings about TheImplementation being
+  in the wrong #if - #else - #endif segment.
+  Fixed building with iconv from another C standard library than the GNU one.
+  Renamed some macros/settings to reflect above changes (gnuc -> stdlibc etc.).
+  Affects: CMake/3rdparty.cmake
+           CMake/GenerateDCMTKConfigure.cmake
+           CMake/osconfig.h.in
+           config/configure
+           config/configure.in
+           config/include/dcmtk/config/osconfig.h.in
+           dcmdata/libsrc/dcspchrs.cc
+           ofstd/libsrc/ofchrenc.cc
+
+**** Changes from 2016.12.06 (riesmeier)
+
+- Changed the way an unused parameter is treated:
+  Now, the approach is identical to a similar notifyXXX() method.
+  Affects: dcmnet/libsrc/dstorscu.cc
+
+**** Changes from 2016.12.06 (grallert)
+
+- Fixed suppressing overflow warnings with Clang:
+  Changed -Woverflow to -Winteger-overflow. The -Woverflow flag exists for GCC
+  compatibility only and has no effect for Clang.
+  Affects: ofstd/include/dcmtk/ofstd/diag/overflow.def
+
+**** Changes from 2016.12.06 (schlamelcher)
+
+- Refactored character set conversion classes:
+  Refactored character set conversion to support additional implementations,
+  currently also the International Components for Unicode (ICU) and the ICONV
+  implementation builtin the GNU C library are also supported, in addition to
+  the already supported external ICONV library.
+  Added:   CMake/FindICU.cmake
+  Affects: CMake/3rdparty.cmake
+           CMake/GenerateDCMTKConfigure.cmake
+           CMake/dcmtkPrepare.cmake
+           CMake/osconfig.h.in
+           config/Makefile.def.in
+           config/configure
+           config/configure.in
+           config/include/dcmtk/config/osconfig.h.in
+           dcmdata/apps/Makefile.in
+           dcmdata/apps/dcm2xml.cc
+           dcmdata/apps/dcmconv.cc
+           dcmdata/apps/dcmdump.cc
+           dcmdata/include/dcmtk/dcmdata/dcspchrs.h
+           dcmdata/libsrc/Makefile.in
+           dcmdata/libsrc/dcdirrec.cc
+           dcmdata/libsrc/dcitem.cc
+           dcmdata/libsrc/dcspchrs.cc
+           dcmdata/tests/Makefile.in
+           dcmdata/tests/tspchrs.cc
+           dcmimage/apps/Makefile.in
+           dcmimgle/apps/Makefile.in
+           dcmiod/tests/Makefile.in
+           dcmjpeg/apps/Makefile.in
+           dcmjpls/apps/Makefile.in
+           dcmnet/apps/Makefile.in
+           dcmnet/tests/Makefile.in
+           dcmpstat/apps/Makefile.in
+           dcmpstat/tests/Makefile.in
+           dcmqrdb/apps/Makefile.in
+           dcmrt/apps/Makefile.in
+           dcmrt/tests/Makefile.in
+           dcmseg/tests/Makefile.in
+           dcmsign/apps/Makefile.in
+           dcmsr/apps/Makefile.in
+           dcmsr/apps/dsr2html.cc
+           dcmsr/apps/dsr2xml.cc
+           dcmsr/apps/dsrdump.cc
+           dcmsr/tests/Makefile.in
+           dcmwlm/apps/Makefile.in
+           dcmwlm/tests/Makefile.in
+           ofstd/include/dcmtk/ofstd/ofchrenc.h
+           ofstd/libsrc/CMakeLists.txt
+           ofstd/libsrc/ofchrenc.cc
+           ofstd/libsrc/ofconapp.cc
+           ofstd/tests/Makefile.in
+           ofstd/tests/tchrenc.cc
+
+**** Changes from 2016.12.01 (riesmeier)
+
+- Added (missing) comments.
+  Affects: dcmimgle/include/dcmtk/dcmimgle/dimoopxt.h
+
+**** Changes from 2016.11.30 (riesmeier)
+
+- Limit number of entries in optimization LUT:
+  Made sure that the number of look-up table entries used internally for
+  the optimized pixel data processing does not exceed a certain limit.
+  Especially, made sure that there is no numeric oveflow, which resulted
+  in a segmentation fault on 32-bit systems when processing DICOM images
+  with high bit depth (e.g. Bits Allocated / Stored = 32).
+  Thanks to John Stark <jstark at therapixel.com> for the original report.
+  Closes DCMTK Bug #696.
+  Affects: dcmimgle/include/dcmtk/dcmimgle/diinpxt.h
+           dcmimgle/include/dcmtk/dcmimgle/dimoopxt.h
+
+**** Changes from 2016.11.29 (riesmeier)
+
+- Added missing API documentation (Doxygen):
+  Added missing API documentation for Doxygen, e.g. undocumented parameters
+  or return values.
+  Affects: oflog/include/dcmtk/oflog/oflog.h
+
+**** Changes from 2016.11.28 (riesmeier)
+
+- Added "Simplified Adult Echo SR" to ReportType.
+  Affects: dcmsr/data/dsr2xml.xsd
+
+- Added missing character sets to XML Schema:
+  Added various Asian character sets to the XML Schema. Support for these
+  character sets was added to the C++ implementation some time ago but the
+  XML Schema was - apparently - not updated.
+  Affects: dcmsr/data/dsr2xml.xsd
+
+- Added tests for "new" Chinese characters sets:
+  Added tests for Chinese character sets that were introduced with CP-1234:
+  GB 2312 (also known as ISO-2022-CN) and GBK (a subset of GB 18030).
+  Currently, it is only checked whether the associated Defined Terms for
+  the Specific Character Set attribute are really supported.
+  Affects: dcmdata/tests/tspchrs.cc
+
+- Added missing API documentation for Doxygen:
+  Added missing API documentation for Doxygen, e.g. undocumented parameters
+  or return values. Also fixed some typos in comments.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcbytstr.h
+           dcmdata/include/dcmtk/dcmdata/dccodec.h
+           dcmdata/include/dcmtk/dcmdata/dcdatset.h
+           dcmdata/include/dcmtk/dcmdata/dcddirif.h
+           dcmdata/include/dcmtk/dcmdata/dcelem.h
+           dcmdata/include/dcmtk/dcmdata/dcfilefo.h
+           dcmdata/include/dcmtk/dcmdata/dcmetinf.h
+           dcmdata/include/dcmtk/dcmdata/dcobject.h
+           dcmdata/include/dcmtk/dcmdata/dcovlay.h
+           dcmdata/include/dcmtk/dcmdata/dcpixseq.h
+           dcmdata/include/dcmtk/dcmdata/dcpxitem.h
+           dcmdata/include/dcmtk/dcmdata/dcsequen.h
+           dcmdata/include/dcmtk/dcmdata/dcvr.h
+           dcmdata/include/dcmtk/dcmdata/dcvrpobw.h
+           dcmdata/include/dcmtk/dcmdata/dcvruc.h
+           dcmdata/include/dcmtk/dcmdata/dcvrulup.h
+           dcmdata/include/dcmtk/dcmdata/dcvrur.h
+           dcmdata/include/dcmtk/dcmdata/dcvrut.h
+
+- Replaced boolean modes in convertCharacterSet():
+  Replaced boolean parameters "transliterate" and "discardIllegal" of the
+  convertCharacterSet() methods by a single "flags" parameter (as it is
+  used for other similar methods in the various "dcmdata" classes). This
+  allows for adding further "modes" in the future without changing the
+  signature of the character set conversion methods.
+  Closes DCMTK Feature #579.
+  Affects: dcmdata/apps/dcmconv.cc
+           dcmdata/include/dcmtk/dcmdata/dcdirrec.h
+           dcmdata/include/dcmtk/dcmdata/dcfilefo.h
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/include/dcmtk/dcmdata/dctypes.h
+           dcmdata/libsrc/dcdirrec.cc
+           dcmdata/libsrc/dcfilefo.cc
+           dcmdata/libsrc/dcitem.cc
+           dcmdata/libsrc/dctypes.cc
+
+**** Changes from 2016.11.25 (riesmeier)
+
+- Check return value of write() to avoid warning:
+  Added check on return value of write() function in order to avoid a warning
+  message reported by gcc (on some systems with certain flags, e.g. Ubuntu).
+  This finally closes DCMTK Bug #379.
+  Affects: dcmqrdb/libsrc/dcmqrdbi.cc
+
+- Check return value of fgets() to avoid warnings:
+  Added check on return value of fgets() function in order to avoid warning
+  messages reported by gcc (on some systems with certain flags, e.g. Ubuntu).
+  Also fixed various typos in log messages and comments.
+  This partly closes DCMTK Bug #379.
+  Affects: dcmqrdb/libsrc/dcmqrcnf.cc
+
+**** Changes from 2016.11.25 (eichelberg)
+
+- Use fseek() instead of rewind() on Win32/Cygwin:
+  On Win32 and Cygwin systems, rewind() fails if the file is read-only
+  and was read to EOF before the call to rewind(). Now using fseek()
+  instead in OFFile::rewind().
+  This fixes bug #378.
+  Affects: ofstd/include/dcmtk/ofstd/offile.h
+
+- Increased buffer sizes to avoid buffer overflows:
+  Increased buffer sizes to size of input string avoid possible buffer
+  overflows caused by calls to sscanf with %s parameter.
+  This closes bug #376.
+  Affects: dcmqrdb/libsrc/dcmqrcnf.cc
+           dcmqrdb/libsrc/dcmqrtis.cc
+
+- Minor change needed to compile on Cygwin 2.6.0.
+  Affects: ofstd/libsrc/ofstd.cc
+
+**** Changes from 2016.11.24 (eichelberg)
+
+- Fixed signed/unsigned comparison in dcmqrdb module:
+  Fixed signed/unsigned comparison in dcmqrdb module.
+  WARNING: This change affects the binary format of the index.dat file,
+  although only very large images > 2 GB are affected by the change.
+  Affects: dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h
+
+- Documented new movescu return codes in man page.
+  Affects: dcmnet/docs/movescu.man
+
+- movescu now returns non-zero if c-move was unsuccessful:
+  The movescu command line application now returns non-zero if the
+  status of one or more c-move responses is warning or error and also
+  prints a warning message to the logger. This simplifies the use of the
+  tool in shell scripts, which can check for the return code.
+  This closes feature request #652.
+  Affects: dcmnet/apps/movescu.cc
+
+**** Changes from 2016.11.23 (schlamelcher)
+
+- Fixed an OFnumeric_limits problem regarding C++11:
+  The previous fix for OFnumeric_limits did not consider the availability of
+  C++11's std::numeric_limits, leading to name clashes if C++11 support was
+  enabled.
+  Affects: ofstd/libsrc/oflimits.cc
+
+**** Changes from 2016.11.23 (riesmeier)
+
+- Updated "dcmrt" classes based on DICOM 2016e:
+  Updated automatically generated IOD and sequence C++ classes for the various
+  RT objects based on the current edition of the DICOM standard (2016e). There
+  were only very few changes.
+  Affects: dcmrt/include/dcmtk/dcmrt/drtdose.h
+           dcmrt/include/dcmtk/dcmrt/drtimage.h
+           dcmrt/include/dcmtk/dcmrt/drtionpl.h
+           dcmrt/include/dcmtk/dcmrt/drtiontr.h
+           dcmrt/include/dcmtk/dcmrt/drtplan.h
+           dcmrt/include/dcmtk/dcmrt/drtstrct.h
+           dcmrt/include/dcmtk/dcmrt/drttreat.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtads.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtags.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtass.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbads.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtccs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtces.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtchs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtddps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drteas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtes.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfes.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtgas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiais.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtians.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtibls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtibs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drticpds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drticps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtircs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtitts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtoas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtois.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtras.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrims.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrses.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtscris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtshds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsins.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsns.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttms0.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttms9.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttscds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtudis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtvls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h
+           dcmrt/libsrc/drtaadcs.cc
+           dcmrt/libsrc/drtadcs.cc
+           dcmrt/libsrc/drtads.cc
+           dcmrt/libsrc/drtafs.cc
+           dcmrt/libsrc/drtags.cc
+           dcmrt/libsrc/drtajcs.cc
+           dcmrt/libsrc/drtas1.cc
+           dcmrt/libsrc/drtas5.cc
+           dcmrt/libsrc/drtas6.cc
+           dcmrt/libsrc/drtas7.cc
+           dcmrt/libsrc/drtass.cc
+           dcmrt/libsrc/drtbads.cc
+           dcmrt/libsrc/drtbas.cc
+           dcmrt/libsrc/drtbcps.cc
+           dcmrt/libsrc/drtbl2.cc
+           dcmrt/libsrc/drtbl5.cc
+           dcmrt/libsrc/drtbldls.cc
+           dcmrt/libsrc/drtbldps.cc
+           dcmrt/libsrc/drtblds1.cc
+           dcmrt/libsrc/drtblds5.cc
+           dcmrt/libsrc/drtblds6.cc
+           dcmrt/libsrc/drtbldts.cc
+           dcmrt/libsrc/drtbrcss.cc
+           dcmrt/libsrc/drtbrdrs.cc
+           dcmrt/libsrc/drtbrs.cc
+           dcmrt/libsrc/drtbs.cc
+           dcmrt/libsrc/drtbss.cc
+           dcmrt/libsrc/drtbvcps.cc
+           dcmrt/libsrc/drtcbars.cc
+           dcmrt/libsrc/drtccs.cc
+           dcmrt/libsrc/drtcctus.cc
+           dcmrt/libsrc/drtcdrs.cc
+           dcmrt/libsrc/drtces.cc
+           dcmrt/libsrc/drtcgis.cc
+           dcmrt/libsrc/drtchs.cc
+           dcmrt/libsrc/drtcims.cc
+           dcmrt/libsrc/drtcis.cc
+           dcmrt/libsrc/drtcncs.cc
+           dcmrt/libsrc/drtcos.cc
+           dcmrt/libsrc/drtcpas.cc
+           dcmrt/libsrc/drtcpis.cc
+           dcmrt/libsrc/drtcps.cc
+           dcmrt/libsrc/drtcs.cc
+           dcmrt/libsrc/drtcsas.cc
+           dcmrt/libsrc/drtcshs.cc
+           dcmrt/libsrc/drtcsis.cc
+           dcmrt/libsrc/drtcss.cc
+           dcmrt/libsrc/drtdcs.cc
+           dcmrt/libsrc/drtdddps.cc
+           dcmrt/libsrc/drtddps.cc
+           dcmrt/libsrc/drtdias.cc
+           dcmrt/libsrc/drtdimcs.cc
+           dcmrt/libsrc/drtdimrs.cc
+           dcmrt/libsrc/drtdirs.cc
+           dcmrt/libsrc/drtdose.cc
+           dcmrt/libsrc/drtdrs.cc
+           dcmrt/libsrc/drtds.cc
+           dcmrt/libsrc/drtdspcs.cc
+           dcmrt/libsrc/drtdss.cc
+           dcmrt/libsrc/drtdvhs.cc
+           dcmrt/libsrc/drtdvrrs.cc
+           dcmrt/libsrc/drteas.cc
+           dcmrt/libsrc/drtecs.cc
+           dcmrt/libsrc/drtes.cc
+           dcmrt/libsrc/drtfds.cc
+           dcmrt/libsrc/drtfes.cc
+           dcmrt/libsrc/drtfgs.cc
+           dcmrt/libsrc/drtfgss.cc
+           dcmrt/libsrc/drtfms.cc
+           dcmrt/libsrc/drtfsss.cc
+           dcmrt/libsrc/drtgas.cc
+           dcmrt/libsrc/drtgpis.cc
+           dcmrt/libsrc/drthsdrs.cc
+           dcmrt/libsrc/drtiais.cc
+           dcmrt/libsrc/drtians.cc
+           dcmrt/libsrc/drtiblds.cc
+           dcmrt/libsrc/drtibls.cc
+           dcmrt/libsrc/drtibs.cc
+           dcmrt/libsrc/drticpds.cc
+           dcmrt/libsrc/drticps.cc
+           dcmrt/libsrc/drtics.cc
+           dcmrt/libsrc/drtiis.cc
+           dcmrt/libsrc/drtimage.cc
+           dcmrt/libsrc/drtionpl.cc
+           dcmrt/libsrc/drtiontr.cc
+           dcmrt/libsrc/drtipiqs.cc
+           dcmrt/libsrc/drtircs.cc
+           dcmrt/libsrc/drtiseis.cc
+           dcmrt/libsrc/drtitts.cc
+           dcmrt/libsrc/drtiwps.cc
+           dcmrt/libsrc/drtiws.cc
+           dcmrt/libsrc/drtlsds.cc
+           dcmrt/libsrc/drtlsds6.cc
+           dcmrt/libsrc/drtlsds7.cc
+           dcmrt/libsrc/drtmacds.cc
+           dcmrt/libsrc/drtmas.cc
+           dcmrt/libsrc/drtmdrs.cc
+           dcmrt/libsrc/drtmls.cc
+           dcmrt/libsrc/drtmps.cc
+           dcmrt/libsrc/drtmris.cc
+           dcmrt/libsrc/drtmss.cc
+           dcmrt/libsrc/drtmucs.cc
+           dcmrt/libsrc/drtoas.cc
+           dcmrt/libsrc/drtois.cc
+           dcmrt/libsrc/drtopis.cc
+           dcmrt/libsrc/drtos.cc
+           dcmrt/libsrc/drtpbcs.cc
+           dcmrt/libsrc/drtpcs.cc
+           dcmrt/libsrc/drtpcxs.cc
+           dcmrt/libsrc/drtpdecs.cc
+           dcmrt/libsrc/drtpdeds.cc
+           dcmrt/libsrc/drtpfms.cc
+           dcmrt/libsrc/drtpics.cc
+           dcmrt/libsrc/drtplan.cc
+           dcmrt/libsrc/drtporcs.cc
+           dcmrt/libsrc/drtporis.cc
+           dcmrt/libsrc/drtppcs.cc
+           dcmrt/libsrc/drtprsis.cc
+           dcmrt/libsrc/drtpscs.cc
+           dcmrt/libsrc/drtpsics.cc
+           dcmrt/libsrc/drtpss.cc
+           dcmrt/libsrc/drtpsss.cc
+           dcmrt/libsrc/drtpvis.cc
+           dcmrt/libsrc/drtqds.cc
+           dcmrt/libsrc/drtras.cc
+           dcmrt/libsrc/drtrbas2.cc
+           dcmrt/libsrc/drtrbas8.cc
+           dcmrt/libsrc/drtrbls.cc
+           dcmrt/libsrc/drtrbos1.cc
+           dcmrt/libsrc/drtrbos6.cc
+           dcmrt/libsrc/drtrbos7.cc
+           dcmrt/libsrc/drtrbs2.cc
+           dcmrt/libsrc/drtrbs4.cc
+           dcmrt/libsrc/drtrbs8.cc
+           dcmrt/libsrc/drtrcdrs.cc
+           dcmrt/libsrc/drtrcos.cc
+           dcmrt/libsrc/drtrcps.cc
+           dcmrt/libsrc/drtrcs.cc
+           dcmrt/libsrc/drtrdros.cc
+           dcmrt/libsrc/drtrdrs1.cc
+           dcmrt/libsrc/drtrdrs6.cc
+           dcmrt/libsrc/drtrdrs8.cc
+           dcmrt/libsrc/drtrds.cc
+           dcmrt/libsrc/drtrecs.cc
+           dcmrt/libsrc/drtrfgs.cc
+           dcmrt/libsrc/drtrfors.cc
+           dcmrt/libsrc/drtrics.cc
+           dcmrt/libsrc/drtrims.cc
+           dcmrt/libsrc/drtris.cc
+           dcmrt/libsrc/drtrlsds.cc
+           dcmrt/libsrc/drtrmdrs.cc
+           dcmrt/libsrc/drtrms.cc
+           dcmrt/libsrc/drtrmss6.cc
+           dcmrt/libsrc/drtrmss7.cc
+           dcmrt/libsrc/drtrpcs.cc
+           dcmrt/libsrc/drtrpis.cc
+           dcmrt/libsrc/drtrppcs.cc
+           dcmrt/libsrc/drtrpphs.cc
+           dcmrt/libsrc/drtrpps.cc
+           dcmrt/libsrc/drtrppss.cc
+           dcmrt/libsrc/drtrps.cc
+           dcmrt/libsrc/drtrris1.cc
+           dcmrt/libsrc/drtrris6.cc
+           dcmrt/libsrc/drtrris9.cc
+           dcmrt/libsrc/drtrrms.cc
+           dcmrt/libsrc/drtrros.cc
+           dcmrt/libsrc/drtrrpcs.cc
+           dcmrt/libsrc/drtrrros.cc
+           dcmrt/libsrc/drtrrs.cc
+           dcmrt/libsrc/drtrrshs.cc
+           dcmrt/libsrc/drtrrtps.cc
+           dcmrt/libsrc/drtrrtps3.cc
+           dcmrt/libsrc/drtrrtps4.cc
+           dcmrt/libsrc/drtrrtps5.cc
+           dcmrt/libsrc/drtrscs.cc
+           dcmrt/libsrc/drtrsers.cc
+           dcmrt/libsrc/drtrses.cc
+           dcmrt/libsrc/drtrshs.cc
+           dcmrt/libsrc/drtrshs6.cc
+           dcmrt/libsrc/drtrshs7.cc
+           dcmrt/libsrc/drtrsis.cc
+           dcmrt/libsrc/drtrsns.cc
+           dcmrt/libsrc/drtrsos.cc
+           dcmrt/libsrc/drtrsrs.cc
+           dcmrt/libsrc/drtrss.cc
+           dcmrt/libsrc/drtrsss.cc
+           dcmrt/libsrc/drtrsts.cc
+           dcmrt/libsrc/drtrtrs2.cc
+           dcmrt/libsrc/drtrtrs4.cc
+           dcmrt/libsrc/drtrvis.cc
+           dcmrt/libsrc/drtrws.cc
+           dcmrt/libsrc/drtrwvms.cc
+           dcmrt/libsrc/drtscris.cc
+           dcmrt/libsrc/drtscs.cc
+           dcmrt/libsrc/drtsdcs.cc
+           dcmrt/libsrc/drtsds.cc
+           dcmrt/libsrc/drtshds.cc
+           dcmrt/libsrc/drtsins.cc
+           dcmrt/libsrc/drtsis.cc
+           dcmrt/libsrc/drtsns.cc
+           dcmrt/libsrc/drtspccs.cc
+           dcmrt/libsrc/drtspcs.cc
+           dcmrt/libsrc/drtspgis.cc
+           dcmrt/libsrc/drtsptcs.cc
+           dcmrt/libsrc/drtss.cc
+           dcmrt/libsrc/drtssrcs.cc
+           dcmrt/libsrc/drtssrs.cc
+           dcmrt/libsrc/drtsss.cc
+           dcmrt/libsrc/drtstrct.cc
+           dcmrt/libsrc/drttms0.cc
+           dcmrt/libsrc/drttms9.cc
+           dcmrt/libsrc/drttreat.cc
+           dcmrt/libsrc/drttscds.cc
+           dcmrt/libsrc/drttsibs.cc
+           dcmrt/libsrc/drttsmds.cc
+           dcmrt/libsrc/drttts.cc
+           dcmrt/libsrc/drtudis.cc
+           dcmrt/libsrc/drtvls.cc
+           dcmrt/libsrc/drtwps.cc
+           dcmrt/libsrc/drtwrs.cc
+           dcmrt/libsrc/drtwrsrs.cc
+           dcmrt/libsrc/drtws.cc
+           dcmrt/libsrc/drtxrs.cc
+
+- Updated Context Group classes for DICOM 2016e:
+  Updated automatically generated Context Group classes for the 2016e
+  edition of the DICOM standard. There were only changes to CID 7181
+  and 7469.
+  Affects: 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/cid244.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/libcmr/cid100.cc
+           dcmsr/libcmr/cid10013.cc
+           dcmsr/libcmr/cid10033.cc
+           dcmsr/libcmr/cid11.cc
+           dcmsr/libcmr/cid244.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
+
+- Added comments on transfer syntax name changes:
+  With DICOM 2016e, the official names of the MPEG2 transfer syntaxes changed.
+  Added a comment to both the corresponding UID and "Xfer names" definitions.
+  However, the constants and defines have not been changed because of backward
+  compatibility.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcxfer.cc
+
+- Now use code constant CODE_DCM_PulseSequenceName.
+  Affects: dcmsr/libcmr/tid1600.cc
+
+- Updated code definitions for DICOM 2016e:
+  Updated automatically generated code definitions for coding scheme "DCM",
+  "NCIt" and "UMLS" for the 2016e edition of the DICOM standard. For the
+  two latter ones, there were no changes.
+  Affects: dcmsr/include/dcmtk/dcmsr/codes/dcm.h
+           dcmsr/include/dcmtk/dcmsr/codes/ncit.h
+           dcmsr/include/dcmtk/dcmsr/codes/umls.h
+
+- Updated data dictionary for DICOM 2016e:
+  Updated data dictionary for the latest edition of the DICOM standard, which
+  has been released on 2016-11-21. Since DCMTK's data dictionary was already
+  up-to-date regarding the recently approved Supplements and CPs, there are no
+  changes apart from the "Version" column.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+- Removed additional library dependencies:
+  Removed additional library dependencies from "libsrc/CMakeLists.txt" files
+  that are not needed since these dependencies are already specified by other
+  linked libraries (using the CMake macro "DCMTK_TARGET_LINK_LIBRARIES").
+  Affects: dcmiod/libsrc/CMakeLists.txt
+           dcmpmap/libsrc/CMakeLists.txt
+           dcmseg/libsrc/CMakeLists.txt
+           dcmtract/libsrc/CMakeLists.txt
+           oflog/libsrc/CMakeLists.txt
+
+**** Changes from 2016.11.23 (eichelberg)
+
+- Added legal remark concerning HP's JPEG-LS patents:
+  Added legal remark to dcmjpls documentation concerning HP's JPEG-LS
+  patents and the possibility to receive a free license from HP.
+  This closes #377.
+  Affects: dcmjpls/docs/License.txt
+           dcmjpls/docs/dcmjpls.dox
+
+- Improved 8/12/16 bit JPEG code consistency:
+  Minor edits to keep data structures and variable names in the 8, 12
+  and 16 bit versions of the JPEG codec more consistent.
+  This closes bug #654.
+  Affects: dcmjpeg/libijg12/jdmarker.c
+           dcmjpeg/libijg12/jpeglib12.h
+           dcmjpeg/libijg16/jpeglib16.h
+           dcmjpeg/libijg8/jpeglib8.h
+
+- JPEG decoder now decompresses incomplete bitstreams:
+  Added codec flag and command line option in dcmdjpeg to permit
+  decompression of faulty images with incomplete JPEG bitstreams.
+  Instead of trying to read more JPEG data from the next fragment,
+  the decoder simply skips to the next frame when activated.
+  This closes bug #571.
+  Affects: dcmjpeg/apps/dcmdjpeg.cc
+           dcmjpeg/docs/dcmdjpeg.man
+           dcmjpeg/include/dcmtk/dcmjpeg/djcparam.h
+           dcmjpeg/include/dcmtk/dcmjpeg/djdecode.h
+           dcmjpeg/libsrc/djcodecd.cc
+           dcmjpeg/libsrc/djcparam.cc
+           dcmjpeg/libsrc/djdecode.cc
+           dcmjpeg/libsrc/djencode.cc
+
+**** Changes from 2016.11.22 (riesmeier)
+
+- Fixed issue with option "--display-overlay 0":
+  Using option "--display-overlay 0" (or "+O 0") did not work because of a
+  too strict range check. This issue was apparently not found in the past
+  since this option is actually the default (i.e. show all overlay planes).
+  Affects: dcmimage/apps/dcm2pnm.cc
+
+- Rebuilt Makefile dependencies.
+  Affects: ofstd/libsrc/Makefile.dep
+           ofstd/tests/Makefile.dep
+
+- Re-added tab characters removed by last commit.
+  Affects: ofstd/libsrc/Makefile.in
+
+**** Changes from 2016.11.21 (hasenpusch)
+
+- Fixed OFSemaphore for macOS:
+  The OFSemaphore class on macOS now uses Apple's dispatch framework as it
+  contains the only functional unnamed semaphore implementation.
+  The OFThread tests now all succeed.
+  This fixes DCMTK bug #382.
+  Affects: ofstd/include/dcmtk/ofstd/ofthread.h
+           ofstd/libsrc/ofthread.cc
+           ofstd/tests/tthread.cc
+
+**** Changes from 2016.11.21 (schlamelcher)
+
+- Suppressed warnings in OFThread's unit test:
+  Suppressed inappropriate warnings about parameter name shadowing, see docu-
+  mentation of the employed macro.
+  Affects: ofstd/tests/tthread.cc
+
+- Suppressed silly Visual Studio warnings in OFvariant.
+  Affects: ofstd/include/dcmtk/ofstd/variadic/variant.h
+
+- Several fixes for OFnumeric_limits:
+  Fixed building with GCC using '-pedantic' by moving some definitions from the
+  header to the new source file oflimits.cc.
+  Suppressed type conversion warnings in the unit test that are also unneces-
+  sary, since they are about what is being tested there.
+  Added:   ofstd/libsrc/oflimits.cc
+  Affects: ofstd/include/dcmtk/ofstd/oflimits.h
+           ofstd/libsrc/CMakeLists.txt
+           ofstd/libsrc/Makefile.in
+           ofstd/tests/tlimits.cc
+
+- Added support for additional compiler diagnostics:
+  Introduced three new macros to ofdiag.h and added related definition files.
+  Enhanced documentation of ofdiag.h regarding supported compilers.
+  Added:   ofstd/include/dcmtk/ofstd/diag/cnvrsn.def
+           ofstd/include/dcmtk/ofstd/diag/shadow.def
+           ofstd/include/dcmtk/ofstd/diag/vsprfw.def
+  Affects: ofstd/include/dcmtk/ofstd/ofdiag.h
+
+**** Changes from 2016.11.18 (eichelberg)
+
+- Fixed empty pixel data bug in DcmPixelData::write():
+  Fixed bug in DcmPixelData::write() that caused an empty Pixel Data
+  element to be written when the caller tried to write a compressed
+  image in uncompressed transfer syntax without a prior call to
+  chooseRepresentation() or canWriteXfer(). Now an error is returned.
+  This closes bug #701.
+  Affects: dcmdata/libsrc/dcpixel.cc
+
+**** Changes from 2016.11.18 (schlamelcher)
+
+- Suppressed an inappropriate Visual Studio warning:
+  Suppressed an inappropriate Visual Studio warning about template specializa-
+  tion in dcmsr. The affected code is not about template specialization but in-
+  stead about static member initialization, the warning can therefore safely
+  be ignored.
+  Added:   ofstd/include/dcmtk/ofstd/diag/nsdfti.def
+  Affects: dcmsr/libsrc/dsrimgfr.cc
+           dcmsr/libsrc/dsrimgse.cc
+           dcmsr/libsrc/dsrsc3gr.cc
+           dcmsr/libsrc/dsrscogr.cc
+           dcmsr/libsrc/dsrtcodt.cc
+           dcmsr/libsrc/dsrtcosp.cc
+           dcmsr/libsrc/dsrtcoto.cc
+           dcmsr/libsrc/dsrwavch.cc
+           ofstd/include/dcmtk/ofstd/ofdiag.h
+
+**** Changes from 2016.11.18 (eichelberg)
+
+- JPEG encoder now writes SOF1 marker in 8-bit ext sequential TS:
+  The JPEG encoder now always writes a SOF1 marker when encoding pixel data
+  in the extended sequential transfer syntax with 8 bit/sample.
+  This implements support for DICOM CP 1447 and closes bug #620 and #663.
+  Affects: dcmjpeg/libijg8/jcapimin.c
+           dcmjpeg/libijg8/jcmarker.c
+           dcmjpeg/libijg8/jpeglib8.h
+           dcmjpeg/libsrc/djeijg8.cc
+
+**** Changes from 2016.11.18 (schlamelcher)
+
+- Added compiler version checks to ofdiag.h etc:
+  The compiler diagnostic macros now also check the compiler version and not
+  only the compiler itself to ensure the respective features are really avail-
+  able. This fixes problems regarding older versions of GCC.
+  Affects: ofstd/include/dcmtk/ofstd/diag/mmtag.def
+           ofstd/include/dcmtk/ofstd/diag/overflow.def
+           ofstd/include/dcmtk/ofstd/diag/piof.def
+           ofstd/include/dcmtk/ofstd/diag/pop.def
+           ofstd/include/dcmtk/ofstd/diag/push.def
+           ofstd/include/dcmtk/ofstd/diag/signcmp.def
+           ofstd/include/dcmtk/ofstd/ofdiag.h
+
+**** Changes from 2016.11.17 (riesmeier)
+
+- Fixed warning re. overloaded virtual function:
+  Fixed a compiler warning regarding an overloaded virtual function hiding the
+  print() method from the base class. Could be reproduced using gcc with option
+  -Woverloaded-virtual.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdoctr.cc
+
+**** Changes from 2016.11.17 (onken)
+
+- Avoid warning regarding hidden virtual method.
+  Affects: dcmiod/include/dcmtk/dcmiod/iodreferences.h
+
+**** Changes from 2016.11.17 (eichelberg)
+
+- Removed unnecessary call to getBaseTag().
+  Affects: dcmdata/libsrc/dcitem.cc
+
+**** Changes from 2016.11.16 (schlamelcher)
+
+- Added some missing files to the install steps:
+  Added the new files under dcmtk/ofstd/diag to the install steps for both
+  CMake and Autoconf.
+  Added docs/CHANGES.XXX to the install steps for both CMake and Autoconf.
+  Affects: CMakeLists.txt
+           Makefile
+           config/rootconf
+           ofstd/include/CMakeLists.txt
+           ofstd/include/Makefile.in
+
+**** Changes from 2016.11.16 (eichelberg)
+
+- Fixed minor formatting issues.
+  Affects: dcmdata/apps/dcmconv.cc
+           dcmdata/apps/dcmdump.cc
+           dcmdata/docs/dcmconv.man
+           dcmdata/docs/dcmdump.man
+           dcmdata/include/dcmtk/dcmdata/dcobject.h
+           dcmdata/libsrc/dcitem.cc
+
+- Added code for handling VOI LUT Sequences with OB/OW VR:
+  Added command line options for handling VOI LUT Sequence elements with
+  illegal OB/OW value representation (undefined and explicit length).
+  Affects: dcmdata/apps/dcmconv.cc
+           dcmdata/apps/dcmdump.cc
+           dcmdata/docs/dcmconv.man
+           dcmdata/docs/dcmdump.man
+
+- Added code for handling VOI LUT Sequences with OB/OW VR:
+  Added code for handling VOI LUT Sequence elements with illegal OB/OW
+  value representation. The occurance of such DICOM datasets in the
+  field, using OW and undefined length, was reported by Jörg Weinert in
+  October 2016.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcerror.h
+           dcmdata/include/dcmtk/dcmdata/dcobject.h
+           dcmdata/libsrc/dcerror.cc
+           dcmdata/libsrc/dcitem.cc
+           dcmdata/libsrc/dcobject.cc
+
+**** Changes from 2016.11.16 (riesmeier)
+
+- Fixed wrong reference to conventonal JPEG format.
+  Affects: dcmjpls/docs/dcmjpls.dox
+
+- Added note/warning on size of class instance:
+  Added a note (warning) that an instance of this class requires quite some
+  memory. So it is probably better to use the heap space (and not the stack).
+  Affects: dcmrt/include/dcmtk/dcmrt/drtdose.h
+           dcmrt/include/dcmtk/dcmrt/drtimage.h
+           dcmrt/include/dcmtk/dcmrt/drtionpl.h
+           dcmrt/include/dcmtk/dcmrt/drtiontr.h
+           dcmrt/include/dcmtk/dcmrt/drtplan.h
+           dcmrt/include/dcmtk/dcmrt/drtstrct.h
+           dcmrt/include/dcmtk/dcmrt/drttreat.h
+
+- Replaced non-ASCII character in comment header.
+  Affects: dcmiod/libsrc/cielabutil.cc
+
+- Fixed wrong identation with tab characters:
+  Fixed wrong identation with tab characters (mainly introduced with last
+  commit). Also changed outdated name of DCMTK module in the comment header
+  (was "dcmpstat", actually is "dcmtls").
+  Affects: dcmtls/tests/dcmtk_ca.pl
+
+- Replaced tab characters by spaces:
+  Replaced tab characters by spaces and removed trailing spaces (introduced
+  with the last commit).
+  Affects: dcmtls/libsrc/tlslayer.cc
+
+- Replaced non-ASCII characters:
+  Replaced Unicode characters by their corresponding ASCII representation
+  since the previous encoding resulted in a strange display of the HTML
+  Doxgen documentation (in a web browser). Also replaced "(c)" by "(C)"
+  where appropriate.
+  Affects: COPYRIGHT
+
+**** Changes from 2016.11.16 (onken)
+
+- Renamed min() to min2() (macro name clash):
+  Renamed the method min() to min2() since min() is also a macro on Windows
+  systems which can lead to a name clash in user code.
+  Affects: dcmiod/include/dcmtk/dcmiod/cielabutil.h
+           dcmiod/libsrc/cielabutil.cc
+
+**** Changes from 2016.11.16 (schlamelcher)
+
+- Adjusted a previous commit for older GCC versions.
+  Affects: ofstd/tests/tlimits.cc
+
+**** Changes from 2016.11.15 (schlamelcher)
+
+- Suppressed some unnecessary warnings:
+  Suppressed overflow warnings in OFnumeric_limits' unit test, since it is the
+  overflow behavior that is being tested there.
+  Suppressed Clang warnings about mixing struct/class keywords in the pre C++11
+  implementation of OFtuple since mixing those keywords has no drawbacks and
+  allows writing more compact code.
+  Affects: ofstd/include/dcmtk/ofstd/oftuple.h
+           ofstd/tests/tlimits.cc
+
+- Added macros for controlling compiler diagnostics:
+  Introduced platform independent macros for controlling compiler diagnostic
+  output i.e. warning messages.
+  Added:   ofstd/include/dcmtk/ofstd/diag/mmtag.def
+           ofstd/include/dcmtk/ofstd/diag/overflow.def
+           ofstd/include/dcmtk/ofstd/diag/piof.def
+           ofstd/include/dcmtk/ofstd/diag/pop.def
+           ofstd/include/dcmtk/ofstd/diag/push.def
+           ofstd/include/dcmtk/ofstd/diag/signcmp.def
+           ofstd/include/dcmtk/ofstd/ofdiag.h
+
+**** Changes from 2016.11.14 (riesmeier)
+
+- Added support for new SR IOD from Supplement 169:
+  Added full support for the new Simplified Adult Echo SR IOD introduced
+  with Supplement 169. This also adds optional support for the "Timezone
+  Offset From UTC" attribute to all other Structured Reporting IODs.
+  Closes DCMTK Conformance issue #703.
+  Added:   dcmsr/include/dcmtk/dcmsr/dsrsaecc.h
+           dcmsr/libsrc/dsrsaecc.cc
+  Affects: dcmsr/data/dsr2xml.xsd
+           dcmsr/docs/dsr2html.man
+           dcmsr/docs/dsr2xml.man
+           dcmsr/docs/dsrdump.man
+           dcmsr/docs/xml2dsr.man
+           dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/CMakeLists.txt
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/libsrc/Makefile.in
+           dcmsr/libsrc/dsrdoc.cc
+           dcmsr/libsrc/dsrtypes.cc
+
+- Use macro _LIBICONV_VERSION instead of variable:
+  Use macro _LIBICONV_VERSION instead of global variable _libiconv_version
+  in OFCharacterEncoding::getLibraryVersionString(). Both should be defined
+  in the main header file "iconv.h"... but apparently are not (always).
+  Affects: ofstd/libsrc/ofchrenc.cc
+
+**** Changes from 2016.11.11 (riesmeier)
+
+- Added "Simplified Adult Echo SR" to known types:
+  Added the Simplified Adult Echo SR IOD / SOP Class, which was introduced
+  only recently with Supplement 169, to the list of known (but not yet
+  supported) SR document types.
+  Full support for this IOD / SOP Class will follow in a future commit.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrtypes.cc
+
+- Added support for new UID from Supplement 169:
+  Added support for new Storage SOP Class UID from Supplement 169 (Simplified
+  Adult Echocardiography Report).
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcddirif.cc
+           dcmdata/libsrc/dcuid.cc
+           dcmnet/docs/storescp.man
+           dcmnet/etc/storescp.cfg
+           dcmnet/etc/storescu.cfg
+           dcmqrdb/docs/dcmqrscp.man
+           dcmqrdb/libsrc/dcmqrdbi.cc
+
+**** Changes from 2016.11.11 (eichelberg)
+
+- Updated dcmtls and dcmpstat to compile with OpenSSL 1.1.0:
+  Updated the dcmtls and dcmpstat modules, which now compile
+  and work with OpenSSL 1.0.0, 1.0.1 and 1.1.0. Removed support
+  for some historical, insecure export ciphersuites in TLS.
+  NOTE: OpenSSL 1.1.0 does not anymore accept certificates
+  with MD5 message digest in TLS connections.
+  This means that certificates generated with previous versions
+  of the dcmtk_ca.pl script will no longer work for TLS.
+  The script has been updated accordingly.
+  Affects: dcmpstat/libsrc/dviface.cc
+           dcmtls/docs/ciphers.txt
+           dcmtls/libsrc/tlslayer.cc
+           dcmtls/tests/dcmtk_ca.pl
+
+- Updated dcmsign to correctly compile with OpenSSL 1.1.0:
+  Updated the dcmsign module so that it compiles and works with
+  OpenSSL 1.0.0, 1.0.1 and 1.1.0. Implemented support for
+  SHA256, SHA384 and SHA512 as additional message digest
+  algorithms for DICOM signatures.
+  Added:   dcmsign/include/dcmtk/dcmsign/sisha256.h
+           dcmsign/include/dcmtk/dcmsign/sisha384.h
+           dcmsign/include/dcmtk/dcmsign/sisha512.h
+           dcmsign/libsrc/sisha256.cc
+           dcmsign/libsrc/sisha384.cc
+           dcmsign/libsrc/sisha512.cc
+  Affects: dcmsign/apps/Makefile.dep
+           dcmsign/apps/dcmsign.cc
+           dcmsign/include/dcmtk/dcmsign/sitypes.h
+           dcmsign/libsrc/CMakeLists.txt
+           dcmsign/libsrc/Makefile.dep
+           dcmsign/libsrc/Makefile.in
+           dcmsign/libsrc/dcsignat.cc
+           dcmsign/libsrc/sicert.cc
+           dcmsign/libsrc/sicertvf.cc
+           dcmsign/libsrc/sidsa.cc
+           dcmsign/libsrc/siprivat.cc
+           dcmsign/libsrc/sirsa.cc
+           dcmsign/libsrc/sitypes.cc
+
+**** Changes from 2016.11.10 (riesmeier)
+
+- Added support for CP-1584 to data dictionary.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+- Added initial support for Supplement 195:
+  Added initial support for Supplement 195 (HEVC/H.265 Transfer Syntax),
+  i.e. added definition of two new transfer syntaxes. Support in the various
+  networking tools is not yet complete (e.g. missing prefer/propose options).
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/include/dcmtk/dcmdata/dcxfer.h
+           dcmdata/libsrc/dcuid.cc
+           dcmdata/libsrc/dcxfer.cc
+           dcmnet/apps/echoscu.cc
+           dcmnet/apps/storescp.cc
+           dcmnet/docs/echoscu.man
+           dcmnet/docs/storescp.man
+           dcmnet/etc/storescp.cfg
+           dcmnet/libsrc/dimse.cc
+
+- Added support for recently approved CPs:
+  Added support for CP-1597, CP-1609 and CP-1611 to the data dictionary.
+  These CPs were approved during this week's DICOM WG-06 meeting.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+- Added four Color Palette SOP Instances (CP-1584):
+  Added well-known SOP Instance UID values for four new Color Palettes
+  introduced with CP-1584 (Allow Palette Color in Parametric Map).
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcuid.cc
+
+- Fixed code value for "Pulse Sequence Name" (CP-1578):
+  Fixed wrong definition of code value for "Pulse Sequence Name" (see CP-1578).
+  Affects: dcmsr/libcmr/tid1600.cc
+
+**** Changes from 2016.11.10 (schlamelcher)
+
+- Enhanced C++11 compliance of OFvariant:
+  Moved a type definition from the inside of a constexpr function to the
+  enclosing class, since this is only allowed by C++14 and later but not C++11.
+  Fixed potentially too weak alignment specifier used while determining the
+  common alignment of all variant alternatives.
+  Affects: ofstd/include/dcmtk/ofstd/ofvriant.h
+
+**** Changes from 2016.11.09 (riesmeier)
+
+- Added missing documentation for return values.
+  Affects: dcmrt/include/dcmtk/dcmrt/drmimage.h
+           dcmrt/include/dcmtk/dcmrt/drtdose.h
+           dcmrt/include/dcmtk/dcmrt/drtimage.h
+           dcmrt/include/dcmtk/dcmrt/drtionpl.h
+           dcmrt/include/dcmtk/dcmrt/drtiontr.h
+           dcmrt/include/dcmtk/dcmrt/drtplan.h
+           dcmrt/include/dcmtk/dcmrt/drtstrct.h
+           dcmrt/include/dcmtk/dcmrt/drttreat.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtads.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtags.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtass.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbads.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtccs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtces.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtchs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtddps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drteas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtes.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfes.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtgas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiais.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtians.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtibls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtibs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drticpds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drticps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtircs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtitts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtoas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtois.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtras.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrims.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrses.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtscris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtshds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsins.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsns.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttms0.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttms9.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttscds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtudis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtvls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h
+
+- Fixed Doxygen-related issues in the documentation:
+  Added missing documentation for parameters and return values.
+  Affects: dcmimage/include/dcmtk/dcmimage/dicoimg.h
+           dcmimgle/include/dcmtk/dcmimgle/dcmimage.h
+           dcmimgle/include/dcmtk/dcmimgle/diimage.h
+           dcmimgle/include/dcmtk/dcmimgle/dimoimg.h
+           dcmimgle/include/dcmtk/dcmimgle/dimomod.h
+           dcmimgle/include/dcmtk/dcmimgle/dimoopxt.h
+
+- Enabled Doxygen's WARN_NO_PARAMDOC option:
+  Enabled Doxygen's WARN_NO_PARAMDOC option in order to get a warning to the
+  "doxygen/htmldocs.log" file on undocumented parameters and return values.
+  Affects: doxygen/htmldocs.cfg
+
+- Various Doxygen-related fixes to documentation:
+  Fixed various Doxygen-related issues in the documentation of the API,
+  e.g. unresolved references to members of a base class or undocumented
+  parameters and return values of methods.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/include/dcmtk/dcmsr/dsrposcn.h
+           dcmsr/include/dcmtk/dcmsr/dsrsc3vl.h
+           dcmsr/include/dcmtk/dcmsr/dsrscovl.h
+           dcmsr/include/dcmtk/dcmsr/dsrtcovl.h
+           dcmsr/include/dcmtk/dcmsr/dsrxmld.h
+
+- Renamed empty() methods to isEmpty():
+  Renamed remaining empty() methods to isEmpty() for reasons of consistency.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcsidl.h
+           dcmsr/include/dcmtk/dcmsr/dsrrefin.h
+           dcmsr/include/dcmtk/dcmsr/dsrsoprf.h
+           dcmsr/libsrc/dsrcsidl.cc
+           dcmsr/libsrc/dsrdoc.cc
+           dcmsr/libsrc/dsrrefin.cc
+           dcmsr/libsrc/dsrsoprf.cc
+
+- Added new method hasVerifyingObservers():
+  Added new method DSRDocument::hasVerifyingObservers().
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/libsrc/dsrdoc.cc
+
+- Made getNumberOfVerifyingObservers() const:
+  Made method DSRDocument::getNumberOfVerifyingObservers() "constant".
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/libsrc/dsrdoc.cc
+
+**** Changes from 2016.11.04 (riesmeier)
+
+- Made "ReportType" optional in XML Schema:
+  Made "type" attribute optional for "report" element in XML Schema. This
+  is because the readXML() of the DSRDocument class does not require it
+  (in fact, it does not even use it).
+  Also fixed a wrong name for one of the "ReportType" enumerations.
+  Affects: dcmsr/data/dsr2xml.xsd
+
+- Removed check on arrays being not a null pointer:
+  Removed comparison of char arrays being not equal to a null pointer since this
+  is always true. This fix should avoid warning messages reported by Clang 3.5.
+  Affects: dcmpstat/libsrc/dviface.cc
+
+**** Changes from 2016.11.03 (riesmeier)
+
+- Added support for missing "ReportType" values:
+  Over the years, support for various new DICOM SR IODs has been added to
+  the "dcmsr" module but the XML Schema was not updated in this regard.
+  Now, the list of "ReportType" enumerated values is again up-to-date.
+  Affects: dcmsr/data/dsr2xml.xsd
+
+- Added support for InstanceCreatorUID to readXML():
+  Added missing support for the InstanceCreatorUID to readXML().
+  The writeXML() already supported this optional XML attribute.
+  Affects: dcmsr/libsrc/dsrdoc.cc
+
+**** Changes from 2016.11.02 (schlamelcher)
+
+- Updated CHANGES.361 for new development snapshot.
+  Affects: docs/CHANGES.361
+
+- Updated DCMTK_ABI_VERSION for new development snapshot.
+  Affects: CMake/dcmtkPrepare.cmake
+
+- Updated man pages for new development snapshot.
+  Affects: doxygen/manpages/man1/dcm2pdf.1
+           doxygen/manpages/man1/dcm2pnm.1
+           doxygen/manpages/man1/dcm2xml.1
+           doxygen/manpages/man1/dcmcjpeg.1
+           doxygen/manpages/man1/dcmcjpls.1
+           doxygen/manpages/man1/dcmconv.1
+           doxygen/manpages/man1/dcmcrle.1
+           doxygen/manpages/man1/dcmdjpeg.1
+           doxygen/manpages/man1/dcmdjpls.1
+           doxygen/manpages/man1/dcmdrle.1
+           doxygen/manpages/man1/dcmdspfn.1
+           doxygen/manpages/man1/dcmdump.1
+           doxygen/manpages/man1/dcmftest.1
+           doxygen/manpages/man1/dcmgpdir.1
+           doxygen/manpages/man1/dcmj2pnm.1
+           doxygen/manpages/man1/dcml2pnm.1
+           doxygen/manpages/man1/dcmmkcrv.1
+           doxygen/manpages/man1/dcmmkdir.1
+           doxygen/manpages/man1/dcmmklut.1
+           doxygen/manpages/man1/dcmodify.1
+           doxygen/manpages/man1/dcmp2pgm.1
+           doxygen/manpages/man1/dcmprscp.1
+           doxygen/manpages/man1/dcmprscu.1
+           doxygen/manpages/man1/dcmpschk.1
+           doxygen/manpages/man1/dcmpsmk.1
+           doxygen/manpages/man1/dcmpsprt.1
+           doxygen/manpages/man1/dcmpsrcv.1
+           doxygen/manpages/man1/dcmpssnd.1
+           doxygen/manpages/man1/dcmqridx.1
+           doxygen/manpages/man1/dcmqrscp.1
+           doxygen/manpages/man1/dcmqrti.1
+           doxygen/manpages/man1/dcmquant.1
+           doxygen/manpages/man1/dcmrecv.1
+           doxygen/manpages/man1/dcmscale.1
+           doxygen/manpages/man1/dcmsend.1
+           doxygen/manpages/man1/dcmsign.1
+           doxygen/manpages/man1/dcod2lum.1
+           doxygen/manpages/man1/dconvlum.1
+           doxygen/manpages/man1/drtdump.1
+           doxygen/manpages/man1/dsr2html.1
+           doxygen/manpages/man1/dsr2xml.1
+           doxygen/manpages/man1/dsrdump.1
+           doxygen/manpages/man1/dump2dcm.1
+           doxygen/manpages/man1/echoscu.1
+           doxygen/manpages/man1/findscu.1
+           doxygen/manpages/man1/getscu.1
+           doxygen/manpages/man1/img2dcm.1
+           doxygen/manpages/man1/movescu.1
+           doxygen/manpages/man1/pdf2dcm.1
+           doxygen/manpages/man1/storescp.1
+           doxygen/manpages/man1/storescu.1
+           doxygen/manpages/man1/termscu.1
+           doxygen/manpages/man1/wlmscpfs.1
+           doxygen/manpages/man1/xml2dcm.1
+           doxygen/manpages/man1/xml2dsr.1
+
+- Updated Makefile dependencies.
+  Affects: ofstd/libsrc/Makefile.dep
+
+- Added API documentation for OFvariant etc.
+  Affects: ofstd/include/dcmtk/ofstd/ofutil.h
+           ofstd/include/dcmtk/ofstd/ofvriant.h
+
+**** Changes from 2016.11.01 (riesmeier)
+
+- Added readXML mode that accepts empty/missing UID:
+  Added new mode to readXML() that accepts empty or missing Study/Series/
+  SOP Instance UID values in the input document. This is required if only
+  some of these three UID values should be re-generated (replaced). Now,
+  option --generate-new-uids (with --dont-overwrite-uids) works as expected.
+  Thanks to Martin Wenger <Martin.Wenger at klinikum-hef.de> for the original
+  report that resulted in this improvement/fix.
+  Affects: dcmsr/apps/xml2dsr.cc
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/include/dcmtk/dcmsr/dsrxmld.h
+           dcmsr/libsrc/dsrdoc.cc
+           dcmsr/libsrc/dsrtypes.cc
+           dcmsr/libsrc/dsrxmld.cc
+
+- Output debug messages when updating attributes:
+  Output messages to the debug logger when updating DICOM header attributes,
+  especially when generating new Study / Series / SOP Instance UIDs.
+  Affects: dcmsr/libsrc/dsrdoc.cc
+
+- Made clear that options +/-Uo require +Ug:
+  Now it is checked whether option --generate-new-uids (+Ug) is used when
+  --overwrite-uids (+Uo) or --dont-overwrite-uids (-Uo) is also specified
+  on the command line. This should avoid possible confusions.
+  Affects: dcmdata/apps/xml2dcm.cc
+           dcmsr/apps/xml2dsr.cc
+
+**** Changes from 2016.10.31 (schlamelcher)
+
+- Added OFvariant implementation for C++11:
+  Closes DCMTK bug #693.
+  Affects: dcmiod/include/dcmtk/dcmiod/iodimage.h
+           dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h
+           ofstd/include/dcmtk/ofstd/ofutil.h
+           ofstd/include/dcmtk/ofstd/ofvriant.h
+
+**** Changes from 2016.10.30 (schlamelcher)
+
+- Fixed a problem with a previous commit:
+  A line in a previous commit was truncated, leading to compiler errors.
+  Affects: dcmpstat/libsrc/dviface.cc
+
+**** Changes from 2016.10.28 (schlamelcher)
+
+- Fixed using third party libraries with MinGW:
+  Modified 3rdparty.cmake such that MinGW is handled the same as Unix like
+  systems regarding the integration of third party libraries.
+  Affects: CMake/3rdparty.cmake
+
+- Fixed 32 vs. 64 bit problem in dcmqrdb:
+  Fixed incompatibility of dcmqrdb databases between 32 bit and 64 bit code on
+  the same platform. Don't forget to re-create your databases using dcmqridx.
+  Affects: dcmqrdb/include/dcmtk/dcmqrdb/dcmqridx.h
+
+- Several fixes for dcmpstat:
+  Fixed detecting structured reporting objects based on the SOP class.
+  Fixed print job execution and cleanup. Print job executing was bugged when
+  the name of one print job was a prefix to the name of another print job.
+  Fixed deadlock in instanceReviewed() regarding database access.
+  Fixed opening files named using non ASCII characters (only relevant on
+  Windows).
+  Affects: dcmpstat/apps/dcmprscu.cc
+           dcmpstat/libsrc/dviface.cc
+           dcmpstat/libsrc/dvpshlp.cc
+
+- Fixed wrong usage of checkStringValue() in dcmpmap:
+  Fixed passing the attribute type to checkStringValue() where the value multi-
+  plicity is expected.
+  Affects: dcmpmap/libsrc/dpmmodparametricmapimage.cc
+
+**** Changes from 2016.10.12 (riesmeier)
+
+- Added comment on recently added DICOM attributes:
+  Added comment on DICOM attributes that were recently added to the DICOM
+  standard but which are not (yet) supported by the "dcmsr" module.
+  As usual, these "things to be done" can be found by searching for "tbd:"
+  in the source code of this module.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+
+- Updated "dcmrt" classes based on DICOM 2016d:
+  Updated automatically generated IOD and sequence C++ classes for the various
+  RT objects based on the current edition of the DICOM standard (2016d).
+  Added:   dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtddps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsins.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtudis.h
+           dcmrt/libsrc/drtcgis.cc
+           dcmrt/libsrc/drtdddps.cc
+           dcmrt/libsrc/drtddps.cc
+           dcmrt/libsrc/drtgpis.cc
+           dcmrt/libsrc/drtmris.cc
+           dcmrt/libsrc/drtpdeds.cc
+           dcmrt/libsrc/drtscs.cc
+           dcmrt/libsrc/drtsins.cc
+           dcmrt/libsrc/drtspgis.cc
+           dcmrt/libsrc/drtsptcs.cc
+           dcmrt/libsrc/drtssrcs.cc
+           dcmrt/libsrc/drtsss.cc
+           dcmrt/libsrc/drtudis.cc
+  Removed: dcmrt/include/dcmtk/dcmrt/seq/drtarics.h
+           dcmrt/libsrc/drtarics.cc
+  Affects: dcmrt/apps/Makefile.dep
+           dcmrt/include/dcmtk/dcmrt/drtdose.h
+           dcmrt/include/dcmtk/dcmrt/drtimage.h
+           dcmrt/include/dcmtk/dcmrt/drtionpl.h
+           dcmrt/include/dcmtk/dcmrt/drtiontr.h
+           dcmrt/include/dcmtk/dcmrt/drtplan.h
+           dcmrt/include/dcmtk/dcmrt/drtstrct.h
+           dcmrt/include/dcmtk/dcmrt/drttreat.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtads.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtags.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtass.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbads.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtccs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtces.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtchs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drteas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtes.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfes.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtgas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiais.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtians.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtibls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtibs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drticpds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drticps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtircs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtitts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtoas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtois.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtras.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrims.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrses.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtscris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtshds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsns.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttms0.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttms9.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttscds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtvls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h
+           dcmrt/libsrc/CMakeLists.txt
+           dcmrt/libsrc/Makefile.dep
+           dcmrt/libsrc/Makefile.in
+           dcmrt/libsrc/drtaadcs.cc
+           dcmrt/libsrc/drtadcs.cc
+           dcmrt/libsrc/drtads.cc
+           dcmrt/libsrc/drtafs.cc
+           dcmrt/libsrc/drtags.cc
+           dcmrt/libsrc/drtajcs.cc
+           dcmrt/libsrc/drtas1.cc
+           dcmrt/libsrc/drtas5.cc
+           dcmrt/libsrc/drtas6.cc
+           dcmrt/libsrc/drtas7.cc
+           dcmrt/libsrc/drtass.cc
+           dcmrt/libsrc/drtbads.cc
+           dcmrt/libsrc/drtbas.cc
+           dcmrt/libsrc/drtbcps.cc
+           dcmrt/libsrc/drtbl2.cc
+           dcmrt/libsrc/drtbl5.cc
+           dcmrt/libsrc/drtbldls.cc
+           dcmrt/libsrc/drtbldps.cc
+           dcmrt/libsrc/drtblds1.cc
+           dcmrt/libsrc/drtblds5.cc
+           dcmrt/libsrc/drtblds6.cc
+           dcmrt/libsrc/drtbldts.cc
+           dcmrt/libsrc/drtbrcss.cc
+           dcmrt/libsrc/drtbrdrs.cc
+           dcmrt/libsrc/drtbrs.cc
+           dcmrt/libsrc/drtbs.cc
+           dcmrt/libsrc/drtbss.cc
+           dcmrt/libsrc/drtbvcps.cc
+           dcmrt/libsrc/drtcbars.cc
+           dcmrt/libsrc/drtccs.cc
+           dcmrt/libsrc/drtcctus.cc
+           dcmrt/libsrc/drtcdrs.cc
+           dcmrt/libsrc/drtces.cc
+           dcmrt/libsrc/drtchs.cc
+           dcmrt/libsrc/drtcims.cc
+           dcmrt/libsrc/drtcis.cc
+           dcmrt/libsrc/drtcncs.cc
+           dcmrt/libsrc/drtcos.cc
+           dcmrt/libsrc/drtcpas.cc
+           dcmrt/libsrc/drtcpis.cc
+           dcmrt/libsrc/drtcps.cc
+           dcmrt/libsrc/drtcs.cc
+           dcmrt/libsrc/drtcsas.cc
+           dcmrt/libsrc/drtcshs.cc
+           dcmrt/libsrc/drtcsis.cc
+           dcmrt/libsrc/drtcss.cc
+           dcmrt/libsrc/drtdcs.cc
+           dcmrt/libsrc/drtdias.cc
+           dcmrt/libsrc/drtdimcs.cc
+           dcmrt/libsrc/drtdimrs.cc
+           dcmrt/libsrc/drtdirs.cc
+           dcmrt/libsrc/drtdose.cc
+           dcmrt/libsrc/drtdrs.cc
+           dcmrt/libsrc/drtds.cc
+           dcmrt/libsrc/drtdspcs.cc
+           dcmrt/libsrc/drtdss.cc
+           dcmrt/libsrc/drtdvhs.cc
+           dcmrt/libsrc/drtdvrrs.cc
+           dcmrt/libsrc/drteas.cc
+           dcmrt/libsrc/drtecs.cc
+           dcmrt/libsrc/drtes.cc
+           dcmrt/libsrc/drtfds.cc
+           dcmrt/libsrc/drtfes.cc
+           dcmrt/libsrc/drtfgs.cc
+           dcmrt/libsrc/drtfgss.cc
+           dcmrt/libsrc/drtfms.cc
+           dcmrt/libsrc/drtfsss.cc
+           dcmrt/libsrc/drtgas.cc
+           dcmrt/libsrc/drthsdrs.cc
+           dcmrt/libsrc/drtiais.cc
+           dcmrt/libsrc/drtians.cc
+           dcmrt/libsrc/drtiblds.cc
+           dcmrt/libsrc/drtibls.cc
+           dcmrt/libsrc/drtibs.cc
+           dcmrt/libsrc/drticpds.cc
+           dcmrt/libsrc/drticps.cc
+           dcmrt/libsrc/drtics.cc
+           dcmrt/libsrc/drtiis.cc
+           dcmrt/libsrc/drtimage.cc
+           dcmrt/libsrc/drtionpl.cc
+           dcmrt/libsrc/drtiontr.cc
+           dcmrt/libsrc/drtipiqs.cc
+           dcmrt/libsrc/drtircs.cc
+           dcmrt/libsrc/drtiseis.cc
+           dcmrt/libsrc/drtitts.cc
+           dcmrt/libsrc/drtiwps.cc
+           dcmrt/libsrc/drtiws.cc
+           dcmrt/libsrc/drtlsds.cc
+           dcmrt/libsrc/drtlsds6.cc
+           dcmrt/libsrc/drtlsds7.cc
+           dcmrt/libsrc/drtmacds.cc
+           dcmrt/libsrc/drtmas.cc
+           dcmrt/libsrc/drtmdrs.cc
+           dcmrt/libsrc/drtmls.cc
+           dcmrt/libsrc/drtmps.cc
+           dcmrt/libsrc/drtmss.cc
+           dcmrt/libsrc/drtmucs.cc
+           dcmrt/libsrc/drtoas.cc
+           dcmrt/libsrc/drtois.cc
+           dcmrt/libsrc/drtopis.cc
+           dcmrt/libsrc/drtos.cc
+           dcmrt/libsrc/drtpbcs.cc
+           dcmrt/libsrc/drtpcs.cc
+           dcmrt/libsrc/drtpcxs.cc
+           dcmrt/libsrc/drtpdecs.cc
+           dcmrt/libsrc/drtpfms.cc
+           dcmrt/libsrc/drtpics.cc
+           dcmrt/libsrc/drtplan.cc
+           dcmrt/libsrc/drtporcs.cc
+           dcmrt/libsrc/drtporis.cc
+           dcmrt/libsrc/drtppcs.cc
+           dcmrt/libsrc/drtprsis.cc
+           dcmrt/libsrc/drtpscs.cc
+           dcmrt/libsrc/drtpsics.cc
+           dcmrt/libsrc/drtpss.cc
+           dcmrt/libsrc/drtpsss.cc
+           dcmrt/libsrc/drtpvis.cc
+           dcmrt/libsrc/drtqds.cc
+           dcmrt/libsrc/drtras.cc
+           dcmrt/libsrc/drtrbas2.cc
+           dcmrt/libsrc/drtrbas8.cc
+           dcmrt/libsrc/drtrbls.cc
+           dcmrt/libsrc/drtrbos1.cc
+           dcmrt/libsrc/drtrbos6.cc
+           dcmrt/libsrc/drtrbos7.cc
+           dcmrt/libsrc/drtrbs2.cc
+           dcmrt/libsrc/drtrbs4.cc
+           dcmrt/libsrc/drtrbs8.cc
+           dcmrt/libsrc/drtrcdrs.cc
+           dcmrt/libsrc/drtrcos.cc
+           dcmrt/libsrc/drtrcps.cc
+           dcmrt/libsrc/drtrcs.cc
+           dcmrt/libsrc/drtrdros.cc
+           dcmrt/libsrc/drtrdrs1.cc
+           dcmrt/libsrc/drtrdrs6.cc
+           dcmrt/libsrc/drtrdrs8.cc
+           dcmrt/libsrc/drtrds.cc
+           dcmrt/libsrc/drtrecs.cc
+           dcmrt/libsrc/drtrfgs.cc
+           dcmrt/libsrc/drtrfors.cc
+           dcmrt/libsrc/drtrics.cc
+           dcmrt/libsrc/drtrims.cc
+           dcmrt/libsrc/drtris.cc
+           dcmrt/libsrc/drtrlsds.cc
+           dcmrt/libsrc/drtrmdrs.cc
+           dcmrt/libsrc/drtrms.cc
+           dcmrt/libsrc/drtrmss6.cc
+           dcmrt/libsrc/drtrmss7.cc
+           dcmrt/libsrc/drtrpcs.cc
+           dcmrt/libsrc/drtrpis.cc
+           dcmrt/libsrc/drtrppcs.cc
+           dcmrt/libsrc/drtrpphs.cc
+           dcmrt/libsrc/drtrpps.cc
+           dcmrt/libsrc/drtrppss.cc
+           dcmrt/libsrc/drtrps.cc
+           dcmrt/libsrc/drtrris1.cc
+           dcmrt/libsrc/drtrris6.cc
+           dcmrt/libsrc/drtrris9.cc
+           dcmrt/libsrc/drtrrms.cc
+           dcmrt/libsrc/drtrros.cc
+           dcmrt/libsrc/drtrrpcs.cc
+           dcmrt/libsrc/drtrrros.cc
+           dcmrt/libsrc/drtrrs.cc
+           dcmrt/libsrc/drtrrshs.cc
+           dcmrt/libsrc/drtrrtps.cc
+           dcmrt/libsrc/drtrrtps3.cc
+           dcmrt/libsrc/drtrrtps4.cc
+           dcmrt/libsrc/drtrrtps5.cc
+           dcmrt/libsrc/drtrscs.cc
+           dcmrt/libsrc/drtrsers.cc
+           dcmrt/libsrc/drtrses.cc
+           dcmrt/libsrc/drtrshs.cc
+           dcmrt/libsrc/drtrshs6.cc
+           dcmrt/libsrc/drtrshs7.cc
+           dcmrt/libsrc/drtrsis.cc
+           dcmrt/libsrc/drtrsns.cc
+           dcmrt/libsrc/drtrsos.cc
+           dcmrt/libsrc/drtrsrs.cc
+           dcmrt/libsrc/drtrss.cc
+           dcmrt/libsrc/drtrsss.cc
+           dcmrt/libsrc/drtrsts.cc
+           dcmrt/libsrc/drtrtrs2.cc
+           dcmrt/libsrc/drtrtrs4.cc
+           dcmrt/libsrc/drtrvis.cc
+           dcmrt/libsrc/drtrws.cc
+           dcmrt/libsrc/drtrwvms.cc
+           dcmrt/libsrc/drtscris.cc
+           dcmrt/libsrc/drtsdcs.cc
+           dcmrt/libsrc/drtsds.cc
+           dcmrt/libsrc/drtshds.cc
+           dcmrt/libsrc/drtsis.cc
+           dcmrt/libsrc/drtsns.cc
+           dcmrt/libsrc/drtspccs.cc
+           dcmrt/libsrc/drtspcs.cc
+           dcmrt/libsrc/drtss.cc
+           dcmrt/libsrc/drtssrs.cc
+           dcmrt/libsrc/drtstrct.cc
+           dcmrt/libsrc/drttms0.cc
+           dcmrt/libsrc/drttms9.cc
+           dcmrt/libsrc/drttreat.cc
+           dcmrt/libsrc/drttscds.cc
+           dcmrt/libsrc/drttsibs.cc
+           dcmrt/libsrc/drttsmds.cc
+           dcmrt/libsrc/drttts.cc
+           dcmrt/libsrc/drtvls.cc
+           dcmrt/libsrc/drtwps.cc
+           dcmrt/libsrc/drtwrs.cc
+           dcmrt/libsrc/drtwrsrs.cc
+           dcmrt/libsrc/drtws.cc
+           dcmrt/libsrc/drtxrs.cc
+           dcmrt/tests/Makefile.dep
+
+- Fixed typo in comments.
+  Affects: dcmimgle/include/dcmtk/dcmimgle/dimoopxt.h
+
+**** Changes from 2016.10.04 (riesmeier)
+
+- Updated Context Group classes for DICOM 2016d:
+  Updated automatically generated Context Group classes for the 2016d
+  edition of the DICOM standard. There were no changes to the supported
+  Context Groups.
+  Affects: 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/cid244.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/libcmr/cid100.cc
+           dcmsr/libcmr/cid10013.cc
+           dcmsr/libcmr/cid10033.cc
+           dcmsr/libcmr/cid11.cc
+           dcmsr/libcmr/cid244.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
+
+- Updated code definitions for DICOM 2016d:
+  Updated automatically generated code definitions for coding scheme "DCM",
+  "NCIt" and "UMLS" for the 2016d edition of the DICOM standard.
+  Affects: dcmsr/include/dcmtk/dcmsr/codes/dcm.h
+           dcmsr/include/dcmtk/dcmsr/codes/ncit.h
+           dcmsr/include/dcmtk/dcmsr/codes/umls.h
+
+- Update data dictionary for DICOM 2016d.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+**** Changes from 2016.10.04 (schlamelcher)
+
+- Fixed a problem in OFtuple's constructor:
+  GCC 6.2.1 wasn't able to compile OFtuple's constructor, which is fixed in
+  this commit.
+  Affects: ofstd/include/dcmtk/ofstd/oftuple.h
+
+**** Changes from 2016.09.22 (riesmeier)
+
+- Added new DCMTK modules "dcmtract" and "dcmpmap":
+  These two (still pretty new) modules were missing in the README file.
+  Also updated description of "dcmsr" module in order to be consistent
+  with the Doxygen file.
+  Affects: README
+
+**** Changes from 2016.09.21 (onken)
+
+- Make Manufacturer type 2, consistency fixes:
+  Thanks to Jörg Riesmeier for the hint and proposed patch.
+  Affects: dcmiod/include/dcmtk/dcmiod/modenhequipment.h
+           dcmiod/include/dcmtk/dcmiod/modequipment.h
+           dcmiod/libsrc/modenhequipment.cc
+           dcmiod/libsrc/modequipment.cc
+
+**** Changes from 2016.09.20 (riesmeier)
+
+- Disable two test cases when building shared libs:
+  Temporarily disable two new test cases when building shared libraries
+  because of unresolvable linker errors (static member "EmptyItem" not
+  found).
+  See DCMTK Bug #694.
+  Affects: dcmsr/tests/Makefile.dep
+           dcmsr/tests/tsrlist.cc
+
+**** Changes from 2016.09.19 (riesmeier)
+
+- Fixed compiler warnings on unused variables:
+  Fixed compiler warnings on unused variables reported by Visual Studio 2010.
+  Affects: dcmjpls/libcharls/intrface.cc
+
+- Fixed linker errors on non-gcc platforms:
+  Fixed linker errors on non-gcc platforms that occurred after adding new
+  "dcmsr" test cases (which make use of the class DSRListOfItems).
+  Affects: dcmsr/tests/tsrlist.cc
+
+**** Changes from 2016.09.17 (riesmeier)
+
+- Added missing source file (new test cases):
+  Added new source file that was missing for the previous commit.
+  Added:   dcmsr/tests/tsrlist.cc
+
+**** Changes from 2016.09.16 (hasenpusch)
+
+- Fixed include paths in DCMTK's package config file:
+  Fixed exporting wrong module include paths inside generated DCMTKConfig.cmake.
+  The specified module include paths went two levels too deep into the folder
+  hierarchy, leading to system include shadowing under certain circumstances.
+  This fixes DCMTK bug #692.
+  Thanks to forum user jakecobb for reporting this bug.
+  Affects: CMake/DCMTKConfig.cmake.in
+
+**** Changes from 2016.09.16 (riesmeier)
+
+- Enhanced template class DSRListOfItems:
+  Added new methods addItems() and getItems() to the template class
+  DSRListOfItems. These new methods expect a vector as a parameter
+  and thus allow for adding/getting multiple items with a single call.
+  Closes DCMTK Feature #572.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtlist.h
+           dcmsr/tests/CMakeLists.txt
+           dcmsr/tests/Makefile.in
+           dcmsr/tests/tests.cc
+
+**** Changes from 2016.09.15 (schlamelcher)
+
+- Further fixes for OFvariant:
+  OFvariant's copy constructor and assignment operator are now disabled for
+  types that can not be converted to one of the variant's alternatives (using
+  OFenable_if).
+  Fixed OFvariant's fallback implementation for systems that do not provide
+  memory alignment facilities.
+  Affects: ofstd/include/dcmtk/ofstd/variadic/variant.h
+
+**** Changes from 2016.09.14 (riesmeier)
+
+- Fixed minor issues in modules' documentation:
+  Fixed minor issues in modules' documentation of "dcmpmap" und "dcmtract".
+  Some of these are related to Doxygen (the tool that is used for generating
+  the rendered output) and some have been fixed for reasons of consistency
+  with other DCMTK modules.
+  Affects: dcmpmap/docs/dcmpmap.dox
+           dcmtract/docs/dcmtract.dox
+
+**** Changes from 2016.09.14 (schlamelcher)
+
+- Fixes for OFvariant, dcmiod, dcmseg and dcmpmap:
+  Removed DLL export macros from several template classes as this does not seem
+  to work for templates.
+  Introduced a workaround for older C++ compilers regarding base class
+  definitions in derived classes, e.g. OFvariant<int,char> will not be available
+  as OFvariant (without the template parameters) in derived classes on these
+  compilers. OFvariant and DcmIODImage now define the types 'variant' and
+  'IODImage' resp. instead, which may be used in derived classes for referring
+  to the resp. base class or one of its methods etc.
+  Affects: dcmiod/include/dcmtk/dcmiod/iodimage.h
+           dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h
+           dcmpmap/libsrc/dpmparametricmapbase.cc
+           dcmseg/libsrc/segdoc.cc
+           ofstd/include/dcmtk/ofstd/variadic/variant.h
+
+**** Changes from 2016.09.13 (schlamelcher)
+
+- Trying possible fix for OFvariant vs DLLs.
+  Affects: ofstd/include/dcmtk/ofstd/ofutil.h
+           ofstd/libsrc/ofstd.cc
+
+**** Changes from 2016.09.12 (riesmeier)
+
+- Updated coding scheme designator (CP-1567):
+  Updated coding scheme designator for CID 5000 (Languages) based on recently
+  approved CP-1567: The designator changed from "IETF4646" to "RFC5646".
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/cid5000.h
+           dcmsr/libcmr/cid5000.cc
+
+- Added support for recently approved CPs:
+  Added support for CP-1418 and CP-1586 to the data dictionary.
+  These CPs were approved during last week's DICOM WG-06 t-con.
+  Also fixed an attribute name change in "dcmrt" due to retirement.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+           dcmrt/libsrc/drtarics.cc
+
+- Added support for new UIDs from Supplement 121:
+  Added support for new Storage and Query/Retrieve SOP Class UIDs from
+  Supplement 121 (CT Protocol Storage).
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcuid.cc
+           dcmnet/docs/movescu.man
+           dcmnet/docs/storescp.man
+           dcmnet/etc/storescp.cfg
+           dcmnet/etc/storescu.cfg
+           dcmqrdb/docs/dcmqrscp.man
+
+- Added support for Supplement 121 to dictionary:
+  Added support for the final text version of Supplement 121 (CT Protocol
+  Storage) to the data dictionary.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+**** Changes from 2016.09.10 (onken)
+
+- Corrected value checking and setters for VM > 1:
+  Some value checks have been filling the VM parameter incorrectly by providing
+  the value type (like "1C") instead, leading to an error if value checking is
+  not disabled.
+  Thanks to Andrey Fedorov <andrey.fedorov at gmail.com> for the bug report.
+  Also, some type of values (e.g. Floating Point Value) allow more than one
+  value which is now possible using an optional parameter in the related setter()
+  method.
+  Affects: dcmiod/include/dcmtk/dcmiod/iodcontentitemmacro.h
+           dcmiod/libsrc/iodcontentitemmacro.cc
+
+**** Changes from 2016.09.05 (onken)
+
+- Fixed typos and other enhancements.
+  Affects: dcmpmap/docs/dcmpmap.dox
+
+**** Changes from 2016.09.02 (onken)
+
+- Make sure setValueType() sets correct string value:
+  Due to a copy/paste error setValueType() has constantly set the value "CODE"
+  instead of the value provided by the user.
+  Affects: dcmiod/libsrc/iodcontentitemmacro.cc
+
+**** Changes from 2016.09.01 (onken)
+
+- Remove default value for first parameter:
+  Remove default value for first method parameter in constructor
+  since otherwise Visual Studio moans that it overlaps with the
+  default constructor (which is undefined and private, though).
+  Affects: dcmiod/include/dcmtk/dcmiod/iodmacro.h
+
+- Introduced new module dcmpmap for Parametric Maps:
+  The new dcmpmap module offers an API for creation, loading, accessing and
+  saving DICOM Parametric Map objects as introduced in DICOM Supplement 172.
+  All binary data types supported by the standard (16 bit signed and unsigned
+  integer as well as 32 bit and 64 bit floating point data) are handled by the
+  library.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  QIICR is supported by NIH National Cancer Institute, award U24 CA180918.
+  Added:   dcmfg/include/dcmtk/dcmfg/fgframeanatomy.h
+           dcmfg/include/dcmtk/dcmfg/fgidentpixeltransform.h
+           dcmfg/include/dcmtk/dcmfg/fgparametricmapframetype.h
+           dcmfg/libsrc/fgframeanatomy.cc
+           dcmfg/libsrc/fgidentpixeltransform.cc
+           dcmfg/libsrc/fgparametricmapframetype.cc
+           dcmiod/include/dcmtk/dcmiod/iodcontentitemmacro.h
+           dcmiod/include/dcmtk/dcmiod/modfloatingpointimagepixel.h
+           dcmiod/include/dcmtk/dcmiod/modimagepixelbase.h
+           dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h
+           dcmiod/libsrc/iodcontentitemmacro.cc
+           dcmiod/libsrc/modfloatingpointimagepixel.cc
+           dcmiod/libsrc/modimagepixelbase.cc
+           dcmiod/tests/timagepixel.cc
+           dcmpmap/CMakeLists.txt
+           dcmpmap/Makefile.in
+           dcmpmap/configure
+           dcmpmap/data/Makefile.in
+           dcmpmap/docs/Makefile.in
+           dcmpmap/docs/dcmpmap.dox
+           dcmpmap/etc/Makefile.in
+           dcmpmap/include/CMakeLists.txt
+           dcmpmap/include/Makefile.in
+           dcmpmap/include/dcmtk/dcmpmap/dpmdef.h
+           dcmpmap/include/dcmtk/dcmpmap/dpmmodparametricmapimage.h
+           dcmpmap/include/dcmtk/dcmpmap/dpmmodparametricmapseries.h
+           dcmpmap/include/dcmtk/dcmpmap/dpmparametricmapbase.h
+           dcmpmap/include/dcmtk/dcmpmap/dpmparametricmapiod.h
+           dcmpmap/include/dcmtk/dcmpmap/dpmtypes.h
+           dcmpmap/libsrc/CMakeLists.txt
+           dcmpmap/libsrc/Makefile.dep
+           dcmpmap/libsrc/Makefile.in
+           dcmpmap/libsrc/dpmmodparametricmapimage.cc
+           dcmpmap/libsrc/dpmmodparametricmapseries.cc
+           dcmpmap/libsrc/dpmparametricmapbase.cc
+           dcmpmap/libsrc/dpmparametricmapiod.cc
+           dcmpmap/libsrc/dpmtypes.cc
+           dcmpmap/tests/Makefile.dep
+           dcmpmap/tests/Makefile.in
+           ofstd/include/dcmtk/ofstd/ofvriant.h
+           ofstd/include/dcmtk/ofstd/variadic/helpers.h
+           ofstd/include/dcmtk/ofstd/variadic/variant.h
+           ofstd/tests/tvariant.cc
+  Removed: dcmiod/libsrc/iodimage.cc
+  Affects: CMakeLists.txt
+           Makefile
+           config/modules
+           dcmdata/include/dcmtk/dcmdata/dcerror.h
+           dcmfg/include/dcmtk/dcmfg/fgderimg.h
+           dcmfg/include/dcmtk/dcmfg/fgfracon.h
+           dcmfg/include/dcmtk/dcmfg/fginterface.h
+           dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h
+           dcmfg/include/dcmtk/dcmfg/fgtypes.h
+           dcmfg/include/dcmtk/dcmfg/stack.h
+           dcmfg/libsrc/CMakeLists.txt
+           dcmfg/libsrc/Makefile.dep
+           dcmfg/libsrc/fgbase.cc
+           dcmfg/libsrc/fgderimg.cc
+           dcmfg/libsrc/fgfact.cc
+           dcmfg/libsrc/fgfracon.cc
+           dcmfg/libsrc/fgframevoilut.cc
+           dcmfg/libsrc/fgimagedatatype.cc
+           dcmfg/libsrc/fginterface.cc
+           dcmfg/libsrc/fgpixmsr.cc
+           dcmfg/libsrc/fgplanor.cc
+           dcmfg/libsrc/fgplanorvol.cc
+           dcmfg/libsrc/fgplanpo.cc
+           dcmfg/libsrc/fgplanposvol.cc
+           dcmfg/libsrc/fgrealworldvaluemapping.cc
+           dcmfg/libsrc/fgseg.cc
+           dcmfg/libsrc/fgtypes.cc
+           dcmfg/libsrc/fgusimagedescription.cc
+           dcmiod/include/dcmtk/dcmiod/iodcommn.h
+           dcmiod/include/dcmtk/dcmiod/iodimage.h
+           dcmiod/include/dcmtk/dcmiod/iodmacro.h
+           dcmiod/include/dcmtk/dcmiod/iodutil.h
+           dcmiod/include/dcmtk/dcmiod/modbase.h
+           dcmiod/include/dcmtk/dcmiod/modcommoninstanceref.h
+           dcmiod/include/dcmtk/dcmiod/modenhequipment.h
+           dcmiod/include/dcmtk/dcmiod/modequipment.h
+           dcmiod/include/dcmtk/dcmiod/modfor.h
+           dcmiod/include/dcmtk/dcmiod/modimagepixel.h
+           dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h
+           dcmiod/include/dcmtk/dcmiod/modsynchronisation.h
+           dcmiod/libsrc/CMakeLists.txt
+           dcmiod/libsrc/Makefile.dep
+           dcmiod/libsrc/Makefile.in
+           dcmiod/libsrc/iodcommn.cc
+           dcmiod/libsrc/iodmacro.cc
+           dcmiod/libsrc/modbase.cc
+           dcmiod/libsrc/modcommoninstanceref.cc
+           dcmiod/libsrc/modenhequipment.cc
+           dcmiod/libsrc/modequipment.cc
+           dcmiod/libsrc/modfor.cc
+           dcmiod/libsrc/modimagepixel.cc
+           dcmiod/libsrc/modmultiframedimension.cc
+           dcmiod/libsrc/modmultiframefg.cc
+           dcmiod/libsrc/modsynchronization.cc
+           dcmiod/libsrc/modusfor.cc
+           dcmiod/tests/CMakeLists.txt
+           dcmiod/tests/Makefile.dep
+           dcmiod/tests/Makefile.in
+           dcmiod/tests/tests.cc
+           dcmnet/libsrc/dstorscu.cc
+           dcmseg/include/dcmtk/dcmseg/segdoc.h
+           dcmseg/libsrc/Makefile.dep
+           dcmseg/libsrc/segdoc.cc
+           dcmtract/libsrc/Makefile.dep
+           doxygen/htmldocs.dox
+           ofstd/include/dcmtk/ofstd/oftraits.h
+           ofstd/include/dcmtk/ofstd/ofutil.h
+           ofstd/libsrc/Makefile.dep
+           ofstd/libsrc/ofstd.cc
+           ofstd/tests/CMakeLists.txt
+           ofstd/tests/Makefile.dep
+           ofstd/tests/Makefile.in
+           ofstd/tests/tests.cc
+
+**** Changes from 2016.08.23 (riesmeier)
+
+- Fixed typos in comments and log output.
+  Affects: config/Makefile.def.in
+           dcmnet/libsrc/dulparse.cc
+
+**** Changes from 2016.08.22 (onken)
+
+- Optimized iterator usage to speed up execution.
+  Affects: dcmfg/libsrc/fg.cc
+           dcmfg/libsrc/fginterface.cc
+
+**** Changes from 2016.08.06 (onken)
+
+- Updated copyright.
+  Affects: dcmiod/include/dcmtk/dcmiod/iodcommn.h
+           dcmiod/libsrc/iodcommn.cc
+
+- Create SourceImageItem from DcmDataset as input:
+  Thanks to Christian Herz <cherz at bwh.harvard.edu> for the suggested patch.
+  Affects: dcmfg/include/dcmtk/dcmfg/fgderimg.h
+           dcmfg/libsrc/fgderimg.cc
+
+- Moved import..() functionality into IODCommon:
+  Moved import...() into base class of IOD classes in order to make it usable
+  from all derived IOD implementations, e.g. Segmentation IOD in dcmseg, which
+  directly offered this function before, and Parametric Maps IOD in dcmpmap.
+  Affects: dcmiod/include/dcmtk/dcmiod/iodcommn.h
+           dcmiod/libsrc/iodcommn.cc
+           dcmseg/include/dcmtk/dcmseg/segdoc.h
+           dcmseg/libsrc/segdoc.cc
+
+**** Changes from 2016.08.03 (onken)
+
+- Switched VR and VM in comment.
+  Affects: dcmiod/include/dcmtk/dcmiod/modgeneralstudy.h
+
+**** Changes from 2016.07.27 (riesmeier)
+
+- Fixed warnings with Clang -Wparentheses-equality:
+  Fixed warnings reported by Clang compiler, which uses -Wparentheses-equality
+  by default, i.e. removed extraneous parentheses around equality comparison.
+  Also fixed various typos in comments.
+  Affects: dcmjpeg/libsrc/djcodece.cc
+
+**** Changes from 2016.07.25 (riesmeier)
+
+- Added explicit type cast to avoid warning:
+  Added explicit typecast to a parameter value in order to avoid a warning
+  reported by MSVC++ on Windows 64-bit systems.
+  Affects: dcmimgle/libsrc/dimoimg.cc
+
+- Changed type of local variable to avoid warning:
+  Changed type of local variable from size_t to unsigned long in order to
+  avoid a warning reported by MSVC++ on Windows 64-bit systems.
+  Affects: dcmjpeg/libsrc/ddpiimpl.cc
+
+**** Changes from 2016.07.19 (hasenpusch)
+
+- Fixed and refactored mutex & rwlock tests:
+  Made sure thread 2 starts after thread 1 claims the first lock.
+  Closes DCMTK bug #689.
+  Affects: ofstd/tests/tthread.cc
+
+**** Changes from 2016.07.18 (riesmeier)
+
+- Fixed typos in comments.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrsoprf.h
+           dcmsr/libcmr/cid5000.cc
+           oflog/include/dcmtk/oflog/oflog.h
+           oflog/libsrc/oflog.cc
+
+**** Changes from 2016.07.08 (hasenpusch)
+
+- Fixed potential buffer overflow in libcharls:
+  Libcharls' encoding facility now reallocates the given target buffer if
+  the initial capacity happens to be too small.
+  Closes DCMTK bug #688.
+  Affects: dcmjpls/libcharls/decodstr.h
+           dcmjpls/libcharls/encodstr.h
+           dcmjpls/libcharls/header.cc
+           dcmjpls/libcharls/intrface.cc
+           dcmjpls/libcharls/intrface.h
+           dcmjpls/libcharls/pubtypes.h
+           dcmjpls/libcharls/scan.h
+           dcmjpls/libcharls/streams.h
+           dcmjpls/libcharls/util.h
+           dcmjpls/libsrc/djcodece.cc
+
 **** Changes from 2016.06.30 (schlamelcher)
 
 - Updated CHANGES.361 for new development snapshot.
diff --git a/doxygen/htmldocs.cfg b/doxygen/htmldocs.cfg
index 5e869a6..a90c197 100644
--- a/doxygen/htmldocs.cfg
+++ b/doxygen/htmldocs.cfg
@@ -38,7 +38,7 @@ PROJECT_NAME           = DCMTK
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = "Version @DCMTK_VERSION@ 20160630"
+PROJECT_NUMBER         = "Version @DCMTK_VERSION@ 20170228"
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
@@ -725,7 +725,7 @@ WARN_IF_DOC_ERROR      = YES
 # documentation, but not about the absence of documentation.
 # The default value is: NO.
 
-WARN_NO_PARAMDOC       = NO
+WARN_NO_PARAMDOC       = YES
 
 # The WARN_FORMAT tag determines the format of the warning messages that doxygen
 # can produce. The string should contain the $file, $line, and $text tags, which
diff --git a/doxygen/htmldocs.dox b/doxygen/htmldocs.dox
index 770d447..b4ecff7 100644
--- a/doxygen/htmldocs.dox
+++ b/doxygen/htmldocs.dox
@@ -17,6 +17,7 @@ DCMTK contains the following sub-packages, each in its own sub-directory:
 \li \ref mod_dcmjpeg
 \li \ref mod_dcmjpls
 \li \ref mod_dcmnet
+\li \ref mod_dcmpmap
 \li \ref mod_dcmpstat
 \li \ref mod_dcmqrdb
 \li \ref mod_dcmrt
diff --git a/doxygen/manpages.cfg b/doxygen/manpages.cfg
index 668ff43..03e4f1b 100644
--- a/doxygen/manpages.cfg
+++ b/doxygen/manpages.cfg
@@ -38,7 +38,7 @@ PROJECT_NAME           = "OFFIS DCMTK"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = "@DCMTK_VERSION@ 20160630"
+PROJECT_NUMBER         = "@DCMTK_VERSION@ 20170228"
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/doxygen/manpages/man1/dcm2json.1 b/doxygen/manpages/man1/dcm2json.1
new file mode 100644
index 0000000..b94c04b
--- /dev/null
+++ b/doxygen/manpages/man1/dcm2json.1
@@ -0,0 +1,305 @@
+.TH "dcm2json" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.nh
+.SH NAME
+dcm2json \- Convert DICOM file and data set to JSON
+
+.SH "SYNOPSIS"
+.PP
+.PP
+.nf
+dcm2json [options] dcmfile-in [jsonfile-out]
+.fi
+.PP
+.SH "DESCRIPTION"
+.PP
+The \fBdcm2json\fP utility converts the contents of a DICOM file (file format or raw data set) to JSON (JavaScript Object Notation)\&. The output refers to the 'DICOM JSON Model', which is found in DICOM Part 18 Section F\&.
+.PP
+If \fBdcm2json\fP reads a raw data set (DICOM data without a file format meta-header) it will attempt to guess the transfer syntax by examining the first few bytes of the file\&. It is not always possible to correctly guess the transfer syntax and it is better to convert a data set to a file format whenever possible (using the \fBdcmconv\fP utility)\&. It is also possible to use the \fI-f\fP and \fI-t[ieb]\fP options to force \fBdcm2json\fP to read a data set with a particular transfer s [...]
+.SH "PARAMETERS"
+.PP
+.PP
+.nf
+dcmfile-in    DICOM input filename to be converted
+
+jsonfile-out  JSON output filename (default: stdout)
+.fi
+.PP
+.SH "OPTIONS"
+.PP
+.SS "general options"
+.PP
+.nf
+  -h    --help
+          print this help text and exit
+
+        --version
+          print version information and exit
+
+        --arguments
+          print expanded command line arguments
+
+  -q    --quiet
+          quiet mode, print no warnings and errors
+
+  -v    --verbose
+          verbose mode, print processing details
+
+  -d    --debug
+          debug mode, print debug information
+
+  -ll   --log-level  [l]evel: string constant
+          (fatal, error, warn, info, debug, trace)
+          use level l for the logger
+
+  -lc   --log-config  [f]ilename: string
+          use config file f for the logger
+.fi
+.PP
+.SS "input options"
+.PP
+.nf
+input file format:
+
+  +f    --read-file
+          read file format or data set (default)
+
+  +fo   --read-file-only
+          read file format only
+
+  -f    --read-dataset
+          read data set without file meta information
+
+input transfer syntax:
+
+  -t=   --read-xfer-auto
+          use TS recognition (default)
+
+  -td   --read-xfer-detect
+          ignore TS specified in the file meta header
+
+  -te   --read-xfer-little
+          read with explicit VR little endian TS
+
+  -tb   --read-xfer-big
+          read with explicit VR big endian TS
+
+  -ti   --read-xfer-implicit
+          read with implicit VR little endian TS
+.fi
+.PP
+.SS "output options"
+.PP
+.nf
+output format:
+
+  +fc   --formatted-code
+          output file with human readable formatting (default)
+
+  -fc   --compact-code
+          output without formatting (single line of code)
+
+  +m    --write-meta
+          write data set with meta information
+.fi
+.PP
+.SH "JSON Format"
+.PP
+The basic structure of the JSON output created from a DICOM file looks like the following (see DICOM Part 18 Section F for details):
+.PP
+.PP
+.nf
+{
+    "00080005": {
+        "vr": "CS",
+        "Value": [
+            "ISO_IR192"
+        ]
+    },
+    "00080020": {
+        "vr": "DT",
+        "Value": [
+            "20130409"
+        ]
+    },
+    "00080030": {
+        "vr": "TM",
+        "Value": [
+            "131600.0000"
+        ]
+    },
+    "00080050": {
+        "vr": "SH",
+        "Value": [
+            "11235813"
+        ]
+    },
+    "00080056": {
+        "vr": "CS",
+        "Value": [
+            "ONLINE"
+        ]
+    },
+    "00080061": {
+        "vr": "CS",
+        "Value": [
+            "CT",
+            "PET"
+        ]
+    },
+    "00080090": {
+        "vr": "PN",
+        "Value": [
+          {
+            "Alphabetic": "^Bob^^Dr."
+          }
+        ]
+    },
+    "00081190": {
+        "vr": "UR",
+        "Value": [
+            "http://wado.nema.org/studies/
+            1.2.392.200036.9116.2.2.2.1762893313.1029997326.945873"
+        ]
+    },
+    "00090010": {
+        "vr": "LO",
+        "Value": [
+            "Vendor A"
+        ]
+    },
+    "00091002": {
+        "vr": "UN",
+        "InlineBinary": "z0x9c8v7"
+    },
+    "00100010": {
+        "vr": "PN",
+        "Value": [
+          {
+            "Alphabetic": "Wang^XiaoDong"
+          }
+        ]
+    },
+    "00100020": {
+        "vr": "LO",
+        "Value": [
+            "12345"
+        ]
+    },
+    "00100021": {
+        "vr": "LO",
+        "Value": [
+            "Hospital A"
+        ]
+    },
+    "00100030": {
+        "vr": "DT",
+        "Value": [
+            "19670701"
+        ]
+    },
+    "00100040": {
+        "vr": "CS",
+        "Value": [
+            "M"
+        ]
+    },
+    "00101002": {
+        "vr": "SQ",
+        "Value": [
+            {
+                "00100020": {
+                    "vr": "LO",
+                    "Value": [
+                        "54321"
+                    ]
+                },
+                "00100021": {
+                    "vr": "LO",
+                    "Value": [
+                        "Hospital B"
+                    ]
+                }
+            },
+            {
+                "00100020": {
+                    "vr": "LO",
+                    "Value": [
+                        "24680"
+                    ]
+                },
+                "00100021": {
+                    "vr": "LO",
+                    "Value": [
+                        "Hospital C"
+                    ]
+                }
+            }
+        ]
+    },
+    "0020000D": {
+        "vr": "UI",
+        "Value": [
+            "1.2.392.200036.9116.2.2.2.1762893313.1029997326.945873"
+        ]
+    },
+    "00200010": {
+        "vr": "SH",
+        "Value": [
+            "11235813"
+        ]
+    },
+    "00201206": {
+        "vr": "IS",
+        "Value": [
+            4
+        ]
+    },
+    "00201208": {
+        "vr": "IS",
+        "Value": [
+            942
+        ]
+    }
+}
+.fi
+.PP
+.SS "Bulk Data"
+Binary data, i\&.e\&. DICOM element values with Value Representations (VR) of OB or OW, as well as OD, OF and UN values are by default not written to the JSON output because of their size\&. Instead, for each element, a new Universally Unique Identifier (UUID) is being generated and written as an value of a BulkDataURI JSON element\&. So far, there is no possibility to write an additional file to hold the binary data for each of the binary data chunks\&.
+.SH "NOTES"
+.PP
+.SS "Character Encoding"
+The JSON encoding is determined automatically from the DICOM attribute (0008,0005) 'Specific Character Set' using the following mapping:
+.PP
+.PP
+.nf
+ISO Latin 1   "ISO_IR 100"  =>  "UTF-8"
+ISO Latin 2   "ISO_IR 101"  =>  "UTF-8"
+ISO Latin 3   "ISO_IR 109"  =>  "UTF-8"
+ISO Latin 4   "ISO_IR 110"  =>  "UTF-8"
+ISO Latin 5   "ISO_IR 148"  =>  "UTF-8"
+Cyrillic      "ISO_IR 144"  =>  "UTF-8"
+Arabic        "ISO_IR 127"  =>  "UTF-8"
+Greek         "ISO_IR 126"  =>  "UTF-8"
+Hebrew        "ISO_IR 138"  =>  "UTF-8"
+.fi
+.PP
+.SH "LOGGING"
+.PP
+The level of logging output of the various command line tools and underlying libraries can be specified by the user\&. By default, only errors and warnings are written to the standard error stream\&. Using option \fI--verbose\fP also informational messages like processing details are reported\&. Option \fI--debug\fP can be used to get more details on the internal activity, e\&.g\&. for debugging purposes\&. Other logging levels can be selected using option \fI--log-level\fP\&. In \fI--qu [...]
+.PP
+In case the logging output should be written to file (optionally with logfile rotation), to syslog (Unix) or the event log (Windows) option \fI--log-config\fP can be used\&. This configuration file also allows for directing only certain messages to a particular output stream and for filtering certain messages based on the module or application where they are generated\&. An example configuration file is provided in \fI<etcdir>/logger\&.cfg\fP\&.
+.SH "COMMAND LINE"
+.PP
+All command line tools use the following notation for parameters: square brackets enclose optional values (0-1), three trailing dots indicate that multiple values are allowed (1-n), a combination of both means 0 to n values\&.
+.PP
+Command line options are distinguished from parameters by a leading '+' or '-' sign, respectively\&. Usually, order and position of command line options are arbitrary (i\&.e\&. they can appear anywhere)\&. However, if options are mutually exclusive the rightmost appearance is used\&. This behavior conforms to the standard evaluation rules of common Unix shells\&.
+.PP
+In addition, one or more command files can be specified using an '@' sign as a prefix to the filename (e\&.g\&. \fI at command\&.txt\fP)\&. Such a command argument is replaced by the content of the corresponding text file (multiple whitespaces are treated as a single separator unless they appear between two quotation marks) prior to any further evaluation\&. Please note that a command file cannot contain another command file\&. This simple but effective approach allows one to summarize comm [...]
+.SH "ENVIRONMENT"
+.PP
+The \fBdcm2json\fP utility will attempt to load DICOM data dictionaries specified in the \fIDCMDICTPATH\fP environment variable\&. By default, i\&.e\&. if the \fIDCMDICTPATH\fP environment variable is not set, the file \fI<datadir>/dicom\&.dic\fP will be loaded unless the dictionary is built into the application (default for Windows)\&.
+.PP
+The default behavior should be preferred and the \fIDCMDICTPATH\fP environment variable only used when alternative data dictionaries are required\&. The \fIDCMDICTPATH\fP environment variable has the same format as the Unix shell \fIPATH\fP variable in that a colon (':') separates entries\&. On Windows systems, a semicolon (';') is used as a separator\&. The data dictionary code will attempt to load each file specified in the \fIDCMDICTPATH\fP environment variable\&. It is an error if no [...]
+.SH "COPYRIGHT"
+.PP
+Copyright (C) 2016-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dcm2pdf.1 b/doxygen/manpages/man1/dcm2pdf.1
index d3c602c..6fc6b80 100644
--- a/doxygen/manpages/man1/dcm2pdf.1
+++ b/doxygen/manpages/man1/dcm2pdf.1
@@ -1,4 +1,4 @@
-.TH "dcm2pdf" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcm2pdf" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcm2pdf \- Extract PDF file from DICOM encapsulated PDF
diff --git a/doxygen/manpages/man1/dcm2pnm.1 b/doxygen/manpages/man1/dcm2pnm.1
index 2616a6c..fa717ac 100644
--- a/doxygen/manpages/man1/dcm2pnm.1
+++ b/doxygen/manpages/man1/dcm2pnm.1
@@ -1,4 +1,4 @@
-.TH "dcm2pnm" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcm2pnm" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcm2pnm \- Convert DICOM images to PGM/PPM, PNG, TIFF or BMP
diff --git a/doxygen/manpages/man1/dcm2xml.1 b/doxygen/manpages/man1/dcm2xml.1
index 67efbe6..fb49805 100644
--- a/doxygen/manpages/man1/dcm2xml.1
+++ b/doxygen/manpages/man1/dcm2xml.1
@@ -1,4 +1,4 @@
-.TH "dcm2xml" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcm2xml" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcm2xml \- Convert DICOM file and data set to XML
@@ -120,7 +120,8 @@ specific character set:
           convert all element values that are affected
           by Specific Character Set (0008,0005) to UTF-8
 
-          # requires support from the libiconv toolkit
+          # requires support from an underlying character encoding library
+          # (see output of --version on which one is available)
 .fi
 .PP
 .SS "output options"
@@ -283,4 +284,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBxml2dcm\fP(1), \fBdcmconv\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2002-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2002-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dcmcjpeg.1 b/doxygen/manpages/man1/dcmcjpeg.1
index 58345cf..ede78bc 100644
--- a/doxygen/manpages/man1/dcmcjpeg.1
+++ b/doxygen/manpages/man1/dcmcjpeg.1
@@ -1,4 +1,4 @@
-.TH "dcmcjpeg" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmcjpeg" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmcjpeg \- Encode DICOM file to JPEG transfer syntax
diff --git a/doxygen/manpages/man1/dcmcjpls.1 b/doxygen/manpages/man1/dcmcjpls.1
index ca50467..a802e25 100644
--- a/doxygen/manpages/man1/dcmcjpls.1
+++ b/doxygen/manpages/man1/dcmcjpls.1
@@ -1,4 +1,4 @@
-.TH "dcmcjpls" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmcjpls" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmcjpls \- Encode DICOM file to JPEG-LS transfer syntax
diff --git a/doxygen/manpages/man1/dcmconv.1 b/doxygen/manpages/man1/dcmconv.1
index 5f9fa60..39571ca 100644
--- a/doxygen/manpages/man1/dcmconv.1
+++ b/doxygen/manpages/man1/dcmconv.1
@@ -1,4 +1,4 @@
-.TH "dcmconv" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmconv" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmconv \- Convert DICOM file encoding
@@ -148,6 +148,30 @@ handling of wrong delimitation items:
   +rd  --replace-wrong-delim
          replace wrong sequence/item delimitation items
 
+handling of illegal undefined length OB/OW elements:
+
+  -oi  --illegal-obow-rej
+         reject dataset with illegal element (default)
+
+  +oi  --illegal-obow-conv
+         convert undefined length OB/OW element to SQ
+
+handling of VOI LUT Sequence with OW VR and explicit length:
+
+  -vi  --illegal-voi-rej
+         reject dataset with illegal VOI LUT (default)
+
+  +vi  --illegal-voi-conv
+         convert illegal VOI LUT to SQ
+
+handling of explicit length pixel data for encaps. transfer syntaxes:
+
+  -pe  --abort-expl-pixdata
+         abort on explicit length pixel data (default)
+
+  +pe  --use-expl-pixdata
+         use explicit length pixel data
+
 general handling of parser errors:
 
   +Ep  --ignore-parse-errors
@@ -183,7 +207,8 @@ bitstream format of deflated input:
 .nf
 specific character set:
 
-  # the following options require support from the libiconv toolkit
+  # the following options require support from an underlying character
+  # encoding library (see output of --version on which one is available)
 
   +U8  --convert-to-utf8
          convert all element values that are affected
@@ -318,4 +343,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmdump\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1994-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1994-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dcmcrle.1 b/doxygen/manpages/man1/dcmcrle.1
index 3cf798e..92f515c 100644
--- a/doxygen/manpages/man1/dcmcrle.1
+++ b/doxygen/manpages/man1/dcmcrle.1
@@ -1,4 +1,4 @@
-.TH "dcmcrle" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmcrle" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmcrle \- Encode DICOM file to RLE transfer syntax
diff --git a/doxygen/manpages/man1/dcmdjpeg.1 b/doxygen/manpages/man1/dcmdjpeg.1
index 38264e8..da02ea4 100644
--- a/doxygen/manpages/man1/dcmdjpeg.1
+++ b/doxygen/manpages/man1/dcmdjpeg.1
@@ -1,4 +1,4 @@
-.TH "dcmdjpeg" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdjpeg" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdjpeg \- Decode JPEG-compressed DICOM file
@@ -164,7 +164,14 @@ workaround options for incorrect JPEG encodings:
   # This flag enables a correct decompression of such faulty images, but
   # at the same time will cause an incorrect decompression of correctly
   # compressed images. Use with care.
-.fi
+
+  +wi   --workaround-incpl
+          enable workaround for incomplete JPEG data
+
+  # This option causes dcmjpeg to ignore incomplete JPEG data
+  # at the end of a compressed fragment and to start decompressing
+  # the next frame from the next fragment (if any). This permits
+  # images with incomplete JPEG data to be decoded..fi
 .PP
 .SS "output options"
 .PP
@@ -280,4 +287,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmcjpeg\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2001-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2001-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dcmdjpls.1 b/doxygen/manpages/man1/dcmdjpls.1
index 4e61ba5..297f2b4 100644
--- a/doxygen/manpages/man1/dcmdjpls.1
+++ b/doxygen/manpages/man1/dcmdjpls.1
@@ -1,4 +1,4 @@
-.TH "dcmdjpls" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdjpls" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdjpls \- Decode JPEG-LS compressed DICOM file
diff --git a/doxygen/manpages/man1/dcmdrle.1 b/doxygen/manpages/man1/dcmdrle.1
index 8af08b0..a8d2958 100644
--- a/doxygen/manpages/man1/dcmdrle.1
+++ b/doxygen/manpages/man1/dcmdrle.1
@@ -1,4 +1,4 @@
-.TH "dcmdrle" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdrle" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdrle \- Decode RLE-compressed DICOM file
diff --git a/doxygen/manpages/man1/dcmdspfn.1 b/doxygen/manpages/man1/dcmdspfn.1
index ba9a84d..0fd64a9 100644
--- a/doxygen/manpages/man1/dcmdspfn.1
+++ b/doxygen/manpages/man1/dcmdspfn.1
@@ -1,4 +1,4 @@
-.TH "dcmdspfn" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdspfn" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdspfn \- Export standard display curves to a text file
diff --git a/doxygen/manpages/man1/dcmdump.1 b/doxygen/manpages/man1/dcmdump.1
index fe755b2..2684b0e 100644
--- a/doxygen/manpages/man1/dcmdump.1
+++ b/doxygen/manpages/man1/dcmdump.1
@@ -1,4 +1,4 @@
-.TH "dcmdump" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdump" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdump \- Dump DICOM file and data set
@@ -175,6 +175,30 @@ handling of wrong delimitation items:
   +rd  --replace-wrong-delim
          replace wrong sequence/item delimitation items
 
+handling of illegal undefined length OB/OW elements:
+
+  -oi  --illegal-obow-rej
+         reject dataset with illegal element (default)
+
+  +oi  --illegal-obow-conv
+         convert undefined length OB/OW element to SQ
+
+handling of VOI LUT Sequence with OW VR and explicit length:
+
+  -vi  --illegal-voi-rej
+         reject dataset with illegal VOI LUT (default)
+
+  +vi  --illegal-voi-conv
+         convert illegal VOI LUT to SQ
+
+handling of explicit length pixel data for encaps. transfer syntaxes:
+
+  -pe  --abort-expl-pixdata
+         abort on explicit length pixel data (default)
+
+  +pe  --use-expl-pixdata
+         use explicit length pixel data
+
 general handling of parser errors:
 
   +Ep  --ignore-parse-errors
@@ -214,7 +238,8 @@ specific character set:
          convert all element values that are affected
          by Specific Character Set (0008,0005) to UTF-8
 
-         # requires support from the libiconv toolkit
+         # requires support from an underlying character encoding library
+         # (see output of --version on which one is available)
 .fi
 .PP
 .SS "output options"
@@ -333,4 +358,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdump2dcm\fP(1), \fBdcmconv\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1994-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1994-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dcmftest.1 b/doxygen/manpages/man1/dcmftest.1
index a0b2280..dbe7053 100644
--- a/doxygen/manpages/man1/dcmftest.1
+++ b/doxygen/manpages/man1/dcmftest.1
@@ -1,4 +1,4 @@
-.TH "dcmftest" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmftest" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmftest \- Test if file uses DICOM part 10 format
diff --git a/doxygen/manpages/man1/dcmgpdir.1 b/doxygen/manpages/man1/dcmgpdir.1
index 27b8897..b197a48 100644
--- a/doxygen/manpages/man1/dcmgpdir.1
+++ b/doxygen/manpages/man1/dcmgpdir.1
@@ -1,4 +1,4 @@
-.TH "dcmgpdir" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmgpdir" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmgpdir \- Create a general purpose DICOMDIR
diff --git a/doxygen/manpages/man1/dcmj2pnm.1 b/doxygen/manpages/man1/dcmj2pnm.1
index 7d628f7..f30c77f 100644
--- a/doxygen/manpages/man1/dcmj2pnm.1
+++ b/doxygen/manpages/man1/dcmj2pnm.1
@@ -1,4 +1,4 @@
-.TH "dcmj2pnm" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmj2pnm" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmj2pnm \- Convert DICOM images to PGM/PPM, PNG, TIFF, JPEG or BMP
diff --git a/doxygen/manpages/man1/dcml2pnm.1 b/doxygen/manpages/man1/dcml2pnm.1
index 45e8eac..8d9eb94 100644
--- a/doxygen/manpages/man1/dcml2pnm.1
+++ b/doxygen/manpages/man1/dcml2pnm.1
@@ -1,4 +1,4 @@
-.TH "dcml2pnm" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcml2pnm" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcml2pnm \- Convert DICOM images to PGM/PPM, PNG, TIFF or BMP
diff --git a/doxygen/manpages/man1/dcmmkcrv.1 b/doxygen/manpages/man1/dcmmkcrv.1
index 2ff7a1d..049918d 100644
--- a/doxygen/manpages/man1/dcmmkcrv.1
+++ b/doxygen/manpages/man1/dcmmkcrv.1
@@ -1,4 +1,4 @@
-.TH "dcmmkcrv" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmmkcrv" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmmkcrv \- Add 2D curve data to image
diff --git a/doxygen/manpages/man1/dcmmkdir.1 b/doxygen/manpages/man1/dcmmkdir.1
index 2d152a6..5faba29 100644
--- a/doxygen/manpages/man1/dcmmkdir.1
+++ b/doxygen/manpages/man1/dcmmkdir.1
@@ -1,4 +1,4 @@
-.TH "dcmmkdir" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmmkdir" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmmkdir \- Create a DICOMDIR file
diff --git a/doxygen/manpages/man1/dcmmklut.1 b/doxygen/manpages/man1/dcmmklut.1
index 5b53dab..5f8a9d8 100644
--- a/doxygen/manpages/man1/dcmmklut.1
+++ b/doxygen/manpages/man1/dcmmklut.1
@@ -1,4 +1,4 @@
-.TH "dcmmklut" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmmklut" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmmklut \- Create DICOM look-up tables
diff --git a/doxygen/manpages/man1/dcmodify.1 b/doxygen/manpages/man1/dcmodify.1
index 414f5fe..70794be 100644
--- a/doxygen/manpages/man1/dcmodify.1
+++ b/doxygen/manpages/man1/dcmodify.1
@@ -1,4 +1,4 @@
-.TH "dcmodify" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmodify" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmodify \- Modify DICOM files
diff --git a/doxygen/manpages/man1/dcmp2pgm.1 b/doxygen/manpages/man1/dcmp2pgm.1
index da0e53b..42b58d7 100644
--- a/doxygen/manpages/man1/dcmp2pgm.1
+++ b/doxygen/manpages/man1/dcmp2pgm.1
@@ -1,4 +1,4 @@
-.TH "dcmp2pgm" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmp2pgm" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmp2pgm \- Read DICOM image and presentation state and render bitmap
@@ -83,6 +83,12 @@ bitmap-out   output DICOM image or PGM bitmap
          save presentation state to file
 .fi
 .PP
+.SH "NOTES"
+.PP
+.SS "Limitations"
+Please note that the \fBdcmp2pgm\fP tool does not render all aspects that are defined by the Grayscale Softcopy Presentation State (GSPS) object but only those that are supported by the underlying DCMTK classes\&. In particular, textual and graphical annotations will not be visible in the output image\&. The reason is that these aspects of a GSPS object are typically rendered by DICOMscope, the graphical user interface that is put on top of the related DCMTK classes and written in Java\&.
+.PP
+Also concepts that were introduced after the initial definition of the GSPS IOD (see Supplement 33) are ignored\&. This includes Supplement 120 with its extended features like e\&.g\&. Compound Graphics\&.
 .SH "LOGGING"
 .PP
 The level of logging output of the various command line tools and underlying libraries can be specified by the user\&. By default, only errors and warnings are written to the standard error stream\&. Using option \fI--verbose\fP also informational messages like processing details are reported\&. Option \fI--debug\fP can be used to get more details on the internal activity, e\&.g\&. for debugging purposes\&. Other logging levels can be selected using option \fI--log-level\fP\&. In \fI--qu [...]
@@ -105,4 +111,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fI<etcdir>/dcmpstat\&.cfg\fP - sample configuration file
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1998-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1998-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dcmprscp.1 b/doxygen/manpages/man1/dcmprscp.1
index cff018b..7bec28b 100644
--- a/doxygen/manpages/man1/dcmprscp.1
+++ b/doxygen/manpages/man1/dcmprscp.1
@@ -1,4 +1,4 @@
-.TH "dcmprscp" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmprscp" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmprscp \- DICOM basic grayscale print management SCP
diff --git a/doxygen/manpages/man1/dcmprscu.1 b/doxygen/manpages/man1/dcmprscu.1
index 298279e..01a5242 100644
--- a/doxygen/manpages/man1/dcmprscu.1
+++ b/doxygen/manpages/man1/dcmprscu.1
@@ -1,4 +1,4 @@
-.TH "dcmprscu" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmprscu" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmprscu \- Print spooler for presentation state viewer
diff --git a/doxygen/manpages/man1/dcmpschk.1 b/doxygen/manpages/man1/dcmpschk.1
index dd3102f..58af085 100644
--- a/doxygen/manpages/man1/dcmpschk.1
+++ b/doxygen/manpages/man1/dcmpschk.1
@@ -1,4 +1,4 @@
-.TH "dcmpschk" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpschk" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmpschk \- Checking tool for presentation states
diff --git a/doxygen/manpages/man1/dcmpsmk.1 b/doxygen/manpages/man1/dcmpsmk.1
index c738149..29121a0 100644
--- a/doxygen/manpages/man1/dcmpsmk.1
+++ b/doxygen/manpages/man1/dcmpsmk.1
@@ -1,4 +1,4 @@
-.TH "dcmpsmk" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpsmk" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmpsmk \- Create DICOM grayscale softcopy presentation state
diff --git a/doxygen/manpages/man1/dcmpsprt.1 b/doxygen/manpages/man1/dcmpsprt.1
index cecf66c..9be27dd 100644
--- a/doxygen/manpages/man1/dcmpsprt.1
+++ b/doxygen/manpages/man1/dcmpsprt.1
@@ -1,4 +1,4 @@
-.TH "dcmpsprt" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpsprt" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmpsprt \- Read DICOM images and presentation states and render print job
diff --git a/doxygen/manpages/man1/dcmpsrcv.1 b/doxygen/manpages/man1/dcmpsrcv.1
index fc329a4..0a0b14e 100644
--- a/doxygen/manpages/man1/dcmpsrcv.1
+++ b/doxygen/manpages/man1/dcmpsrcv.1
@@ -1,4 +1,4 @@
-.TH "dcmpsrcv" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpsrcv" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmpsrcv \- Network receive for presentation state viewer
diff --git a/doxygen/manpages/man1/dcmpssnd.1 b/doxygen/manpages/man1/dcmpssnd.1
index cfd970b..65963a2 100644
--- a/doxygen/manpages/man1/dcmpssnd.1
+++ b/doxygen/manpages/man1/dcmpssnd.1
@@ -1,4 +1,4 @@
-.TH "dcmpssnd" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpssnd" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmpssnd \- Network send for presentation state viewer
diff --git a/doxygen/manpages/man1/dcmqridx.1 b/doxygen/manpages/man1/dcmqridx.1
index e02f750..62b9248 100644
--- a/doxygen/manpages/man1/dcmqridx.1
+++ b/doxygen/manpages/man1/dcmqridx.1
@@ -1,4 +1,4 @@
-.TH "dcmqridx" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmqridx" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmqridx \- Register a DICOM image file in an image database index file
diff --git a/doxygen/manpages/man1/dcmqrscp.1 b/doxygen/manpages/man1/dcmqrscp.1
index be00041..8412ebe 100644
--- a/doxygen/manpages/man1/dcmqrscp.1
+++ b/doxygen/manpages/man1/dcmqrscp.1
@@ -1,4 +1,4 @@
-.TH "dcmqrscp" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmqrscp" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmqrscp \- DICOM image archive (central test node)
@@ -217,6 +217,15 @@ preferred network transfer syntaxes (incoming associations):
   +xl   --prefer-mpeg4-bd
           prefer MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS
 
+  +x2   --prefer-mpeg4-2-2d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos
+
+  +x3   --prefer-mpeg4-2-3d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos
+
+  +xo   --prefer-mpeg4-2-st
+          prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS
+
   +xr   --prefer-rle
           prefer RLE lossless TS
 
@@ -281,6 +290,15 @@ proposed transmission transfer syntaxes (outgoing associations):
   -xl   --propose-mpeg4-bd
           propose MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS only
 
+  -x2   --propose-mpeg4-2-2d
+          propose MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos only
+
+  -x3   --propose-mpeg4-2-3d
+          propose MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos only
+
+  -xo   --propose-mpeg4-2-st
+          propose MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS only
+
   -xr   --propose-rle
           propose RLE lossless TS
           and all uncompressed transfer syntaxes
@@ -420,6 +438,42 @@ deflate compression level (only with --propose-deflated or
 
   +cl   --compression-level  [l]evel: integer (default: 6)
           0=uncompressed, 1=fastest, 9=best compression
+
+specific character set:
+  +Cr   --use-request-charset
+          try to convert all element values that are
+          affected by Specific Character Set (0008,0005)
+          to the one specified in the request data set,
+          fall back to the one specified via
+          --convert-to-xxx if that is not possible
+          (default, unless overridden by config file)
+
+  -Cr   --override-charset
+          convert affected element values to the character
+          set specified via --convert-to-xxx, ignoring
+          the one specified in the request
+
+  +A7   --convert-to-ascii
+          convert affected element values to 7-bit ASCII
+          (default, unless overridden by config file)
+
+  +U8   --convert-to-utf8
+          convert affected element values to UTF-8
+
+  +L1   --convert-to-latin1
+          convert affected element values to ISO 8859-1
+
+  +C    --convert-to-charset  [c]harset: string
+          convert affected element values to the character
+          set specified by the DICOM defined term c
+
+  -Ct   --transliterate
+          try to approximate characters that cannot be
+          represented through similar looking characters
+
+  -Cd   --discard-illegal
+          discard characters that cannot be represented
+          in destination character set
 .fi
 .PP
 .SH "NOTES"
@@ -450,12 +504,14 @@ DigitalIntraOralXRayImageStorageForPresentation      1.2.840.10008.5.1.4.1.1.1.3
 DigitalIntraOralXRayImageStorageForProcessing        1.2.840.10008.5.1.4.1.1.1.3.1
 CTImageStorage                                       1.2.840.10008.5.1.4.1.1.2
 EnhancedCTImageStorage                               1.2.840.10008.5.1.4.1.1.2.1
+LegacyConvertedEnhancedCTImageStorage                1.2.840.10008.5.1.4.1.1.2.2
 RETIRED_UltrasoundMultiframeImageStorage             1.2.840.10008.5.1.4.1.1.3
 UltrasoundMultiframeImageStorage                     1.2.840.10008.5.1.4.1.1.3.1
 MRImageStorage                                       1.2.840.10008.5.1.4.1.1.4
 EnhancedMRImageStorage                               1.2.840.10008.5.1.4.1.1.4.1
 MRSpectroscopyStorage                                1.2.840.10008.5.1.4.1.1.4.2
 EnhancedMRColorImageStorage                          1.2.840.10008.5.1.4.1.1.4.3
+LegacyConvertedEnhancedMRImageStorage                1.2.840.10008.5.1.4.1.1.4.4
 RETIRED_NuclearMedicineImageStorage                  1.2.840.10008.5.1.4.1.1.5
 RETIRED_UltrasoundImageStorage                       1.2.840.10008.5.1.4.1.1.6
 UltrasoundImageStorage                               1.2.840.10008.5.1.4.1.1.6.1
@@ -542,6 +598,7 @@ ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
 PositronEmissionTomographyImageStorage               1.2.840.10008.5.1.4.1.1.128
+LegacyConvertedEnhancedPETImageStorage               1.2.840.10008.5.1.4.1.1.128.1
 RETIRED_StandalonePETCurveStorage                    1.2.840.10008.5.1.4.1.1.129
 EnhancedPETImageStorage                              1.2.840.10008.5.1.4.1.1.130
 BasicStructuredDisplayStorage                        1.2.840.10008.5.1.4.1.1.131
@@ -555,9 +612,6 @@ RTTreatmentSummaryRecordStorage                      1.2.840.10008.5.1.4.1.1.481
 RTIonPlanStorage                                     1.2.840.10008.5.1.4.1.1.481.8
 RTIonBeamsTreatmentRecordStorage                     1.2.840.10008.5.1.4.1.1.481.9
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
-GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
-ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
-ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
 .fi
 .PP
 .PP
@@ -590,6 +644,9 @@ MPEG2MainProfileAtMainLevelTransferSyntax            1.2.840.10008.1.2.4.100
 MPEG2MainProfileAtHighLevelTransferSyntax            1.2.840.10008.1.2.4.101
 MPEG4HighProfileLevel4_1TransferSyntax               1.2.840.10008.1.2.4.102
 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
+MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
+MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
+MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 .fi
 .PP
@@ -732,6 +789,7 @@ RadiopharmaceuticalRadiationDoseSRStorage            1.2.840.10008.5.1.4.1.1.88.
 ColonCADSRStorage                                    1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.70
 AcquisitionContextSRStorage                          1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                         1.2.840.10008.5.1.4.1.1.88.72
 ContentAssessmentResultsStorage                      1.2.840.10008.5.1.4.1.1.90.1
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
@@ -740,6 +798,8 @@ LegacyConvertedEnhancedPETImageStorage               1.2.840.10008.5.1.4.1.1.128
 RETIRED_StandalonePETCurveStorage                    1.2.840.10008.5.1.4.1.1.129
 EnhancedPETImageStorage                              1.2.840.10008.5.1.4.1.1.130
 BasicStructuredDisplayStorage                        1.2.840.10008.5.1.4.1.1.131
+CTDefinedProcedureProtocolStorage                    1.2.840.10008.5.1.4.1.1.200.1
+CTPerformedProcedureProtocolStorage                  1.2.840.10008.5.1.4.1.1.200.2
 RTImageStorage                                       1.2.840.10008.5.1.4.1.1.481.1
 RTDoseStorage                                        1.2.840.10008.5.1.4.1.1.481.2
 RTStructureSetStorage                                1.2.840.10008.5.1.4.1.1.481.3
@@ -761,9 +821,6 @@ DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601
 DRAFT_RTBeamsDeliveryInstructionStorage              1.2.840.10008.5.1.4.34.1
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
 RTBrachyApplicationSetupDeliveryInstructionStorage   1.2.840.10008.5.1.4.34.10
-GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
-ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
-ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
 
 PrivateShutdownSOPClass                              1.2.276.0.7230010.3.4.1915765545.18030.917282194.0
 .fi
@@ -798,6 +855,9 @@ MPEG2MainProfileAtMainLevelTransferSyntax            1.2.840.10008.1.2.4.100
 MPEG2MainProfileAtHighLevelTransferSyntax            1.2.840.10008.1.2.4.101
 MPEG4HighProfileLevel4_1TransferSyntax               1.2.840.10008.1.2.4.102
 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
+MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
+MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
+MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 .fi
 .PP
@@ -900,4 +960,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmqridx\fP(1), \fBdcmqrti\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1993-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1993-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dcmqrti.1 b/doxygen/manpages/man1/dcmqrti.1
index 0b48e69..410438c 100644
--- a/doxygen/manpages/man1/dcmqrti.1
+++ b/doxygen/manpages/man1/dcmqrti.1
@@ -1,4 +1,4 @@
-.TH "dcmqrti" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmqrti" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmqrti \- The Terminal Initiator Telnet Client Program
diff --git a/doxygen/manpages/man1/dcmquant.1 b/doxygen/manpages/man1/dcmquant.1
index 4dcfd99..9d168ba 100644
--- a/doxygen/manpages/man1/dcmquant.1
+++ b/doxygen/manpages/man1/dcmquant.1
@@ -1,4 +1,4 @@
-.TH "dcmquant" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmquant" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmquant \- Convert DICOM color images to palette color
diff --git a/doxygen/manpages/man1/dcmrecv.1 b/doxygen/manpages/man1/dcmrecv.1
index bc2d224..434cc5a 100644
--- a/doxygen/manpages/man1/dcmrecv.1
+++ b/doxygen/manpages/man1/dcmrecv.1
@@ -1,4 +1,4 @@
-.TH "dcmrecv" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmrecv" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmrecv \- Simple DICOM storage SCP (receiver)
@@ -283,4 +283,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmsend\fP(1), \fBstorescu\fP(1), \fBstorescp\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2013-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2013-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dcmscale.1 b/doxygen/manpages/man1/dcmscale.1
index 77b73e1..36bc438 100644
--- a/doxygen/manpages/man1/dcmscale.1
+++ b/doxygen/manpages/man1/dcmscale.1
@@ -1,4 +1,4 @@
-.TH "dcmscale" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmscale" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmscale \- Scale DICOM images
diff --git a/doxygen/manpages/man1/dcmsend.1 b/doxygen/manpages/man1/dcmsend.1
index 2d04ec1..67d0dd5 100644
--- a/doxygen/manpages/man1/dcmsend.1
+++ b/doxygen/manpages/man1/dcmsend.1
@@ -1,4 +1,4 @@
-.TH "dcmsend" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmsend" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmsend \- Simple DICOM storage SCU (sender)
@@ -317,4 +317,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmrecv\fP(1), \fBstorescu\fP(1), \fBstorescp\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2011-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2011-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dcmsign.1 b/doxygen/manpages/man1/dcmsign.1
index 53e718b..fa45c4a 100644
--- a/doxygen/manpages/man1/dcmsign.1
+++ b/doxygen/manpages/man1/dcmsign.1
@@ -1,4 +1,4 @@
-.TH "dcmsign" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmsign" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmsign \- Sign and Verify DICOM Files
diff --git a/doxygen/manpages/man1/dcod2lum.1 b/doxygen/manpages/man1/dcod2lum.1
index aec7f54..cde5c6d 100644
--- a/doxygen/manpages/man1/dcod2lum.1
+++ b/doxygen/manpages/man1/dcod2lum.1
@@ -1,4 +1,4 @@
-.TH "dcod2lum" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcod2lum" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcod2lum \- Convert hardcopy characteristic curve file to softcopy format
diff --git a/doxygen/manpages/man1/dconvlum.1 b/doxygen/manpages/man1/dconvlum.1
index 93d71b8..547db75 100644
--- a/doxygen/manpages/man1/dconvlum.1
+++ b/doxygen/manpages/man1/dconvlum.1
@@ -1,4 +1,4 @@
-.TH "dconvlum" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dconvlum" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dconvlum \- Convert VeriLUM files to DCMTK display files
diff --git a/doxygen/manpages/man1/drtdump.1 b/doxygen/manpages/man1/drtdump.1
index 69bc3bd..6c7e7ad 100644
--- a/doxygen/manpages/man1/drtdump.1
+++ b/doxygen/manpages/man1/drtdump.1
@@ -1,4 +1,4 @@
-.TH "drtdump" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "drtdump" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 drtdump \- Dump DICOM RT file and data set
diff --git a/doxygen/manpages/man1/dsr2html.1 b/doxygen/manpages/man1/dsr2html.1
index 6471461..80c14b7 100644
--- a/doxygen/manpages/man1/dsr2html.1
+++ b/doxygen/manpages/man1/dsr2html.1
@@ -1,4 +1,4 @@
-.TH "dsr2html" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dsr2html" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dsr2html \- Render DICOM SR file and data set to HTML/XHTML
@@ -137,7 +137,8 @@ specific character set:
          convert all element values that are affected
          by Specific Character Set (0008,0005) to UTF-8
 
-         # requires support from the libiconv toolkit
+         # requires support from an underlying character encoding library
+         # (see output of --version on which one is available)
 .fi
 .PP
 .SS "output options"
@@ -238,6 +239,8 @@ XRayRadiationDoseSRStorage                  1.2.840.10008.5.1.4.1.1.88.67
 RadiopharmaceuticalRadiationDoseSRStorage   1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                           1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage           1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                 1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                1.2.840.10008.5.1.4.1.1.88.72
 .fi
 .PP
 .SS "Character Encoding"
@@ -293,4 +296,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmconv\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2000-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2000-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dsr2xml.1 b/doxygen/manpages/man1/dsr2xml.1
index 49b116c..7f5c82a 100644
--- a/doxygen/manpages/man1/dsr2xml.1
+++ b/doxygen/manpages/man1/dsr2xml.1
@@ -1,4 +1,4 @@
-.TH "dsr2xml" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dsr2xml" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dsr2xml \- Convert DICOM SR file and data set to XML
@@ -131,7 +131,8 @@ specific character set:
          convert all element values that are affected
          by Specific Character Set (0008,0005) to UTF-8
 
-         # requires support from the libiconv toolkit
+         # requires support from an underlying character encoding library
+         # (see output of --version on which one is available)
 .fi
 .PP
 .SS "output options"
@@ -202,6 +203,8 @@ XRayRadiationDoseSRStorage                  1.2.840.10008.5.1.4.1.1.88.67
 RadiopharmaceuticalRadiationDoseSRStorage   1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                           1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage           1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                 1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                1.2.840.10008.5.1.4.1.1.88.72
 .fi
 .PP
 .PP
@@ -263,4 +266,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBxml2dsr\fP(1), \fBdcmconv\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2000-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2000-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dsrdump.1 b/doxygen/manpages/man1/dsrdump.1
index 7227495..3e39de1 100644
--- a/doxygen/manpages/man1/dsrdump.1
+++ b/doxygen/manpages/man1/dsrdump.1
@@ -1,4 +1,4 @@
-.TH "dsrdump" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dsrdump" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dsrdump \- Dump DICOM SR file and data set
@@ -121,7 +121,8 @@ specific character set:
           convert all element values that are affected
           by Specific Character Set (0008,0005) to UTF-8
 
-          # requires support from the libiconv toolkit
+          # requires support from an underlying character encoding library
+          # (see output of --version on which one is available)
 .fi
 .PP
 .SS "output options"
@@ -216,6 +217,8 @@ XRayRadiationDoseSRStorage                  1.2.840.10008.5.1.4.1.1.88.67
 RadiopharmaceuticalRadiationDoseSRStorage   1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                           1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage           1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                 1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                1.2.840.10008.5.1.4.1.1.88.72
 .fi
 .PP
 .SH "LOGGING"
@@ -240,4 +243,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmconv\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2000-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2000-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dump2dcm.1 b/doxygen/manpages/man1/dump2dcm.1
index 8ef03f6..a3f23fb 100644
--- a/doxygen/manpages/man1/dump2dcm.1
+++ b/doxygen/manpages/man1/dump2dcm.1
@@ -1,4 +1,4 @@
-.TH "dump2dcm" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dump2dcm" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dump2dcm \- Convert ASCII dump to DICOM file
diff --git a/doxygen/manpages/man1/echoscu.1 b/doxygen/manpages/man1/echoscu.1
index a3c9fa9..7e76e42 100644
--- a/doxygen/manpages/man1/echoscu.1
+++ b/doxygen/manpages/man1/echoscu.1
@@ -1,4 +1,4 @@
-.TH "echoscu" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "echoscu" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 echoscu \- DICOM verification (C-ECHO) SCU
@@ -66,7 +66,7 @@ application entity titles:
 
 association negotiation debugging:
 
-  -pts  --propose-ts  [n]umber: integer (1..33)
+  -pts  --propose-ts  [n]umber: integer (1..38)
           propose n transfer syntaxes
 
   -ppc  --propose-pc  [n]umber: integer (1..128)
@@ -127,6 +127,7 @@ key and certificate file format:
           read keys and certificates as DER file
 
 certification authority:
+
   +cf   --add-cert-file  [c]ertificate filename: string
           add certificate file to list of certificates
 
@@ -201,4 +202,4 @@ The \fBechoscu\fP utility will attempt to load DICOM data dictionaries specified
 The default behavior should be preferred and the \fIDCMDICTPATH\fP environment variable only used when alternative data dictionaries are required\&. The \fIDCMDICTPATH\fP environment variable has the same format as the Unix shell \fIPATH\fP variable in that a colon (':') separates entries\&. On Windows systems, a semicolon (';') is used as a separator\&. The data dictionary code will attempt to load each file specified in the \fIDCMDICTPATH\fP environment variable\&. It is an error if no [...]
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1994-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1994-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/findscu.1 b/doxygen/manpages/man1/findscu.1
index caf1e42..a3afe36 100644
--- a/doxygen/manpages/man1/findscu.1
+++ b/doxygen/manpages/man1/findscu.1
@@ -1,4 +1,4 @@
-.TH "findscu" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "findscu" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 findscu \- DICOM query (C-FIND) SCU
@@ -340,4 +340,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBmovescu\fP(1), \fBdump2dcm\fP(1), \fBdcmodify\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1994-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1994-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/getscu.1 b/doxygen/manpages/man1/getscu.1
index d78c93c..13450ef 100644
--- a/doxygen/manpages/man1/getscu.1
+++ b/doxygen/manpages/man1/getscu.1
@@ -1,4 +1,4 @@
-.TH "getscu" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "getscu" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 getscu \- DICOM retrieve (C-GET) SCU
@@ -127,7 +127,16 @@ preferred storage transfer syntaxes (incoming associations):
           prefer MPEG4 AVC/H.264 HP / Level 4.1 TS
 
   +xl   --prefer-mpeg4-bd
-          prefer MPEG4 AVC/H.264 BD-compatible TS
+          prefer MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS
+
+  +x2   --prefer-mpeg4-2-2d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos
+
+  +x3   --prefer-mpeg4-2-3d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos
+
+  +xo   --prefer-mpeg4-2-st
+          prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS
 
   +xr   --prefer-rle
           prefer RLE lossless TS
@@ -273,12 +282,14 @@ DigitalIntraOralXRayImageStorageForPresentation      1.2.840.10008.5.1.4.1.1.1.3
 DigitalIntraOralXRayImageStorageForProcessing        1.2.840.10008.5.1.4.1.1.1.3.1
 CTImageStorage                                       1.2.840.10008.5.1.4.1.1.2
 EnhancedCTImageStorage                               1.2.840.10008.5.1.4.1.1.2.1
+LegacyConvertedEnhancedCTImageStorage                1.2.840.10008.5.1.4.1.1.2.2
 RETIRED_UltrasoundMultiframeImageStorage             1.2.840.10008.5.1.4.1.1.3
 UltrasoundMultiframeImageStorage                     1.2.840.10008.5.1.4.1.1.3.1
 MRImageStorage                                       1.2.840.10008.5.1.4.1.1.4
 EnhancedMRImageStorage                               1.2.840.10008.5.1.4.1.1.4.1
 MRSpectroscopyStorage                                1.2.840.10008.5.1.4.1.1.4.2
 EnhancedMRColorImageStorage                          1.2.840.10008.5.1.4.1.1.4.3
+LegacyConvertedEnhancedMRImageStorage                1.2.840.10008.5.1.4.1.1.4.4
 RETIRED_NuclearMedicineImageStorage                  1.2.840.10008.5.1.4.1.1.5
 RETIRED_UltrasoundImageStorage                       1.2.840.10008.5.1.4.1.1.6
 UltrasoundImageStorage                               1.2.840.10008.5.1.4.1.1.6.1
@@ -365,6 +376,7 @@ ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
 PositronEmissionTomographyImageStorage               1.2.840.10008.5.1.4.1.1.128
+LegacyConvertedEnhancedPETImageStorage               1.2.840.10008.5.1.4.1.1.128.1
 RETIRED_StandalonePETCurveStorage                    1.2.840.10008.5.1.4.1.1.129
 EnhancedPETImageStorage                              1.2.840.10008.5.1.4.1.1.130
 BasicStructuredDisplayStorage                        1.2.840.10008.5.1.4.1.1.131
@@ -378,9 +390,6 @@ RTTreatmentSummaryRecordStorage                      1.2.840.10008.5.1.4.1.1.481
 RTIonPlanStorage                                     1.2.840.10008.5.1.4.1.1.481.8
 RTIonBeamsTreatmentRecordStorage                     1.2.840.10008.5.1.4.1.1.481.9
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
-GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
-ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
-ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
 .fi
 .PP
 .PP
@@ -413,6 +422,9 @@ MPEG2MainProfileAtMainLevelTransferSyntax            1.2.840.10008.1.2.4.100
 MPEG2MainProfileAtHighLevelTransferSyntax            1.2.840.10008.1.2.4.101
 MPEG4HighProfileLevel4_1TransferSyntax               1.2.840.10008.1.2.4.102
 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
+MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
+MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
+MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 .fi
 .PP
@@ -453,4 +465,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBfindscu\fP(1), \fBmovescu\fP(1), \fBdump2dcm\fP(1), \fBdcmodify\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2011-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2011-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/img2dcm.1 b/doxygen/manpages/man1/img2dcm.1
index a95358c..275835a 100644
--- a/doxygen/manpages/man1/img2dcm.1
+++ b/doxygen/manpages/man1/img2dcm.1
@@ -1,4 +1,4 @@
-.TH "img2dcm" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "img2dcm" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 img2dcm \- Convert standard image formats into DICOM format
diff --git a/doxygen/manpages/man1/movescu.1 b/doxygen/manpages/man1/movescu.1
index 423b320..f7cb862 100644
--- a/doxygen/manpages/man1/movescu.1
+++ b/doxygen/manpages/man1/movescu.1
@@ -1,4 +1,4 @@
-.TH "movescu" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "movescu" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 movescu \- DICOM retrieve (C-MOVE) SCU
@@ -129,6 +129,15 @@ preferred network transfer syntaxes (incoming associations):
   +xl   --prefer-mpeg4-bd
           prefer MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS
 
+  +x2   --prefer-mpeg4-2-2d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos
+
+  +x3   --prefer-mpeg4-2-3d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos
+
+  +xo   --prefer-mpeg4-2-st
+          prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS
+
   +xr   --prefer-rle
           prefer RLE lossless TS
 
@@ -508,6 +517,8 @@ LegacyConvertedEnhancedPETImageStorage               1.2.840.10008.5.1.4.1.1.128
 RETIRED_StandalonePETCurveStorage                    1.2.840.10008.5.1.4.1.1.129
 EnhancedPETImageStorage                              1.2.840.10008.5.1.4.1.1.130
 BasicStructuredDisplayStorage                        1.2.840.10008.5.1.4.1.1.131
+CTDefinedProcedureProtocolStorage                    1.2.840.10008.5.1.4.1.1.200.1
+CTPerformedProcedureProtocolStorage                  1.2.840.10008.5.1.4.1.1.200.2
 RTImageStorage                                       1.2.840.10008.5.1.4.1.1.481.1
 RTDoseStorage                                        1.2.840.10008.5.1.4.1.1.481.2
 RTStructureSetStorage                                1.2.840.10008.5.1.4.1.1.481.3
@@ -564,6 +575,11 @@ MPEG2MainProfileAtMainLevelTransferSyntax            1.2.840.10008.1.2.4.100
 MPEG2MainProfileAtHighLevelTransferSyntax            1.2.840.10008.1.2.4.101
 MPEG4HighProfileLevel4_1TransferSyntax               1.2.840.10008.1.2.4.102
 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
+MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
+MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
+MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
+HEVCMainProfileLevel5_1TransferSyntax                1.2.840.10008.1.2.4.107
+HEVCMain10ProfileLevel5_1TransferSyntax              1.2.840.10008.1.2.4.108
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 .fi
 .PP
@@ -596,6 +612,37 @@ All command line tools use the following notation for parameters: square bracket
 Command line options are distinguished from parameters by a leading '+' or '-' sign, respectively\&. Usually, order and position of command line options are arbitrary (i\&.e\&. they can appear anywhere)\&. However, if options are mutually exclusive the rightmost appearance is used\&. This behavior conforms to the standard evaluation rules of common Unix shells\&.
 .PP
 In addition, one or more command files can be specified using an '@' sign as a prefix to the filename (e\&.g\&. \fI at command\&.txt\fP)\&. Such a command argument is replaced by the content of the corresponding text file (multiple whitespaces are treated as a single separator unless they appear between two quotation marks) prior to any further evaluation\&. Please note that a command file cannot contain another command file\&. This simple but effective approach allows one to summarize comm [...]
+.SH "EXIT CODES"
+.PP
+The \fBmovescu\fP utility uses the following exit codes when terminating\&. This enables the user to check for the reason why the application terminated\&.
+.SS "general"
+.PP
+.nf
+EXITCODE_NO_ERROR                         0
+EXITCODE_COMMANDLINE_SYNTAX_ERROR         1
+EXITCODE_INSUFFICIENT_PRIVILEGES          2
+EXITCODE_SETUID_FAILED                    3
+.fi
+.PP
+.SS "output file errors"
+.PP
+.nf
+EXITCODE_CANNOT_WRITE_OUTPUT_FILE        40
+EXITCODE_INVALID_OUTPUT_DIRECTORY        45
+.fi
+.PP
+.SS "network errors"
+.PP
+.nf
+EXITCODE_CANNOT_INITIALIZE_NETWORK       60
+EXITCODE_CANNOT_NEGOTIATE_ASSOCIATION    61
+EXITCODE_CANNOT_CREATE_ASSOC_PARAMETERS  65
+EXITCODE_NO_PRESENTATION_CONTEXT         66
+EXITCODE_CANNOT_CLOSE_ASSOCIATION        67
+EXITCODE_CMOVE_WARNING                   68
+EXITCODE_CMOVE_ERROR                     69
+.fi
+.PP
 .SH "ENVIRONMENT"
 .PP
 The \fBmovescu\fP utility will attempt to load DICOM data dictionaries specified in the \fIDCMDICTPATH\fP environment variable\&. By default, i\&.e\&. if the \fIDCMDICTPATH\fP environment variable is not set, the file \fI<datadir>/dicom\&.dic\fP will be loaded unless the dictionary is built into the application (default for Windows)\&.
@@ -606,4 +653,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBfindscu\fP(1), \fBstorescp\fP(1), \fBdump2dcm\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1994-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1994-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/pdf2dcm.1 b/doxygen/manpages/man1/pdf2dcm.1
index 9c15deb..326f713 100644
--- a/doxygen/manpages/man1/pdf2dcm.1
+++ b/doxygen/manpages/man1/pdf2dcm.1
@@ -1,4 +1,4 @@
-.TH "pdf2dcm" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "pdf2dcm" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 pdf2dcm \- Convert PDF file to DICOM
diff --git a/doxygen/manpages/man1/storescp.1 b/doxygen/manpages/man1/storescp.1
index 00ac7d7..5fce442 100644
--- a/doxygen/manpages/man1/storescp.1
+++ b/doxygen/manpages/man1/storescp.1
@@ -1,4 +1,4 @@
-.TH "storescp" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "storescp" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 storescp \- DICOM storage (C-STORE) SCP
@@ -117,6 +117,15 @@ preferred network transfer syntaxes (not with --config-file):
   +xl   --prefer-mpeg4-bd
           prefer MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS
 
+  +x2   --prefer-mpeg4-2-2d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos
+
+  +x3   --prefer-mpeg4-2-3d
+          prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos
+
+  +xo   --prefer-mpeg4-2-st
+          prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS
+
   +xr   --prefer-rle
           prefer RLE lossless TS
 
@@ -144,6 +153,9 @@ other network options:
 
           # not available on all systems (e.g. not on Windows)
 
+  -ts   --socket-timeout  [s]econds: integer (default: 60)
+          timeout for network socket (0 for none)
+
   -ta   --acse-timeout  [s]econds: integer (default: 30)
           timeout for ACSE messages
 
@@ -594,6 +606,7 @@ RadiopharmaceuticalRadiationDoseSRStorage            1.2.840.10008.5.1.4.1.1.88.
 ColonCADSRStorage                                    1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.70
 AcquisitionContextSRStorage                          1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                         1.2.840.10008.5.1.4.1.1.88.72
 ContentAssessmentResultsStorage                      1.2.840.10008.5.1.4.1.1.90.1
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
@@ -602,6 +615,8 @@ LegacyConvertedEnhancedPETImageStorage               1.2.840.10008.5.1.4.1.1.128
 RETIRED_StandalonePETCurveStorage                    1.2.840.10008.5.1.4.1.1.129
 EnhancedPETImageStorage                              1.2.840.10008.5.1.4.1.1.130
 BasicStructuredDisplayStorage                        1.2.840.10008.5.1.4.1.1.131
+CTDefinedProcedureProtocolStorage                    1.2.840.10008.5.1.4.1.1.200.1
+CTPerformedProcedureProtocolStorage                  1.2.840.10008.5.1.4.1.1.200.2
 RTImageStorage                                       1.2.840.10008.5.1.4.1.1.481.1
 RTDoseStorage                                        1.2.840.10008.5.1.4.1.1.481.2
 RTStructureSetStorage                                1.2.840.10008.5.1.4.1.1.481.3
@@ -623,9 +638,6 @@ DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601
 DRAFT_RTBeamsDeliveryInstructionStorage              1.2.840.10008.5.1.4.34.1
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
 RTBrachyApplicationSetupDeliveryInstructionStorage   1.2.840.10008.5.1.4.34.10
-GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
-ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
-ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
 .fi
 .PP
 .PP
@@ -661,6 +673,8 @@ MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
 MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
 MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
 MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
+HEVCMainProfileLevel5_1TransferSyntax                1.2.840.10008.1.2.4.107
+HEVCMain10ProfileLevel5_1TransferSyntax              1.2.840.10008.1.2.4.108
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 .fi
 .PP
@@ -712,4 +726,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBstorescu\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1996-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1996-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/storescu.1 b/doxygen/manpages/man1/storescu.1
index 275ed6a..86f6fd1 100644
--- a/doxygen/manpages/man1/storescu.1
+++ b/doxygen/manpages/man1/storescu.1
@@ -1,4 +1,4 @@
-.TH "storescu" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "storescu" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 storescu \- DICOM storage (C-STORE) SCU
@@ -160,6 +160,15 @@ proposed transmission transfer syntaxes (not with --config-file):
   -xl   --propose-mpeg4-bd
           propose MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS only
 
+  -x2   --propose-mpeg4-2-2d
+          propose MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos only
+
+  -x3   --propose-mpeg4-2-3d
+          propose MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos only
+
+  -xo   --propose-mpeg4-2-st
+          propose MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS only
+
   -xr   --propose-rle
           propose RLE lossless TS
           and all uncompressed transfer syntaxes
@@ -214,6 +223,9 @@ other network options:
   -to   --timeout  [s]econds: integer (default: unlimited)
           timeout for connection requests
 
+  -ts   --socket-timeout  [s]econds: integer (default: 60)
+          timeout for network socket (0 for none)
+
   -ta   --acse-timeout  [s]econds: integer (default: 30)
           timeout for ACSE messages
 
@@ -422,6 +434,9 @@ MPEG2MainProfileAtMainLevelTransferSyntax            1.2.840.10008.1.2.4.100
 MPEG2MainProfileAtHighLevelTransferSyntax            1.2.840.10008.1.2.4.101
 MPEG4HighProfileLevel4_1TransferSyntax               1.2.840.10008.1.2.4.102
 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
+MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
+MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
+MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 .fi
 .PP
@@ -459,4 +474,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBstorescp\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1996-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1996-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/termscu.1 b/doxygen/manpages/man1/termscu.1
index a968b58..96d58cd 100644
--- a/doxygen/manpages/man1/termscu.1
+++ b/doxygen/manpages/man1/termscu.1
@@ -1,4 +1,4 @@
-.TH "termscu" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "termscu" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 termscu \- DICOM termination SCU
@@ -99,4 +99,4 @@ The \fBtermscu\fP utility will attempt to load DICOM data dictionaries specified
 The default behavior should be preferred and the \fIDCMDICTPATH\fP environment variable only used when alternative data dictionaries are required\&. The \fIDCMDICTPATH\fP environment variable has the same format as the Unix shell \fIPATH\fP variable in that a colon (':') separates entries\&. On Windows systems, a semicolon (';') is used as a separator\&. The data dictionary code will attempt to load each file specified in the \fIDCMDICTPATH\fP environment variable\&. It is an error if no [...]
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2005-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2005-2017 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/wlmscpfs.1 b/doxygen/manpages/man1/wlmscpfs.1
index 0e12999..badfde6 100644
--- a/doxygen/manpages/man1/wlmscpfs.1
+++ b/doxygen/manpages/man1/wlmscpfs.1
@@ -1,4 +1,4 @@
-.TH "wlmscpfs" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "wlmscpfs" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 wlmscpfs \- DICOM Basic Worklist Management SCP (based on data files)
@@ -220,10 +220,13 @@ Currently, the \fBwlmscpfs\fP application supports the following attributes as m
 .PP
 .PP
 .nf
+(0008,0020) StudyDate
+(0008,0030) StudyTime
 (0008,0050) AccessionNumber
 (0008,0090) ReferringPhysicianName
 (0010,0010) PatientName
 (0010,0020) PatientID
+(0010,0021) IssuerOfPatientID
 (0010,0030) PatientBirthDate
 (0010,0040) PatientSex
 (0010,2297) Responsible Person
diff --git a/doxygen/manpages/man1/xml2dcm.1 b/doxygen/manpages/man1/xml2dcm.1
index 24bcd7b..2678b81 100644
--- a/doxygen/manpages/man1/xml2dcm.1
+++ b/doxygen/manpages/man1/xml2dcm.1
@@ -1,4 +1,4 @@
-.TH "xml2dcm" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "xml2dcm" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 xml2dcm \- Convert XML document to DICOM file or data set
diff --git a/doxygen/manpages/man1/xml2dsr.1 b/doxygen/manpages/man1/xml2dsr.1
index cee3c23..13041d5 100644
--- a/doxygen/manpages/man1/xml2dsr.1
+++ b/doxygen/manpages/man1/xml2dsr.1
@@ -1,4 +1,4 @@
-.TH "xml2dsr" 1 "Thu Jun 30 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "xml2dsr" 1 "Tue Feb 28 2017" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 xml2dsr \- Convert DICOM SR file and data set to XML
@@ -184,6 +184,8 @@ XRayRadiationDoseSRStorage                  1.2.840.10008.5.1.4.1.1.88.67
 RadiopharmaceuticalRadiationDoseSRStorage   1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                           1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage           1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                 1.2.840.10008.5.1.4.1.1.88.71
+SimplifiedAdultEchoSRStorage                1.2.840.10008.5.1.4.1.1.88.72
 .fi
 .PP
 .PP
@@ -243,4 +245,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdsr2xml\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2003-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2003-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/oflog/include/dcmtk/oflog/config/defines.h b/oflog/include/dcmtk/oflog/config/defines.h
index 9161915..3a0f8f5 100644
--- a/oflog/include/dcmtk/oflog/config/defines.h
+++ b/oflog/include/dcmtk/oflog/config/defines.h
@@ -355,7 +355,8 @@
 #endif
 
 /* Define when iconv() is available. */
-#ifdef WITH_LIBICONV
+#if DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICONV ||\
+ DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV
 #define DCMTK_LOG4CPLUS_WITH_ICONV
 #define DCMTK_LOG4CPLUS_HAVE_ICONV_H
 #endif
diff --git a/oflog/include/dcmtk/oflog/oflog.h b/oflog/include/dcmtk/oflog/oflog.h
index 7f9829b..25894c1 100644
--- a/oflog/include/dcmtk/oflog/oflog.h
+++ b/oflog/include/dcmtk/oflog/oflog.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2009-2011, OFFIS e.V.
+ *  Copyright (C) 2009-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -63,7 +63,7 @@ public:
         ERROR_LOG_LEVEL = dcmtk::log4cplus::ERROR_LOG_LEVEL,
         /// fatal: very severe error events that will presumably lead the application to abort
         FATAL_LOG_LEVEL = dcmtk::log4cplus::FATAL_LOG_LEVEL,
-        /// internal: turn off logging competely
+        /// internal: turn off logging completely
         OFF_LOG_LEVEL = dcmtk::log4cplus::OFF_LOG_LEVEL
     };
 
@@ -95,8 +95,10 @@ class DCMTK_LOG4CPLUS_EXPORT OFLog
 
  public:
 
-    /** create a new Logger object
+    /** create a new logger object.
+     *  Logger objects have a reference counting copy-constructor, so returning by-value is cheap.
      *  @param name the name of the logger
+     *  @return requested logger object
      */
     static OFLogger getLogger(const char *name);
 
@@ -108,6 +110,7 @@ class DCMTK_LOG4CPLUS_EXPORT OFLog
     /** handle the command line options used for logging
      *  @param cmd the command line whose options are handled
      *  @param app the console application which is used for console output and error checking
+     *  @param defaultLevel default log level that is used if not specified on the command line
      */
     static void configureFromCommandLine(OFCommandLine &cmd,
                                          OFConsoleApplication &app,
diff --git a/oflog/libsrc/CMakeLists.txt b/oflog/libsrc/CMakeLists.txt
index 728e786..59a2251 100644
--- a/oflog/libsrc/CMakeLists.txt
+++ b/oflog/libsrc/CMakeLists.txt
@@ -10,4 +10,3 @@ ENDIF(WIN32 AND NOT CYGWIN)
 DCMTK_ADD_LIBRARY(oflog oflog apndimpl appender config consap factory fileap filter globinit hierarchy hierlock layout logger logimpl logevent loglevel loglog lloguser ndc ntelogap nullap objreg patlay pointer property rootlog sleep socketap sockbuff socket strhelp syncprims syslogap threads timehelp clogger env fileinfo lockfile mdc queue snprintf tls version log4judp logmacro asyncap cygwin32 striconv strcloc strccloc ${OFLOG_PLATFORM_LIBRARIES})
 
 DCMTK_TARGET_LINK_MODULES(oflog ofstd)
-DCMTK_TARGET_LINK_LIBRARIES(oflog ${WIN32_STD_LIBRARIES})
diff --git a/oflog/libsrc/hierlock.cc b/oflog/libsrc/hierlock.cc
index 1f3de4e..909e99a 100644
--- a/oflog/libsrc/hierlock.cc
+++ b/oflog/libsrc/hierlock.cc
@@ -61,7 +61,7 @@ HierarchyLocker::HierarchyLocker(Hierarchy& _h)
         throw;
     }
 }
- 
+
 
 HierarchyLocker::~HierarchyLocker()
 {
@@ -72,11 +72,12 @@ HierarchyLocker::~HierarchyLocker()
     }
     catch(...) {
         helpers::getLogLog().error(DCMTK_LOG4CPLUS_TEXT("HierarchyLocker::dtor()- An error occurred while unlocking"));
-        throw;
+        // Disabled the following line: Don't throw an exception from a destructor!
+        // throw;
     }
 }
 
-void 
+void
 HierarchyLocker::resetConfiguration()
 {
     Logger root = h.getRoot();
@@ -92,31 +93,31 @@ HierarchyLocker::resetConfiguration()
     for(LoggerList::iterator it=loggerList.begin(); it!=loggerList.end(); ++it)
     {
         Logger & logger = *it;
-        
+
         logger.closeNestedAppenders();
         logger.removeAllAppenders();
-        
+
         logger.setLogLevel(NOT_SET_LOG_LEVEL);
         logger.setAdditivity(true);
     }
 }
 
 
-Logger 
+Logger
 HierarchyLocker::getInstance(const tstring& name)
 {
     return h.getInstanceImpl(name, *h.getLoggerFactory());
 }
 
 
-Logger 
+Logger
 HierarchyLocker::getInstance(const tstring& name, spi::LoggerFactory& factory)
 {
     return h.getInstanceImpl(name, factory);
 }
 
 
-void 
+void
 HierarchyLocker::addAppender(Logger& logger, SharedAppenderPtr& appender)
 {
     for(LoggerList::iterator it=loggerList.begin(); it!=loggerList.end(); ++it) {
@@ -127,7 +128,7 @@ HierarchyLocker::addAppender(Logger& logger, SharedAppenderPtr& appender)
             return;
         }
     }
-    
+
     // I don't have this Logger locked
     logger.addAppender(appender);
 }
diff --git a/oflog/libsrc/oflog.cc b/oflog/libsrc/oflog.cc
index c8a1741..fa14b31 100644
--- a/oflog/libsrc/oflog.cc
+++ b/oflog/libsrc/oflog.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2009-2011, OFFIS e.V.
+ *  Copyright (C) 2009-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -184,7 +184,7 @@ void OFLog::configureFromCommandLine(OFCommandLine &cmd,
 
         app.checkValue(cmd.getValue(logConfig));
 
-        // check wether config file exists at all and is readable
+        // check whether config file exists at all and is readable
         if (!OFStandard::fileExists(logConfig))
             app.printError("Specified --log-config file does not exist");
         if (!OFStandard::isReadable(logConfig))
diff --git a/ofstd/include/CMakeLists.txt b/ofstd/include/CMakeLists.txt
index 1ccc4c8..4b9f0f2 100644
--- a/ofstd/include/CMakeLists.txt
+++ b/ofstd/include/CMakeLists.txt
@@ -1,2 +1,2 @@
 # declare installation files
-INSTALL(DIRECTORY dcmtk/ofstd DESTINATION ${DCMTK_INSTALL_INCDIR}/dcmtk COMPONENT include FILES_MATCHING PATTERN "*.h")
+INSTALL(DIRECTORY dcmtk/ofstd DESTINATION ${DCMTK_INSTALL_INCDIR}/dcmtk COMPONENT include FILES_MATCHING PATTERN "*.h" PATTERN "*.def")
diff --git a/ofstd/include/Makefile.in b/ofstd/include/Makefile.in
index c0b6f38..f4544d1 100644
--- a/ofstd/include/Makefile.in
+++ b/ofstd/include/Makefile.in
@@ -23,6 +23,10 @@ install:
 	for file in dcmtk/ofstd/variadic/*.h ; do \
 		$(INSTALL_DATA) $$file $(DESTDIR)$(includedir)/dcmtk/ofstd/variadic ;\
 	done
+	$(configdir)/mkinstalldirs $(DESTDIR)$(includedir)/dcmtk/ofstd/diag
+	for file in dcmtk/ofstd/diag/*.def ; do \
+		$(INSTALL_DATA) $$file $(DESTDIR)$(includedir)/dcmtk/ofstd/diag ;\
+	done
 
 clean:
 	rm -f $(TRASH)
diff --git a/ofstd/include/dcmtk/ofstd/diag/cnvrsn.def b/ofstd/include/dcmtk/ofstd/diag/cnvrsn.def
new file mode 100644
index 0000000..69a035f
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/diag/cnvrsn.def
@@ -0,0 +1,7 @@
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wconversion"
+#elif DCMTK_DIAGNOSTIC_MIN_GCC_VERSION(4,6,0)
+#pragma GCC diagnostic ignored "-Wconversion"
+#elif defined(_MSC_VER)
+#pragma warning(disable: 4244)
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/mmtag.def b/ofstd/include/dcmtk/ofstd/diag/mmtag.def
new file mode 100644
index 0000000..95297b7
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/diag/mmtag.def
@@ -0,0 +1,9 @@
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wmismatched-tags"
+// GCC and Visual Studio don't seem to have such a warning yet,
+// uncomment and replace ? when they do:
+//#elif DCMTK_DIAGNOSTIC_MIN_GCC_VERSION(?,?,?)
+//#pragma GCC diagnostic ignored "????"
+//#elif DCMTK_DIAGNOSTIC_MIN_MSC_VER(????)
+//#pragma warning(disable: ????)
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/nsdfti.def b/ofstd/include/dcmtk/ofstd/diag/nsdfti.def
new file mode 100644
index 0000000..0fdee8b
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/diag/nsdfti.def
@@ -0,0 +1,5 @@
+// Clang and GCC don't seem to have such a warning
+// and probably never will for good reasons
+#ifdef _MSC_VER
+#pragma warning(disable: 4661)
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/overflow.def b/ofstd/include/dcmtk/ofstd/diag/overflow.def
new file mode 100644
index 0000000..a5f88af
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/diag/overflow.def
@@ -0,0 +1,9 @@
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Winteger-overflow"
+#elif DCMTK_DIAGNOSTIC_MIN_GCC_VERSION(4,6,0)
+#pragma GCC diagnostic ignored "-Woverflow"
+// Visual Studio doesn't seem to have such a warning yet, uncomment
+// and replace ???? when it does
+//#elif DCMTK_DIAGNOSTIC_MIN_MSC_VER(????)
+//#pragma warning(disable: ????)
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/piof.def b/ofstd/include/dcmtk/ofstd/diag/piof.def
new file mode 100644
index 0000000..08c8edd
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/diag/piof.def
@@ -0,0 +1,9 @@
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wpredefined-identifier-outside-function"
+// GCC and Visual Studio don't seem to have such a warning yet,
+// uncomment and replace ? when they do:
+//#elif DCMTK_DIAGNOSTIC_MIN_GCC_VERSION(?,?,?)
+//#pragma GCC diagnostic ignored "????"
+//#elif DCMTK_DIAGNOSTIC_MIN_MSC_VER(????)
+//#pragma warning(disable: ????)
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/pop.def b/ofstd/include/dcmtk/ofstd/diag/pop.def
new file mode 100644
index 0000000..e3aa719
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/diag/pop.def
@@ -0,0 +1,7 @@
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#elif DCMTK_DIAGNOSTIC_MIN_GCC_VERSION(4,6,0)
+#pragma GCC diagnostic pop
+#elif defined(_MSC_VER)
+#pragma warning(pop)
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/push.def b/ofstd/include/dcmtk/ofstd/diag/push.def
new file mode 100644
index 0000000..2283e0e
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/diag/push.def
@@ -0,0 +1,7 @@
+#if defined(__clang__)
+#pragma clang diagnostic push
+#elif DCMTK_DIAGNOSTIC_MIN_GCC_VERSION(4,6,0)
+#pragma GCC diagnostic push
+#elif defined(_MSC_VER)
+#pragma warning(push)
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/shadow.def b/ofstd/include/dcmtk/ofstd/diag/shadow.def
new file mode 100644
index 0000000..31a8673
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/diag/shadow.def
@@ -0,0 +1,9 @@
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wshadow"
+#elif DCMTK_DIAGNOSTIC_MIN_GCC_VERSION(4,6,0)
+#pragma GCC diagnostic ignored "-Wshadow"
+// Visual Studio doesn't seem to have such a warning yet, uncomment
+// and replace ???? when it does
+//#elif DCMTK_DIAGNOSTIC_MIN_MSC_VER(????)
+//#pragma warning(disable: ????)
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/signcmp.def b/ofstd/include/dcmtk/ofstd/diag/signcmp.def
new file mode 100644
index 0000000..95d5e37
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/diag/signcmp.def
@@ -0,0 +1,7 @@
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wsign-compare"
+#elif DCMTK_DIAGNOSTIC_MIN_GCC_VERSION(4,6,0)
+#pragma GCC diagnostic ignored "-Wsign-compare"
+#elif defined(_MSC_VER)
+#pragma warning(disable: 4018)
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/vsprfw.def b/ofstd/include/dcmtk/ofstd/diag/vsprfw.def
new file mode 100644
index 0000000..2a87b41
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/diag/vsprfw.def
@@ -0,0 +1,5 @@
+// Clang and GCC don't seem to have such a warning
+// and probably never will for good reasons
+#ifdef _MSC_VER
+#pragma warning(disable: 4800)
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/ofchrenc.h b/ofstd/include/dcmtk/ofstd/ofchrenc.h
index dbf1807..012dde3 100644
--- a/ofstd/include/dcmtk/ofstd/ofchrenc.h
+++ b/ofstd/include/dcmtk/ofstd/ofchrenc.h
@@ -13,7 +13,7 @@
  *
  *  Module:  ofstd
  *
- *  Author:  Joerg Riesmeier
+ *  Author:  Joerg Riesmeier, Jan Schlamelcher
  *
  *  Purpose: Class for character encoding conversion (Header)
  *
@@ -27,89 +27,177 @@
 
 #include "dcmtk/ofstd/ofcond.h"
 #include "dcmtk/ofstd/ofstring.h"
-
+#include "dcmtk/ofstd/ofmem.h"
 
 /*---------------------*
  *  class declaration  *
  *---------------------*/
 
 /** A class for managing and converting between different character encodings.
- *  The implementation relies on the libiconv toolkit (if available).
+ *  The implementation relies on ICONV (native implementation or libiconv) or
+ *  ICU, depending on the configuration.
+ *  @remarks An encoder might be shared by copy constructing an
+ *    OFCharacterEncoding object from an existing one.  Both objects will refer
+ *    to the same encoder once this is done, which will only be destroyed after
+ *    both objects are, using OFshared_ptr internally.
  */
 class DCMTK_OFSTD_EXPORT OFCharacterEncoding
 {
+public:
+
+    /** Constants to control encoder behavior, e.g.\ regarding illegal character
+     *  sequences.
+     *  Currently defined constants may be used to control the implementation's
+     *  behavior regarding illegal character sequences.
+     *  An illegal character sequence is a sequence of characters in the
+     *  source string that is only valid in the context of the source string's
+     *  character set and has no valid representation in the character set of
+     *  the destination string.
+     *  Use these constants to control the transcoding behavior in case an
+     *  illegal sequence is encountered.
+     *  @note You may set a single one of the constants as the encoder behavior
+     *    or even a combination (bitwise OR), however, it depends on the
+     *    underlying implementation which flags/combinations are supported.
+     *    Use supportsConversionFlags() to query this information at runtime.
+     */
+    enum ConversionFlags
+    {
+        /** Abort transcoding (returning an error condition) if an illegal
+         *  sequence is encountered.
+         */
+        AbortTranscodingOnIllegalSequence = 1,
+
+        /** Skip over any illegal character sequences that are encountered.
+         */
+        DiscardIllegalSequences = 2,
+
+        /** Replace illegal character sequences with an available representation
+         *  in the destination character set that somewhat resembles the meaning
+         *  (i.e.\ ö -> "o).  The actual results may vary depending on the
+         *  underlying implementation.
+         */
+        TransliterateIllegalSequences = 4
+    };
+
+    /** get the character encoding of the currently set global locale.
+     *  @remarks Calling this function might be rather exhaustive depending on
+     *    employed character set conversion library.  Caching the result might
+     *    therefore be recommended.
+     *  @note The result may be an empty string, if the name of the current
+     *    encoding cannot be determined.
+     *  @return the current locale's character encoding
+     */
+    static OFString getLocaleEncoding();
+
+    /** determine whether the underlying implementation supports the given
+     *  conversion flags.
+     *  @param flags the flags to query, a combination of
+     *    OFCharacterEncoding::ConversionFlags constants, e.g.
+     *    TransliterateIllegalSequences | DiscardIllegalSequences.
+     *  @return OFTrue if the given flags are supported, OFFalse if not
+     *    or support is unknown.
+     */
+    static OFBool supportsConversionFlags(const unsigned flags);
 
-  // allow the DICOM-specific character set class to access protected methods
-  friend class DcmSpecificCharacterSet;
-
-  public:
-
-    /** constructor. Initializes the member variables, which includes the
-     *  current locale's character encoding.
+    /** constructor.
+     *  Will create an OFCharacterEncoding instance that does not refer to an
+     *  encoder.
      */
     OFCharacterEncoding();
 
+    /** copy constructor.
+     *  Will share the encoder of another OFCharacterEncoding instance.
+     *  @param rhs another OFCharacterEncoding instance.
+     */
+    OFCharacterEncoding(const OFCharacterEncoding& rhs);
+
     /** destructor
      */
     ~OFCharacterEncoding();
 
-    /** clear the internal state.  This also closes the conversion descriptor
-     *  if it was allocated before, so selectEncoding() has to be called again
-     *  before a string can be converted to a new character encoding.
+    /** copy assignment.
+     *  Effectively calls clear() and then shares the encoder of another
+     *  OFCharacterEncoding instance.
+     *  @param rhs another OFCharacterEncoding instance.
+     *  @return reference to this object
      */
-    void clear();
+    OFCharacterEncoding& operator=(const OFCharacterEncoding& rhs);
 
-    /** get mode specifying whether a character that cannot be represented in
-     *  the destination character encoding is approximated through one or more
-     *  characters that look similar to the original one
-     *  @return current value of the mode.  OFTrue means that the mode is
-     *    enabled, OFFalse means disabled.
+    /** check whether this object refers to a valid encoder.
+     *  @result OFTrue if this refers to a valid encoder, OFFalse otherwise.
      */
-    OFBool getTransliterationMode() const;
+#ifdef DCMTK_USE_CXX11_STL
+    explicit
+#endif
+    operator OFBool() const;
 
-    /** get mode specifying whether characters that cannot be represented in
-     *  the destination character encoding will be silently discarded
-     *  @return current value of the mode.  OFTrue means that the mode is
-     *    enabled, OFFalse means disabled.
+    /** check whether this object does not refer to a valid encoder.
+     *  @result OFFalse if this refers to a valid encoder, OFTrue otherwise.
      */
-    OFBool getDiscardIllegalSequenceMode() const;
-
-    /** set mode specifying whether a character that cannot be represented in
-     *  the destination character encoding is approximated through one or more
-     *  characters that look similar to the original one.  By default, this
-     *  mode is disabled.
-     *  @param  mode  enable mode by OFTrue or disable it by OFFalse
-     *  @return status, EC_Normal if successful, an error code otherwise
+    OFBool operator!() const;
+
+    /** check whether two OFCharacterEncoding instances refer to the same
+     *  encoder.
+     *  @note This only tests if both objects refer to the exactly same
+     *    encoder, originating from one and the same call to selectEncoding().
+     *    The result will be OFFalse if both encoders were constructed
+     *    independently of each other, even if exactly the same parameters
+     *    were used.
+     *  @param rhs another OFCharacterEncoding instance.
+     *  @return OFTrue if both instances refer to the same encoder, OFFalse
+     *    otherwise.
      */
-    OFCondition setTransliterationMode(const OFBool mode);
-
-    /** set mode specifying whether characters that cannot be represented in
-     *  the destination character encoding will be silently discarded.  By
-     *  default, this mode is disabled.
-     *  @param  mode  enable mode by OFTrue or disable it by OFFalse
-     *  @return status, EC_Normal if successful, an error code otherwise
+    OFBool operator==(const OFCharacterEncoding& rhs) const;
+
+    /** check whether two OFCharacterEncoding instances do not refer to the
+     *  same encoder.
+     *  @note This only tests if both objects refer to the exactly same
+     *    encoder, originating from one and the same call to selectEncoding().
+     *    The result will be OFTrue if both encoders were constructed
+     *    independently of each other, even if exactly the same parameters
+     *    were used.
+     *  @param rhs another OFCharacterEncoding instance.
+     *  @return OFFalse if both instances refer to the same encoder, OFTrue
+     *    otherwise.
      */
-    OFCondition setDiscardIllegalSequenceMode(const OFBool mode);
+    OFBool operator!=(const OFCharacterEncoding& rhs) const;
 
-    /** get the current locale's character encoding
-     *  @return the current locale's character encoding
+    /** clear the internal state.
+     *  This resets the converter and potentially frees all used resources
+     *  (if this is the last OFCharacterEncoding instance referring to the
+     *  encoder).
      */
-    const OFString &getLocaleEncoding() const;
+    void clear();
 
-    /** updates the current locale's character encoding.  This is only needed
-     *  if the locale setting changed during the lifetime of this object,
-     *  because the current locale's character encoding is always determined
-     *  in the constructor.  If possible the canonical encoding names listed
-     *  in "config.charset" (see libiconv toolkit) are used.
-     *  @return status, EC_Normal if successful, an error code otherwise
+    /** get flags controlling converter behavior, e.g.\ specifying how illegal
+     *  character sequences should be handled during conversion.
+     *  @note This method will always return 0 if no encoder was selected
+     *    using selectEncoding() before calling it.
+     *  @return a combination the IllegalSequenceMode constants (bitwise or)
+     *    that is currently set or 0 if the current mode cannot be determined.
      */
-    OFCondition updateLocaleEncoding();
+    unsigned getConversionFlags() const;
+
+    /** set flags controlling converter behavior, e.g.\ illegal character
+     *  sequences should be handled during conversion.
+     *  @pre An encoding has been selected by successfully calling
+     *    OFCharacterEncoding::selectEncoding(), i.e.
+     *    OFCharacterEncoding::isLibraryAvailable() and *this evaluate to
+     *    OFTrue.
+     *  @param flags the conversion flags that shall be used, a combination of
+     *    the OFCharacterEncoding::ConversionFlags constants, e.g.
+     *    TransliterateIllegalSequences | DiscardIllegalSequences.
+     *  @return EC_Normal if the flags were set, an error code otherwise, i.e.
+     *    if the flags are not supported by the underlying implementation.
+     *  @see OFCharacterEncoding::supportsConversionFlags()
+     */
+    OFCondition setConversionFlags(const unsigned flags);
 
     /** select source and destination character encoding for subsequent
      *  conversion(s).  The encoding names can be found in the documentation
-     *  of the libiconv toolkit.  Typical names are "ASCII", "ISO-8859-1" and
-     *  "UTF-8".  An empty string denotes the locale dependent character
-     *  encoding (see getLocaleEncoding()).
+     *  of the underlying implementation (e.g. libiconv).  Typical names
+     *  are "ASCII", "ISO-8859-1" and "UTF-8".  An empty string denotes the
+     *  encoding of the current locale (see getLocaleEncoding()).
      *  @param  fromEncoding  name of the source character encoding
      *  @param  toEncoding    name of the destination character encoding
      *  @return status, EC_Normal if successful, an error code otherwise
@@ -137,8 +225,8 @@ class DCMTK_OFSTD_EXPORT OFCharacterEncoding
      *  Since the length of the input string has to be specified explicitly,
      *  the string can contain more than one NULL byte.
      *  @param  fromString  input string to be converted (using the source
-     *                      character encoding).  A NULL pointer is regarded
-     *                      as an empty string.
+     *                      character encoding).  A NULL pointer is regarded as
+     *                      an empty string.
      *  @param  fromLength  length of the input string (number of bytes without
      *                      the trailing NULL byte)
      *  @param  toString    reference to variable where the converted string
@@ -267,18 +355,20 @@ class DCMTK_OFSTD_EXPORT OFCharacterEncoding
 
     // --- static helper functions ---
 
-    /** check whether the underlying character encoding library is available.
-     *  If the library is not available, no conversion between different
-     *  character encodings will be possible (apart from the Windows-specific
-     *  wide character conversion functions).
-     *  @return OFTrue if the character encoding library is available, OFFalse
+    /** check whether character set conversion is available, e.g.\ the
+     *  underlying encoding library is available.
+     *  If not, no conversion between different character encodings will be
+     *  possible (apart from the Windows-specific wide character conversion
+     *  functions).
+     *  @return OFTrue if character set conversion is possible, OFFalse
      *    otherwise
      */
     static OFBool isLibraryAvailable();
 
     /** get version information of the underlying character encoding library.
-     *  Typical output format: "LIBICONV, Version 1.14".  If the library is not
-     *  available the output is: "<no character encoding library available>"
+     *  Typical output format: "LIBICONV, Version 1.14".  If character encoding
+     *  is not available the output is:
+     *    "<no character encoding library available>"
      *  @return name and version number of the character encoding library
      */
     static OFString getLibraryVersionString();
@@ -292,88 +382,12 @@ class DCMTK_OFSTD_EXPORT OFCharacterEncoding
      */
     static size_t countCharactersInUTF8String(const OFString &utf8String);
 
-
-  protected:
-
-    /// type of the conversion descriptor (used by libiconv)
-    typedef void* T_Descriptor;
-
-    /** allocate conversion descriptor for the given source and destination
-     *  character encoding.  Please make sure that the descriptor is
-     *  deallocated with closeDescriptor() when not needed any longer.
-     *  @param  descriptor    reference to variable where the newly allocated
-     *                        conversion descriptor is stored
-     *  @param  fromEncoding  name of the source character encoding
-     *  @param  toEncoding    name of the destination character encoding
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition openDescriptor(T_Descriptor &descriptor,
-                               const OFString &fromEncoding,
-                               const OFString &toEncoding);
-
-    /** deallocate the given conversion descriptor that was previously
-     *  allocated with openDescriptor().  Please do not pass arbitrary values
-     *  to this method, since this will result in a segmentation fault.
-     *  @param  descriptor  conversion descriptor to be closed.  After the
-     *                      descriptor has been deallocated, 'descriptor' is
-     *                      set to an invalid value - see isDescriptorValid().
-     *  @return status, EC_Normal if successful, an error code otherwise.  In
-     *    case an invalid descriptor is passed, it is not regarded as an error.
-     */
-    OFCondition closeDescriptor(T_Descriptor &descriptor);
-
-    /** check whether the given conversion descriptor is valid, i.e.\ has been
-     *  allocated by a previous call to openDescriptor()
-     *  @param  descriptor  conversion descriptor to be checked
-     *  @return OFTrue if the conversion descriptor is valid, OFFalse otherwise
-     */
-    OFBool isDescriptorValid(const T_Descriptor descriptor);
-
-    /** convert the given string between the specified character encodings.
-     *  Since the length of the input string has to be specified explicitly,
-     *  the string can contain more than one NULL byte.
-     *  @param  descriptor  previously allocated conversion descriptor to be
-     *                      used for the conversion of the character encodings
-     *  @param  fromString  input string to be converted (using the source
-     *                      character encoding).  A NULL pointer is regarded
-     *                      as an empty string.
-     *  @param  fromLength  length of the input string (number of bytes without
-     *                      the trailing NULL byte)
-     *  @param  toString    reference to variable where the converted string
-     *                      (using the destination character encoding) is
-     *                      stored (or appended, see parameter 'clearMode')
-     *  @param  clearMode   flag indicating whether to clear the variable
-     *                      'toString' before appending the converted string
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition convertString(T_Descriptor descriptor,
-                              const char *fromString,
-                              const size_t fromLength,
-                              OFString &toString,
-                              const OFBool clearMode = OFTrue);
-
-
   private:
 
-    // private undefined copy constructor
-    OFCharacterEncoding(const OFCharacterEncoding &);
-
-    // private undefined assignment operator
-    OFCharacterEncoding &operator=(const OFCharacterEncoding &);
+    class Implementation;
 
     // --- static helper functions ---
 
-    /** create an error condition based on the current value of "errno" and the
-     *  given parameters.  The function OFStandard::strerror() is used to map
-     *  the numerical value of the error to a textual description.
-     *  @param  status   reference to variable where the condition is stored
-     *  @param  message  message text that is used as a prefix to strerror()
-     *  @param  code     unique status code of the error condition
-     */
-    static void createErrnoCondition(OFCondition &status,
-                                     OFString message,
-                                     const unsigned short code);
-
 #ifdef HAVE_WINDOWS_H
 
     /** create an error condition based on the return value of "getLastError()"
@@ -389,17 +403,9 @@ class DCMTK_OFSTD_EXPORT OFCharacterEncoding
 
 #endif  // HAVE_WINDOWS_H
 
-    /// current locale's character encoding
-    OFString LocaleEncoding;
-
-    /// conversion descriptor used by libiconv
-    T_Descriptor ConversionDescriptor;
-
-    /// transliteration mode (default: disabled)
-    OFBool TransliterationMode;
-
-    /// discard illegal sequence mode (default: disabled)
-    OFBool DiscardIllegalSequenceMode;
+    /// shared pointer to internal implementation (interface to character
+    /// encoding library)
+    OFshared_ptr<Implementation> TheImplementation;
 };
 
 
diff --git a/ofstd/include/dcmtk/ofstd/ofdate.h b/ofstd/include/dcmtk/ofstd/ofdate.h
index 9c181ec..87089a6 100644
--- a/ofstd/include/dcmtk/ofstd/ofdate.h
+++ b/ofstd/include/dcmtk/ofstd/ofdate.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2011, OFFIS e.V.
+ *  Copyright (C) 2002-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -43,7 +43,7 @@ END_EXTERN_C
  */
 class DCMTK_OFSTD_EXPORT OFDate
 {
-    // allow class OFDateTime to access protected class members
+    /// allow class OFDateTime to access protected class members
     friend class OFDateTime;
 
 
diff --git a/ofstd/include/dcmtk/ofstd/ofdatime.h b/ofstd/include/dcmtk/ofstd/ofdatime.h
index 9ed3d3e..4a974b4 100644
--- a/ofstd/include/dcmtk/ofstd/ofdatime.h
+++ b/ofstd/include/dcmtk/ofstd/ofdatime.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2011, OFFIS e.V.
+ *  Copyright (C) 2002-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -94,7 +94,7 @@ class DCMTK_OFSTD_EXPORT OFDateTime
      */
     virtual OFBool operator==(const OFDateTime &dateTime) const;
 
-    /** comparison operator (unequal)
+    /** comparison operator (unequal).
      *  Please note that the time values are first transformed to the Coordinated Universal
      *  Time (UTC) before they are compared. However, the special case that there is an
      *  "overflow" from one day to another is currently not handled.
@@ -103,6 +103,46 @@ class DCMTK_OFSTD_EXPORT OFDateTime
      */
     virtual OFBool operator!=(const OFDateTime &dateTime) const;
 
+    /** comparison operator (less than).
+     *  Please note that the time values are first transformed to the Coordinated Universal
+     *  Time (UTC) before they are compared. However, the special case that there is an
+     *  "overflow" from one day to another is currently not handled.
+     *  @param dateTime date and time value compared with the current value
+     *  @return OFTrue if current date and time is earlier than the given value, OFFalse
+     *    otherwise
+     */
+    virtual OFBool operator<(const OFDateTime &dateTime) const;
+
+    /** comparison operator (less than or equal).
+     *  Please note that the time values are first transformed to the Coordinated Universal
+     *  Time (UTC) before they are compared. However, the special case that there is an
+     *  "overflow" from one day to another is currently not handled.
+     *  @param dateTime date and time value compared with the current value
+     *  @return OFTrue if current date and time is earlier than or identical to the given value,
+     *    OFFalse otherwise
+     */
+    virtual OFBool operator<=(const OFDateTime &dateTime) const;
+
+    /** comparison operator (greater than or equal).
+     *  Please note that the time values are first transformed to the Coordinated Universal
+     *  Time (UTC) before they are compared. However, the special case that there is an
+     *  "overflow" from one day to another is currently not handled.
+     *  @param dateTime date and time value compared with the current value
+     *  @return OFTrue if current date and time is later than or identical to the given value,
+     *    OFFalse otherwise
+     */
+    virtual OFBool operator>=(const OFDateTime &dateTime) const;
+
+    /** comparison operator (greater than).
+     *  Please note that the time values are first transformed to the Coordinated Universal
+     *  Time (UTC) before they are compared. However, the special case that there is an
+     *  "overflow" from one day to another is currently not handled.
+     *  @param dateTime date and time value compared with the current value
+     *  @return OFTrue if current date and time is later than the given value, OFFalse
+     *    otherwise
+     */
+    virtual OFBool operator>(const OFDateTime &dateTime) const;
+
     /** reset the date/time value.
      *  Sets all date and all time components to '0'. NB: Date becomes invalid.
      */
@@ -221,6 +261,11 @@ class DCMTK_OFSTD_EXPORT OFDateTime
 
  private:
 
+    /// let DcmDateTime access the members directly
+    friend class DcmDateTime;
+    /// let DcmAttributeMatching access the members directly
+    friend class DcmAttributeMatching;
+
     /// currently stored date value
     OFDate Date;
 
diff --git a/ofstd/include/dcmtk/ofstd/ofdiag.h b/ofstd/include/dcmtk/ofstd/ofdiag.h
new file mode 100644
index 0000000..247f050
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/ofdiag.h
@@ -0,0 +1,165 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  ofstd
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: Platform independent macros for suppressing unwanted
+ *           compiler diagnostic output i.e. 'warnings'
+ *
+ */
+
+#ifndef OFDIAG_H
+#define OFDIAG_H
+
+#ifdef DOXYGEN
+
+/*! @file ofdiag.h
+ *  @brief Defines macros for controlling compiler diagnostic output, i.e. warnings.
+ */
+
+/*! @brief A macro for pushing a compiler diagnostic scope.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @details
+ *  If the compiler supports diagnostic scopes, using this macro
+ *  will create a new one inside which warning messages might be
+ *  disabled selectively.
+ *  The macro will have no effect if the compiler does not support
+ *  diagnostic scopes.
+ *  @remarks Currently supported compilers are GCC (version 4.6 and later, including
+ *    derivates like MinGW), Clang and Visual Studio.
+ *  @details
+ *  <h3>Example</h3>
+ *  @code{.cpp}
+ *  int i = 3;
+ *  unsigned ui = 8;
+ *  // will potentially emit a warning, although perfectly safe
+ *  if( i < ui )
+ *    doStuff();
+ *  // create a new diagnostic scope
+ *  #include DCMTK_DIAGNOSTIC_PUSH
+ *  // disable the sign mismatch warning
+ *  #include DCMTK_DIAGNOSTIC_IGNORE_SIGN_COMPARE
+ *  // the warning is omitted!
+ *  if( i < ui )
+ *    doStuff();
+ *  // restore the parent diagnostic scope potentially enabling
+ *  // the sign mismatch warning again
+ *  #include DCMTK_DIAGNOSTIC_POP
+ *  @endcode
+ */
+#define DCMTK_DIAGNOSTIC_PUSH <unspecified>
+
+/*! @brief A macro for pop-ing a compiler diagnostic scope, restoring the parent scope.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_POP <unspecified>
+
+/*! @brief A macro to disable warnings about comparing signed with unsigned values.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_SIGN_COMPARE <unspecified>
+
+/*! @brief A macro to disable warnings about overflowing constant expressions.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_OVERFLOW <unspecified>
+
+/*! @brief A macro to disable warnings about mixing the keywords struct and class.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_MISMATCHED_TAGS <unspecified>
+
+/*! @brief A macro to disable warnings about using \_\_func\_\_ etc. outside of a function.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_PREDEFINED_IDENTIFIER_OUTSIDE_FUNCTION <unspecified>
+
+/*! @brief A macro to disable warnings about implicit type conversions that may alter the value.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_IMPLICIT_CONVERSION <unspecified>
+
+/*! @brief A macro to disable warnings about variable/type name shadowing.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @remarks This warning is typically helpful to prevent unintended behavior, however, small
+ *    structs often have members with matching names as constructor arguments (for consistent
+ *    use/assignment). It makes sense to suppress this warning in that case.
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_SHADOW <unspecified>
+
+/*! @brief A macro to disable a Visual Studio specific warning about explicit template instantiation.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_NO_SUITABLE_DEFINITION_FOR_TEMPLATE_INSTANTIATION <unspecified>
+
+/*! @brief A macro to disable the Visual Studio specific "performance warning" about implicit conversion
+ *    to a boolean value.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @remarks The warning was meant to indicate that a non boolean value should probably be stored
+ *    as a boolean value in the first place, instead of using an integer (i.e. when C programmers do C++).
+ *    However, that is hardly ever the case and it is mostly and annoyingly emitted in perfectly fine code
+ *    that checks if a value is not equal to zero etc., therefore, suppressing it is usually appropriate.
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_VISUAL_STUDIO_PERFORMANCE_WARNING <unspecified>
+
+#else // DOXYGEN
+
+#define DCMTK_DIAGNOSTIC_PUSH "dcmtk/ofstd/diag/push.def"
+#define DCMTK_DIAGNOSTIC_POP "dcmtk/ofstd/diag/pop.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_SIGN_COMPARE "dcmtk/ofstd/diag/signcmp.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_OVERFLOW "dcmtk/ofstd/diag/overflow.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_MISMATCHED_TAGS "dcmtk/ofstd/diag/mmtag.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_PREDEFINED_IDENTIFIER_OUTSIDE_FUNCTION "dcmtk/ofstd/diag/piof.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_IMPLICIT_CONVERSION "dcmtk/ofstd/diag/cnvrsn.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_SHADOW "dcmtk/ofstd/diag/shadow.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_NO_SUITABLE_DEFINITION_FOR_TEMPLATE_INSTANTIATION "dcmtk/ofstd/diag/nsdfti.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_VISUAL_STUDIO_PERFORMANCE_WARNING "dcmtk/ofstd/diag/vsprfw.def"
+
+// readable shorthands for compiler version checks
+#define DCMTK_DIAGNOSTIC_MIN_GCC_VERSION(MAJOR, MINOR, PATCH)\
+(\
+    defined(__GNUC__) &&\
+    (\
+        __GNUC__ > MAJOR ||\
+        (\
+            __GNUC__ == MAJOR &&\
+            (\
+                __GNUC_MINOR__ > MINOR ||\
+                (\
+                    __GNUC_MINOR == MINOR &&\
+                    __GNUC_PATCHLEVEL__ >= PATCH\
+                )\
+            )\
+        )\
+    )\
+)
+
+#define DCMTK_DIAGNOSTIC_MIN_MSC_VER(VERSION)\
+(\
+    defined(_MSC_VER) && _MSC_VER >= VERSION\
+)
+
+#endif // NOT DOXYGEN
+
+#endif // OFDIAG_H
diff --git a/ofstd/include/dcmtk/ofstd/offile.h b/ofstd/include/dcmtk/ofstd/offile.h
index abb71bf..da2abe1 100644
--- a/ofstd/include/dcmtk/ofstd/offile.h
+++ b/ofstd/include/dcmtk/ofstd/offile.h
@@ -554,7 +554,17 @@ public:
    *  the beginning of the file. This is equivalent to fseek(0, SEEK_SET)
    *  except that the error indicator for the stream is also cleared.
    */
-  void rewind() { STDIO_NAMESPACE rewind(file_); }
+  void rewind()
+  {
+#if defined(_WIN32) || defined(__CYGWIN__)
+    /* On these platforms rewind() fails after reading to the end of file
+     * if the file is read-only. Using fseek() instead.
+     */
+    (void) this->fseek(0L, SEEK_SET);
+#else
+    STDIO_NAMESPACE rewind(file_);
+#endif
+  }
 
   /** clears the end-of-file and error indicators for the stream
    */
diff --git a/ofstd/include/dcmtk/ofstd/oflimits.h b/ofstd/include/dcmtk/ofstd/oflimits.h
index 0dc6f4c..0f9a7ac 100644
--- a/ofstd/include/dcmtk/ofstd/oflimits.h
+++ b/ofstd/include/dcmtk/ofstd/oflimits.h
@@ -1019,7 +1019,11 @@ struct OFnumeric_limits<char>
     static const OFBool is_bounded                  = OFTrue;
     static const OFBool is_modulo                   = DCMTK_CHAR_MODULO;
     static const int digits                         = OFnumeric_limits<char>::is_signed ? CHAR_BIT - 1 : CHAR_BIT;
-    static const int digits10                       = OFstatic_cast( int, OFnumeric_limits<char>::digits * .30102999566398119521373889472449 );
+#ifndef C_CHAR_UNSIGNED
+    static const int digits10                       = DCMTK_SIGNED_CHAR_DIGITS10;
+#else
+    static const int digits10                       = DCMTK_UNSIGNED_CHAR_DIGITS10;
+#endif
     static const int max_digits10                   = 0;
     static const int radix                          = 2;
     static const int min_exponent                   = 0;
@@ -1056,7 +1060,7 @@ struct OFnumeric_limits<signed char>
     static const OFBool is_bounded                  = OFTrue;
     static const OFBool is_modulo                   = DCMTK_SIGNED_CHAR_MODULO;
     static const int digits                         = CHAR_BIT - 1;
-    static const int digits10                       = OFstatic_cast( int, ( CHAR_BIT - 1 ) * .30102999566398119521373889472449 );
+    static const int digits10                       = DCMTK_SIGNED_CHAR_DIGITS10;
     static const int max_digits10                   = 0;
     static const int radix                          = 2;
     static const int min_exponent                   = 0;
@@ -1093,7 +1097,7 @@ struct OFnumeric_limits<unsigned char>
     static const OFBool is_bounded                  = OFTrue;
     static const OFBool is_modulo                   = DCMTK_UNSIGNED_CHAR_MODULO;
     static const int digits                         = CHAR_BIT;
-    static const int digits10                       = OFstatic_cast( int, CHAR_BIT * .30102999566398119521373889472449 );
+    static const int digits10                       = DCMTK_UNSIGNED_CHAR_DIGITS10;
     static const int max_digits10                   = 0;
     static const int radix                          = 2;
     static const int min_exponent                   = 0;
@@ -1130,7 +1134,7 @@ struct OFnumeric_limits<signed short>
     static const OFBool is_bounded                  = OFTrue;
     static const OFBool is_modulo                   = DCMTK_SIGNED_SHORT_MODULO;
     static const int digits                         = OFstatic_cast( int, CHAR_BIT * sizeof( signed short ) - 1 );
-    static const int digits10                       = OFstatic_cast( int, OFnumeric_limits<signed short>::digits * .30102999566398119521373889472449 );
+    static const int digits10                       = DCMTK_SIGNED_SHORT_DIGITS10;
     static const int max_digits10                   = 0;
     static const int radix                          = 2;
     static const int min_exponent                   = 0;
@@ -1167,7 +1171,7 @@ struct OFnumeric_limits<unsigned short>
     static const OFBool is_bounded                  = OFTrue;
     static const OFBool is_modulo                   = DCMTK_UNSIGNED_SHORT_MODULO;
     static const int digits                         = OFstatic_cast( int, CHAR_BIT * sizeof( unsigned short ) );
-    static const int digits10                       = OFstatic_cast( int, OFnumeric_limits<unsigned short>::digits * .30102999566398119521373889472449 );
+    static const int digits10                       = DCMTK_UNSIGNED_SHORT_DIGITS10;
     static const int max_digits10                   = 0;
     static const int radix                          = 2;
     static const int min_exponent                   = 0;
@@ -1204,7 +1208,7 @@ struct OFnumeric_limits<signed int>
     static const OFBool is_bounded                  = OFTrue;
     static const OFBool is_modulo                   = DCMTK_SIGNED_INT_MODULO;
     static const int digits                         = OFstatic_cast( int, CHAR_BIT * sizeof( signed int ) - 1 );
-    static const int digits10                       = OFstatic_cast( int, OFnumeric_limits<signed int>::digits * .30102999566398119521373889472449 );
+    static const int digits10                       = DCMTK_SIGNED_INT_DIGITS10;
     static const int max_digits10                   = 0;
     static const int radix                          = 2;
     static const int min_exponent                   = 0;
@@ -1241,7 +1245,7 @@ struct OFnumeric_limits<unsigned int>
     static const OFBool is_bounded                  = OFTrue;
     static const OFBool is_modulo                   = DCMTK_UNSIGNED_INT_MODULO;
     static const int digits                         = OFstatic_cast( int, CHAR_BIT * sizeof( unsigned int ) );
-    static const int digits10                       = OFstatic_cast( int, OFnumeric_limits<unsigned int>::digits * .30102999566398119521373889472449 );
+    static const int digits10                       = DCMTK_UNSIGNED_INT_DIGITS10;
     static const int max_digits10                   = 0;
     static const int radix                          = 2;
     static const int min_exponent                   = 0;
@@ -1278,7 +1282,7 @@ struct OFnumeric_limits<signed long>
     static const OFBool is_bounded                  = OFTrue;
     static const OFBool is_modulo                   = DCMTK_SIGNED_LONG_MODULO;
     static const int digits                         = OFstatic_cast( int, CHAR_BIT * sizeof( signed long ) - 1 );
-    static const int digits10                       = OFstatic_cast( int, OFnumeric_limits<signed long>::digits * .30102999566398119521373889472449 );
+    static const int digits10                       = DCMTK_SIGNED_LONG_DIGITS10;
     static const int max_digits10                   = 0;
     static const int radix                          = 2;
     static const int min_exponent                   = 0;
@@ -1315,7 +1319,7 @@ struct OFnumeric_limits<unsigned long>
     static const OFBool is_bounded                  = OFTrue;
     static const OFBool is_modulo                   = DCMTK_UNSIGNED_LONG_MODULO;
     static const int digits                         = OFstatic_cast( int, CHAR_BIT * sizeof( unsigned long ) );
-    static const int digits10                       = OFstatic_cast( int, OFnumeric_limits<unsigned long>::digits * .30102999566398119521373889472449 );
+    static const int digits10                       = DCMTK_UNSIGNED_LONG_DIGITS10;
     static const int max_digits10                   = 0;
     static const int radix                          = 2;
     static const int min_exponent                   = 0;
@@ -1353,7 +1357,7 @@ struct OFnumeric_limits<float>
     static const OFBool is_modulo                   = OFFalse;
     static const int digits                         = OFstatic_cast( int, FLT_MANT_DIG );
     static const int digits10                       = OFstatic_cast( int, FLT_DIG );
-    static const int max_digits10                   = OFstatic_cast( int, OFnumeric_limits<float>::digits * .30102999566398119521373889472449  + 2 );
+    static const int max_digits10                   = DCMTK_FLOAT_MAX_DIGITS10;
     static const int radix                          = FLT_RADIX;
     static const int min_exponent                   = FLT_MIN_EXP;
     static const int min_exponent10                 = FLT_MIN_10_EXP;
@@ -1390,7 +1394,7 @@ struct OFnumeric_limits<double>
     static const OFBool is_modulo                   = OFFalse;
     static const int digits                         = OFstatic_cast( int, DBL_MANT_DIG );
     static const int digits10                       = OFstatic_cast( int, DBL_DIG );
-    static const int max_digits10                   = OFstatic_cast( int, OFnumeric_limits<double>::digits * .30102999566398119521373889472449  + 2 );
+    static const int max_digits10                   = DCMTK_DOUBLE_MAX_DIGITS10;
     static const int radix                          = FLT_RADIX;
     static const int min_exponent                   = DBL_MIN_EXP;
     static const int min_exponent10                 = DBL_MIN_10_EXP;
diff --git a/ofstd/include/dcmtk/ofstd/oflist.h b/ofstd/include/dcmtk/ofstd/oflist.h
index 74d6cb5..a0c3e0f 100644
--- a/ofstd/include/dcmtk/ofstd/oflist.h
+++ b/ofstd/include/dcmtk/ofstd/oflist.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2011, OFFIS e.V.
+ *  Copyright (C) 1997-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -89,7 +89,7 @@ END_EXTERN_C
 // OFListLinkBase, OFListLink and OFListBase are classes for internal
 // use only and shall not be used.
 
-/* non-template double linked list. Base class fo OFListLink.
+/* non-template double linked list. Base class of OFListLink.
  * Implicitly used by OFList, should not be called by users.
  */
 struct OFListLinkBase
@@ -406,7 +406,11 @@ public:
      */
     void insert(OFIterator<T> position, size_t n, const T& x)
     {
-      while(n--) OFListBase::base_insert(position.node, new OFListLink<T>(x));
+      while(n)
+      {
+        --n;
+        OFListBase::base_insert(position.node, new OFListLink<T>(x));
+      }
     }
 
     /** removes the element at the given position from the list.
diff --git a/ofstd/include/dcmtk/ofstd/ofoption.h b/ofstd/include/dcmtk/ofstd/ofoption.h
index b41e97f..ba96a52 100644
--- a/ofstd/include/dcmtk/ofstd/ofoption.h
+++ b/ofstd/include/dcmtk/ofstd/ofoption.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2014, OFFIS e.V.
+ *  Copyright (C) 2014-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -592,6 +592,7 @@ public:
     friend typename OFenable_if<OFis_same<O,OFoptional>::value,bool>::type
     operator>( OFnullopt_t, const O& rhs )
     {
+        (void)rhs;
         return OFFalse;
     }
 
@@ -606,6 +607,7 @@ public:
     friend typename OFenable_if<OFis_same<O,OFoptional>::value,bool>::type
     operator<=( OFnullopt_t, const O& rhs )
     {
+        (void)rhs;
         return OFTrue;
     }
 
diff --git a/ofstd/include/dcmtk/ofstd/ofstd.h b/ofstd/include/dcmtk/ofstd/ofstd.h
index 97705ac..684896d 100644
--- a/ofstd/include/dcmtk/ofstd/ofstd.h
+++ b/ofstd/include/dcmtk/ofstd/ofstd.h
@@ -884,6 +884,92 @@ class DCMTK_OFSTD_EXPORT OFStandard
       }
     }
 
+#ifdef DOXYGEN
+    /** checks if a string only contains valid decimal digits, i.e.\ 0-9.
+     *  @tparam Count the number of characters (bytes) to check.
+     *  @param string a pointer to a character array to check.
+     *  @return OFTrue if all characters are valid decimal digits, OFFalse
+     *    if at least one non-digit character is encountered.
+     */
+    template<size_t Count>
+    static OFBool checkDigits(const char* string);
+
+    /** extracts digits from a string and converts them to the given integer
+     *  number type.
+     *  The result is similar to calling atoi, but extractDigits does not
+     *  verify all characters are digits and does not require zero terminated
+     *  strings. It is meant to be used in conjunction with
+     *  OFStandard::checkDigits(). extractDigits does not handle sign
+     *  characters ('+' and '-').
+     *  @tparam T the type of the resulting value, e.g.\ unsigned int. Must
+     *    be a valid integer type, i.e.\ OFnumeric_limits<T>::is_integer must
+     *    be OFTrue.
+     *  @tparam Count the number of digits to extract. Must be greater zero
+     *    and less or equal to OFnumeric_limits<T>::digits10
+     *  @param string a pointer to a character array to extract digits from.
+     *  @return a value of type T that is equivalent to the number represented
+     *    by the digits.
+     *  @details
+     *  @warning The results are unspecified if the given string contains
+     *    non-digit characters.
+     */
+    template<typename T,size_t Count>
+    static T extractDigits(const char*);
+#else
+    template<size_t Count>
+    static OFTypename OFenable_if<!Count,OFBool>::type
+    checkDigits(const char* string)
+    {
+        return OFTrue;
+    }
+
+    template<size_t Count>
+    static OFTypename OFenable_if<!!Count,OFBool>::type
+    checkDigits(const char* string)
+    {
+        return *string >= '0' && *string <= '9' &&
+            checkDigits<Count-1>( string + 1 );
+    }
+
+    template<typename T,size_t Count>
+    static OFTypename OFenable_if
+    <
+        OFnumeric_limits<T>::is_integer && Count == 1,
+        T
+    >::type extractDigits(const char* string)
+    {
+        return *string - '0';
+    }
+
+    template<typename T,size_t Count>
+    static OFTypename OFenable_if
+    <
+        OFnumeric_limits<T>::is_integer && ( Count > 1 ) &&
+             OFnumeric_limits<T>::digits10 >= Count,
+        T
+    >::type extractDigits(const char* string)
+    {
+        return extractDigits<T,Count-1>( string ) * 10
+            + extractDigits<T,1>( string + Count - 1 );
+    }
+#endif
+
+    /** An utility function that finds a substring within a string that does
+     *  not contain leading and trailing spaces and null bytes, effectively
+     *  trimming the string without unnecessary copies.
+     *  @param pBegin a reference to a pointer to the beginning of the string.
+     *  @param pEnd a reference to a pointer to the end of the string (the
+     *    first byte behind the string).
+     *  @details
+     *  @pre pBegin <= pEnd
+     *  @details
+     *  trimString() increments pBegin and decrements pEnd until either both
+     *  point to a non-null and non-space character (the position after it in
+     *  case of pEnd) or both become equal (in case the string only contains
+     *  spaces and null bytes).
+     */
+    static void trimString( const char*& pBegin, const char*& pEnd );
+
     /** Thread-safe version of gethostbyname.
      *  @param name the host name.
      *  @return a OFStandard::OFHostent object.
diff --git a/ofstd/include/dcmtk/ofstd/ofthread.h b/ofstd/include/dcmtk/ofstd/ofthread.h
index 52a9d36..b64c5fe 100644
--- a/ofstd/include/dcmtk/ofstd/ofthread.h
+++ b/ofstd/include/dcmtk/ofstd/ofthread.h
@@ -251,14 +251,6 @@ private:
   OFThreadSpecificData& operator=(const OFThreadSpecificData& arg);
 };
 
-
-/* Mac OS X only permits named Semaphores. The code below compiles on Mac OS X
-   but does not work. This will be corrected in the next snapshot. For now, the
-   semaphore code is completely disabled for that OS (it is not used in other
-   parts of the toolkit so far.
- */
-#ifndef _DARWIN_C_SOURCE
-
 /** provides an operating system independent abstraction for semaphores.
  *  A semaphore is a non-negative integer counter that is used
  *  to coordinate access to resources. The initial and maximum value of the counter
@@ -331,9 +323,6 @@ private:
   OFSemaphore& operator=(const OFSemaphore& arg);
 };
 
-
-#endif // _DARWIN_C_SOURCE
-
 /** provides an operating system independent abstraction for mutexes
  *  (mutual exclusion locks).
  *  Mutexes prevent multiple threads from simultaneously executing critical
diff --git a/ofstd/include/dcmtk/ofstd/oftraits.h b/ofstd/include/dcmtk/ofstd/oftraits.h
index a05b4a7..a8a4e8b 100644
--- a/ofstd/include/dcmtk/ofstd/oftraits.h
+++ b/ofstd/include/dcmtk/ofstd/oftraits.h
@@ -100,7 +100,7 @@ template<typename T,typename F>
 struct OFconditional<OFFalse,T,F> { typedef F type; };
 
 template<typename T,T Value>
-struct OFintegral_constant { static const T value = Value; };
+struct OFintegral_constant { typedef OFintegral_constant type; static const T value = Value; };
 
 template<typename T,T Value>
 const T OFintegral_constant<T,Value>::value;
diff --git a/ofstd/include/dcmtk/ofstd/oftuple.h b/ofstd/include/dcmtk/ofstd/oftuple.h
index 4000993..9718b53 100644
--- a/ofstd/include/dcmtk/ofstd/oftuple.h
+++ b/ofstd/include/dcmtk/ofstd/oftuple.h
@@ -41,6 +41,9 @@ using OFtuple = std::tuple<Args...>;
 #elif !defined(DOXYGEN) // fallback implementations
 
 #include <cstdarg>
+#include "dcmtk/ofstd/ofdiag.h"
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_MISMATCHED_TAGS
 
 // Implementation of OFignore: struct OFignore_t
 // that can be constructed and assigned to anything
@@ -297,8 +300,7 @@ template<>
 struct OFtuple_content<>
 {
     OFtuple_content() {}
-    template<typename X>
-    OFtuple_content(const X&) {}
+    OFtuple_content(va_list*) {}
     template<typename X>
     void assign(const X&) {}
     template<typename X>
@@ -369,6 +371,7 @@ OFtuple<> OFtie();
 // implementation / overload for the maximum number
 // of elements currently supported.
 #include "dcmtk/ofstd/variadic/tuple.h"
+#include DCMTK_DIAGNOSTIC_POP
 
 #else // NOT C++11 && NOT DOXYGEN
 /** A class template that implements generic tuples.
diff --git a/ofstd/include/dcmtk/ofstd/ofutil.h b/ofstd/include/dcmtk/ofstd/ofutil.h
index 0dd8734..db7f71f 100644
--- a/ofstd/include/dcmtk/ofstd/ofutil.h
+++ b/ofstd/include/dcmtk/ofstd/ofutil.h
@@ -36,11 +36,23 @@
 
 #ifdef DCMTK_USE_CXX11_STL
 #include <utility>
+#include <tuple>
 #define OFmove std::move
 #define OFswap std::swap
-#define OFget std::get
 #define OFMake_pair std::make_pair
 
+template<std::size_t Index,typename T>
+constexpr auto OFget( T&& t ) -> decltype( std::get<Index>( std::forward<T>( t ) ) )
+{
+    return std::get<Index>( std::forward<T>( t ) );
+}
+
+template<typename X,typename T>
+constexpr auto OFget( T&& t ) -> decltype( std::get<X>( std::forward<T>( t ) ) )
+{
+    return std::get<X>( std::forward<T>( t ) );
+}
+
 template<typename K,typename V>
 using OFPair = std::pair<K,V>;
 
@@ -525,4 +537,343 @@ const typename OFtuple_element<Index,Tuple>::type& OFget( const Tuple& tuple );
 
 #endif // NOT C++11
 
+#ifndef DOXYGEN
+
+// OFin_place hacks, look at the doxygen documentation instead if
+// you know what's good for you!
+class DCMTK_OFSTD_EXPORT OFin_place_tag { OFin_place_tag(); };
+typedef OFin_place_tag(&OFin_place_t)();
+#define OFin_place_type_t(T) OFin_place_tag(&)(T&)
+#define OFin_place_index_t(I) OFin_place_tag(&)(OFintegral_constant<size_t,I>&)
+DCMTK_OFSTD_EXPORT OFin_place_tag OFin_place();
+template<typename T>
+OFin_place_tag OFin_place(T&) { return OFin_place(); }
+template<size_t I>
+OFin_place_tag OFin_place(OFintegral_constant<size_t,I>&) { return OFin_place(); }
+
+#else // NOT DOXYGEN
+
+/** @defgroup OFin_place_helpers_brief
+ *  @details Tools for in-place construction of objects, e.g. certain OFvariant alternatives.
+ *  @defgroup OFin_place_helpers Tools for in-place construction
+ *  @details
+ *  <b><em style="color:#7f0000">#include</em> <span class="keyword">"dcmtk/ofstd/ofutil.h"</span></b><br><br>
+ *  @copydoc OFin_place_helpers_brief
+ *  <table class="memberdecls">
+ *    <tr class="heading">
+ *      <td colspan="2"><div><h2 class="groupheader">Type Definitions</h2></div></td>
+ *    </tr>
+ *    <tr>
+ *      <td class="memItemLeft" align="right" valign="top"><span class="keyword">typedef</span> <em style="color:#7f0000;opacity:.7">unspecified</em></td>
+ *      <td class="memItemRight" valign="bottom"><a href="#OFin_place_t">OFin_place_t</a></td>
+ *    </tr>
+ *    <tr>
+ *      <td class="mdescLeft"></td>
+ *      <td class="mdescRight">A type for tagging an in-place constructor as such. <a href="#OFin_place_t">More...</a></td>
+ *    </tr>
+ *    <tr><td class="memSeparator" colspan="2"></td></tr>
+ *    <tr><td class="memTemplParams" colspan="2">template<typename T></td></tr>
+ *    <tr>
+ *      <td class="memItemLeft" align="right" valign="top"><span class="keyword">typedef</span> <em style="color:#7f0000;opacity:.7">unspecified</em></td>
+ *      <td class="memItemRight" valign="bottom"><a href="#OFin_place_type_t">OFin_place_type_t(T)</a></td>
+ *    </tr>
+ *    <tr>
+ *      <td class="mdescLeft"></td>
+ *      <td class="mdescRight">A type for tagging an in-place constructor for a certain type as such. <a href="#OFin_place_type_t">More...</a></td>
+ *    </tr>
+ *    <tr><td class="memSeparator" colspan="2"></td></tr>
+ *    <tr><td class="memTemplParams" colspan="2">template<size_t I></td></tr>
+ *    <tr>
+ *      <td class="memItemLeft" align="right" valign="top"><span class="keyword">typedef</span> <em style="color:#7f0000;opacity:.7">unspecified</em></td>
+ *      <td class="memItemRight" valign="bottom"><a href="#OFin_place_index_t">OFin_place_index_t(I)</a></td>
+ *    </tr>
+ *    <tr>
+ *      <td class="mdescLeft"></td>
+ *      <td class="mdescRight">A type for tagging an in-place constructor based on a certain index  as such. <a href="#OFin_place_index_t">More...</a></td>
+ *    </tr>
+ *    <tr><td class="memSeparator" colspan="2"></td></tr>
+ *  </table>
+ *  <table class="memberdecls">
+ *    <tr class="heading">
+ *      <td colspan="2"><div><h2 class="groupheader">Global Constants</h2></div></td>
+ *    </tr>
+ *    <tr>
+ *      <td class="memItemLeft" align="right" valign="top"><a href="#OFin_place_t">OFin_place_t</a></td>
+ *      <td class="memItemRight" valign="bottom"><a href="#OFin_place_generic">OFin_place</a></td>
+ *    </tr>
+ *    <tr>
+ *      <td class="mdescLeft"></td>
+ *      <td class="mdescRight">
+ *        A constant of type <a href="#OFin_place_t">OFin_place_t</a> that may be used for in-place construction.
+ *        <a href="#OFin_place_generic">More...</a>
+ *      </td>
+ *    </tr>
+ *    <tr><td class="memSeparator" colspan="2"></td></tr>
+ *    <tr><td class="memTemplParams" colspan="2">template<typename T></td></tr>
+ *    <tr>
+ *      <td class="memItemLeft" align="right" valign="top"><a href="#OFin_place_type_t">OFin_place_type_t(T)</a></td>
+ *      <td class="memItemRight" valign="bottom"><a href="#OFin_place_type">OFin_place<T></a></td>
+ *    </tr>
+ *    <tr>
+ *      <td class="mdescLeft"></td>
+ *      <td class="mdescRight">
+ *        A constant of type <a href="#OFin_place_type_t">OFin_place_type_t(T)</a> that may be used for in-place construction.
+ *        <a href="#OFin_place_type">More...</a>
+ *      </td>
+ *    </tr>
+ *    <tr><td class="memSeparator" colspan="2"></td></tr>
+ *    <tr><td class="memTemplParams" colspan="2">template<size_t I></td></tr>
+ *    <tr>
+ *      <td class="memItemLeft" align="right" valign="top"><a href="#OFin_place_index_t">OFin_place_index_t(I)</a></td>
+ *      <td class="memItemRight" valign="bottom"><a href="#OFin_place_index">OFin_place<I></a></td>
+ *    </tr>
+ *    <tr>
+ *      <td class="mdescLeft"></td>
+ *      <td class="mdescRight">
+ *        A constant of type <a href="#OFin_place_index_t">OFin_place_index_t(I)</a> that may be used for in-place construction.
+ *        <a href="#OFin_place_index">More...</a>
+ *      </td>
+ *    </tr>
+ *    <tr><td class="memSeparator" colspan="2"></td></tr>
+ *  </table>
+ *  <h2 class="groupheader">Type Definition Documentation</h2>
+ *  @anchor OFin_place_t
+ *  <div class="memitem">
+ *    <div class="memproto">
+ *      <div class="memname">
+ *        <span class="keyword">typedef</span> <em style="color:#7f0000;opacity:.7">unspecified</em> OFin_place_t
+ *      </div>
+ *    </div>
+ *    <div class="memdoc">
+ *      <br>A type for tagging an in-place constructor as such.<br>
+ *      <dl></dl>
+ *      <b>Usage Example:</b><br>
+ *      @code{.cpp}
+ *      template<typename T>
+ *      class Wrapper
+ *      {
+ *      public:
+ *        // Will copy construct the wrapped value from a T.
+ *        Wrapper( const T& t );
+ *
+ *        // Will in-place construct the value from the given arguments,
+ *        // calling T( arguments... ) internally, without unnecessary
+ *        // copies.
+ *        template<typename... Arguments>
+ *        Wrapper( OFin_place_t, Arguments... arguments );
+ *
+ *      private:
+ *        // ... wrapper implementation ...
+ *      };
+ *      @endcode
+ *    </div>
+ *  </div>
+ *  @anchor OFin_place_type_t
+ *  <div class="memitem">
+ *    <div class="memproto">
+ *      <div class="memtemplate">template<typename T></div>
+ *      <div class="memname">
+ *        <span class="keyword">typedef</span> <em style="color:#7f0000;opacity:.7">unspecified</em> OFin_place_type_t(T)
+ *      </div>
+ *    </div>
+ *    <div class="memdoc">
+ *      <br>A type for tagging an in-place constructor for a certain type as such.
+ *      <br>
+ *      <dl class="tparams">
+ *        <dt>Template Parameters<dt>
+ *        <dd><span class="paramname">T</span> the type this in-pace constructor handles, i.e. the type that will be constructed.</dd>
+ *      </dl>
+ *      @note Pre C++11 compilers do not support alias templates, therefore, OFin_place_type_t is implemented
+ *        using preprocessor macros internally. This is why you need to use curved brackets instead of angled ones.
+ *
+ *      <b>Usage Example:</b><br>
+ *      @code{.cpp}
+ *      template<typename A,typename B>
+ *      class Union
+ *      {
+ *      public:
+ *        // Will copy construct the wrapped value as an A from a.
+ *        Union( const A& a );
+ *
+ *        // Will copy construct the wrapped value as a B from b.
+ *        Union( const B& b );
+ *
+ *        // Will in-place construct the value as an A from the given
+ *        // arguments, calling A( arguments... ) internally, without
+ *        // unnecessary copies.
+ *        template<typename... Arguments>
+ *        Union( OFin_place_type_t(A), Arguments... arguments );
+ *
+ *        // Will in-place construct the value as a B from the given
+ *        // arguments, calling B( arguments... ) internally, without
+ *        // unnecessary copies.
+ *        template<typename... Arguments>
+ *        Union( OFin_place_type_t(B), Arguments... arguments );
+ *
+ *      private:
+ *        // ... union implementation ...
+ *      };
+ *      @endcode
+ *    </div>
+ *  </div>
+ *  @anchor OFin_place_index_t
+ *  <div class="memitem">
+ *    <div class="memproto">
+ *      <div class="memtemplate">template<size_t I></div>
+ *      <div class="memname">
+ *        <span class="keyword">typedef</span> <em style="color:#7f0000;opacity:.7">unspecified</em> OFin_place_index_t(I)
+ *      </div>
+ *    </div>
+ *    <div class="memdoc">
+ *      <br>A type for tagging an in-place constructor for a certain index as such.<br>
+ *      <dl class="tparams">
+ *        <dt>Template Parameters<dt>
+ *        <dd>
+ *          <span class="paramname">I</span> the index this in-pace constructor handles, i.e. the zero
+ *          based index of the type that will be constructed.
+ *        </dd>
+ *      </dl>
+ *      @note Pre C++11 compilers do not support alias templates, therefore, OFin_place_index_t is implemented
+ *        using preprocessor macros internally. This is why you need to use curved brackets instead of angled ones.
+ *
+ *      <b>Usage Example:</b><br>
+ *      @code{.cpp}
+ *      template<typename A,typename B>
+ *      class Union
+ *      {
+ *      public:
+ *        // Will copy construct the wrapped value as an A from a.
+ *        Union( const A& a );
+ *
+ *        // Will copy construct the wrapped value as a B from b.
+ *        Union( const B& b );
+ *
+ *        // Will in-place construct the value as an A from the given
+ *        // arguments, calling A( arguments... ) internally, without
+ *        // unnecessary copies.
+ *        // This will even work if A and B refer to the same type.
+ *        template<typename... Arguments>
+ *        Union( OFin_place_index_t(0), Arguments... arguments );
+ *
+ *        // Will in-place construct the value as a B from the given
+ *        // arguments, calling B( arguments... ) internally, without
+ *        // unnecessary copies.
+ *        // This will even work if A and B refer to the same type.
+ *        template<typename... Arguments>
+ *        Union( OFin_place_index_t(1), Arguments... arguments );
+ *
+ *      private:
+ *        // ... union implementation ...
+ *      };
+ *      @endcode
+ *    </div>
+ *  </div>
+ *  <h2 class="groupheader">Global Constant Documentation</h2>
+ *  @anchor OFin_place_generic
+ *  <div class="memitem">
+ *    <div class="memproto">
+ *      <div class="memname">
+ *        <a href="#OFin_place_t">OFin_place_t</a> OFin_place
+ *      </div>
+ *    </div>
+ *    <div class="memdoc">
+ *      <br>A constant of type <a href="#OFin_place_t">OFin_place_t</a> that may be used for in-place construction.<br>
+ *      @remarks OFin_place is actually an overloaded function, but instead of calling it
+ *        (which one should never do), its address is used as a tag, since the type of
+ *        its address differs depending on which overload and template parameters are used.
+ *        See http://en.cppreference.com/w/cpp/utility/in_place for more information.
+ *
+ *      <b>Usage Example:</b><br>
+ *      @code{.cpp}
+ *      template<typename T>
+ *      class Wrapper; // see OFin_place_t example
+ *      // ...
+ *      // will construct an OFString and then copy construct the value in the wrapper
+ *      Wrapper<OFString>( "Hello World" );
+ *      // will in-place construct the value in the wrapper
+ *      Wrapper<OFString>( OFin_place, "Hello World" );
+ *      // this also works with multiple arguments:
+ *      // will take only the fist five characters of the const char*
+ *      Wrapper<OFString>( OFin_place, "Hello World", 5 );
+ *      @endcode
+ *    </div>
+ *  </div>
+ *  @anchor OFin_place_type
+ *  <div class="memitem">
+ *    <div class="memproto">
+ *      <div class="memtemplate">template<typename T></div>
+ *      <div class="memname">
+ *        <a href="#OFin_place_type_t">OFin_place_type_t(T)</a> OFin_place<T>
+ *      </div>
+ *    </div>
+ *    <div class="memdoc">
+ *      <br>A constant of type <a href="#OFin_place_type_t">OFin_place_type_t(T)</a> that may be used for in-place construction.<br>
+ *      <dl class="tparams">
+ *        <dt>Template Parameters<dt>
+ *        <dd><span class="paramname">T</span> the type for selecting an in-pace constructor, i.e. the type that will be constructed.</dd>
+ *      </dl>
+ *      @remarks OFin_place is actually an overloaded function, but instead of calling it
+ *        (which one should never do), its address is used as a tag, since the type of
+ *        its address differs depending on which overload and template parameters are used.
+ *        See http://en.cppreference.com/w/cpp/utility/in_place for more information.
+ *
+ *      <b>Usage Example:</b><br>
+ *      @code{.cpp}
+ *      template<typename A,typename B>
+ *      class Union; // see OFin_place_type_t example
+ *      // ...
+ *      // will construct an OFString and then copy construct the value inside the union
+ *      Union<int,OFString>( OFString( "Hello World" ) );
+ *      // will in-place construct an OFString value inside the union
+ *      // with only the fist five characters
+ *      Union<int,OFString>( OFin_place<OFString>, "Hello World", 5 );
+ *      // will construct an integer value inside the union by casting
+ *      // the address of the character array constant to int
+ *      Union<int,OFString>( OFin_place<int>, "Hello World" );
+ *      @endcode
+ *    </div>
+ *  </div>
+ *  @anchor OFin_place_index
+ *  <div class="memitem">
+ *    <div class="memproto">
+ *      <div class="memtemplate">template<size_t I></div>
+ *      <div class="memname">
+ *        <a href="#OFin_place_index_t">OFin_place_index_t(I)</a> OFin_place<I>
+ *      </div>
+ *    </div>
+ *    <div class="memdoc">
+ *      <br>A constant of type <a href="#OFin_place_index_t">OFin_place_index_t(I)</a> that may be used for in-place construction.<br>
+ *      <dl class="tparams">
+ *        <dt>Template Parameters<dt>
+ *        <dd>
+ *          <span class="paramname">I</span> the index for selecting an in-pace constructor, i.e. the
+ *          zero based index of the type that will be constructed.
+ *        </dd>
+ *      </dl>
+ *      @remarks OFin_place is actually an overloaded function, but instead of calling it
+ *        (which one should never do), its address is used as a tag, since the type of
+ *        its address differs depending on which overload and template parameters are used.
+ *        See http://en.cppreference.com/w/cpp/utility/in_place for more information.
+ *
+ *      <b>Usage Example:</b><br>
+ *      @code{.cpp}
+ *      template<typename A,typename B>
+ *      class Union; // see OFin_place_index_t example
+ *      // ...
+ *      // error, cannot determine which constructor shall be used,
+ *      // since both take an int
+ *      Union<int,int>( 3 );
+ *      // will in-place construct an int value inside the union
+ *      // tagging it as an A
+ *      Union<int,int>( OFin_place<0>, 3 );
+ *      // will in-place construct an int value inside the union
+ *      // tagging it as a B
+ *      Union<int,int>( OFin_place<1>, 3 );
+ *      @endcode
+ *    </div>
+ *  </div>
+ */
+
+#endif // DOXYGEN
+
 #endif // OFUTIL_H
diff --git a/ofstd/include/dcmtk/ofstd/ofvriant.h b/ofstd/include/dcmtk/ofstd/ofvriant.h
new file mode 100644
index 0000000..d7eb225
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/ofvriant.h
@@ -0,0 +1,740 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  ofstd
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: Implementing tagged unions similar to C++17's std::variant.
+ *
+ */
+
+#ifndef OFVARIANT_H
+#define OFVARIANT_H
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+/** @file
+ *  Declares OFvariant and related functionality.
+ *  @defgroup ofvisit_variant OFvisit – OFvariant
+ *  Apply a visitor to an OFvariant object.
+ *  @see @ref ofget_variant "OFget" – @copybrief ofget_variant
+ *  @defgroup ofget_variant OFget – OFvariant
+ *  Get a pointer to the value stored in an OFvariant holding the selected alternative.
+ *  @see @ref ofvisit_variant "OFvisit" – @copybrief ofvisit_variant
+ */
+
+#ifdef DCMTK_USE_CXX11_STL
+#include <type_traits>
+#include <cassert>
+#include <limits>
+
+template<std::size_t,typename... Alternatives>
+class OFvariant_traits
+{
+public:
+    using is_constructible = std::false_type;
+    static constexpr inline std::size_t alignment() { return 1; }
+    static constexpr inline std::size_t size() { return 0; }
+    static void index_of();
+};
+
+template<std::size_t Index,typename Alternative0,typename... Alternatives>
+class OFvariant_traits<Index,Alternative0,Alternatives...>
+: OFvariant_traits<Index+1,Alternatives...>
+{
+public:
+    using OFvariant_traits<Index+1,Alternatives...>::index_of;
+
+    using first_alternative = Alternative0;
+
+    static constexpr inline std::size_t alignment()
+    {
+        return alignof(aligned);
+    }
+
+    static constexpr inline std::size_t size()
+    {
+        return sizeof( first_alternative ) > OFvariant_traits<Index+1,Alternatives...>::size()
+        ?
+            sizeof( first_alternative )
+        :
+            OFvariant_traits<Index+1,Alternatives...>::size()
+        ;
+    }
+
+    static std::integral_constant<std::size_t,Index> index_of( first_alternative );
+
+private:
+    struct aligned { alignas(OFvariant_traits<Index+1,Alternatives...>::alignment()) char c; first_alternative a; };
+};
+
+template<std::size_t AlternativeCount,typename... IndexAlternatives>
+struct OFvariant_select_index_type {};
+
+template<std::size_t AlternativeCount,typename IndexAlternative0,typename... IndexAlternatives>
+struct OFvariant_select_index_type<AlternativeCount,IndexAlternative0,IndexAlternatives...>
+{
+    using type = typename std::conditional
+    <
+        AlternativeCount <= std::numeric_limits<IndexAlternative0>::max(),
+        std::enable_if<true,IndexAlternative0>,
+        OFvariant_select_index_type<AlternativeCount,IndexAlternatives...>
+    >::type::type;
+};
+
+template<typename...>
+class OFvariant;
+
+template<std::size_t Index,typename Variant>
+struct OFvariant_alternative;
+
+template<std::size_t Index,typename Alternative0,typename... Alternatives>
+struct OFvariant_alternative<Index,OFvariant<Alternative0,Alternatives...>>
+: OFvariant_alternative<Index - 1,OFvariant<Alternatives...>> {};
+
+template<typename Alternative0,typename... Alternatives>
+struct OFvariant_alternative<0,OFvariant<Alternative0,Alternatives...>>
+{
+    using type = Alternative0;
+};
+
+template<typename... Alternatives>
+class OFvariant
+{
+    using traits = OFvariant_traits<0,Alternatives...>;
+    using index_type = typename OFvariant_select_index_type<sizeof...(Alternatives),std::uint8_t,std::uint16_t,std::uint32_t,std::uint64_t>::type;
+    template<typename T>
+    using index_of = decltype(traits::index_of(std::declval<T>()));
+
+public:
+    using variant = OFvariant;
+
+    OFvariant()
+    : m_Content()
+    , m_Index( 0 )
+    {
+        new (m_Content) typename traits::first_alternative;
+    }
+
+    template<typename T,index_type Index = index_of<T>()>
+    OFvariant( T&& t )
+    : m_Content()
+    , m_Index( Index )
+    {
+        new (m_Content) typename OFvariant_alternative<Index,OFvariant>::type( std::forward<T>( t ) );
+    }
+
+    OFvariant( OFvariant& rhs )
+    : OFvariant( const_cast<const OFvariant&>( rhs ) )
+    {
+
+    }
+
+    OFvariant( const OFvariant& rhs )
+    : m_Content()
+    , m_Index( rhs.index() )
+    {
+        copy_construct( rhs );
+    }
+
+    OFvariant( OFvariant&& rhs )
+    : m_Content()
+    , m_Index( rhs.index() )
+    {
+        move_construct( std::move( rhs ) );
+    }
+
+    template<typename T,index_type Index = index_of<T>()>
+    OFvariant& operator=( T&& t )
+    {
+        if( m_Index != Index )
+        {
+            destroy();
+            m_Index = Index;
+            new (m_Content) typename OFvariant_alternative<Index,OFvariant>::type( std::forward<T>( t ) );
+        }
+        else
+        {
+            *reinterpret_cast<typename OFvariant_alternative<Index,OFvariant>::type*>( m_Content ) = std::forward<T>( t );
+        }
+        return *this;
+    }
+
+    OFvariant& operator=( OFvariant& rhs )
+    {
+        return *this = const_cast<const OFvariant&>( rhs );
+    }
+
+    OFvariant& operator=( const OFvariant& rhs )
+    {
+        if( this != &rhs )
+        {
+            if( m_Index != rhs.m_Index )
+            {
+                destroy();
+                m_Index = rhs.m_Index;
+                copy_construct( rhs );
+            }
+            else
+            {
+                using functor = void(OFvariant::*)(const OFvariant&);
+                static const functor assignment[] =
+                {
+                    &OFvariant::template copy_assign_alternative<Alternatives>...
+                };
+                (this->*assignment[m_Index])( rhs );
+            }
+        }
+        return *this;
+    }
+
+    OFvariant& operator=( OFvariant&& rhs )
+    {
+        if( this != &rhs )
+        {
+            if( m_Index != rhs.m_Index )
+            {
+                destroy();
+                m_Index = rhs.m_Index;
+                move_construct( std::move( rhs ) );
+            }
+            else
+            {
+                using functor = void(OFvariant::*)(OFvariant&&);
+                static const functor assignment[] =
+                {
+                    &OFvariant::template move_assign_alternative<Alternatives>...
+                };
+                (this->*assignment[m_Index])( std::move( rhs ) );
+            }
+        }
+        return *this;
+    }
+
+    ~OFvariant()
+    {
+        destroy();
+    }
+
+    std::size_t index() const
+    {
+        return m_Index;
+    }
+
+private:
+    template<typename T,typename... Xs>
+    friend T* OFget( OFvariant<Xs...>* );
+    template<typename T,typename... Xs>
+    friend const T* OFget( const OFvariant<Xs...>* );
+    template<typename ReturnType,typename FN,typename... Xs>
+    friend ReturnType OFvisit( FN&&, OFvariant<Xs...>& );
+    template<typename ReturnType,typename FN,typename... Xs>
+    friend ReturnType OFvisit( FN&&, const OFvariant<Xs...>& );
+
+    template<typename Alternative>
+    void copy_construct_alternative( const OFvariant& rhs )
+    {
+        new (m_Content) Alternative( *reinterpret_cast<const Alternative*>( rhs.m_Content ) );
+    }
+
+    template<typename Alternative>
+    void move_construct_alternative( OFvariant&& rhs )
+    {
+        new (m_Content) Alternative( std::move( *reinterpret_cast<Alternative*>( rhs.m_Content ) ) );
+    }
+
+    template<typename Alternative>
+    void copy_assign_alternative( const OFvariant& rhs )
+    {
+        *reinterpret_cast<Alternative*>( m_Content ) = *reinterpret_cast<const Alternative*>( rhs.m_Content );
+    }
+
+    template<typename Alternative>
+    void move_assign_alternative( OFvariant&& rhs )
+    {
+        *reinterpret_cast<Alternative*>( m_Content ) = std::move( *reinterpret_cast<Alternative*>( rhs.m_Content ) );
+    }
+
+    template<typename Alternative>
+    void destructor()
+    {
+        reinterpret_cast<Alternative*>( m_Content )->~Alternative();
+    }
+
+    template<typename ReturnType,typename Alternative,typename FN>
+    ReturnType visit_alternative( FN&& fn )
+    {
+        return fn( *reinterpret_cast<Alternative*>( m_Content ) );
+    }
+
+    template<typename ReturnType,typename Alternative,typename FN>
+    ReturnType const_visit_alternative( FN&& fn ) const
+    {
+        return fn( *reinterpret_cast<const Alternative*>( m_Content ) );
+    }
+
+    void copy_construct( const OFvariant& rhs )
+    {
+        using functor = void(OFvariant::*)(const OFvariant&);
+        static const functor constructor[] =
+        {
+            &OFvariant::template copy_construct_alternative<Alternatives>...
+        };
+        assert( m_Index < sizeof...(Alternatives) );
+        (this->*constructor[m_Index])( rhs );
+    }
+
+    void move_construct( OFvariant&& rhs )
+    {
+        using functor = void(OFvariant::*)(OFvariant&&);
+        static const functor constructor[] =
+        {
+            &OFvariant::template move_construct_alternative<Alternatives>...
+        };
+        assert( m_Index < sizeof...(Alternatives) );
+        (this->*constructor[m_Index])( std::move( rhs ) );
+    }
+
+    void destroy()
+    {
+        using functor = void(OFvariant::*)();
+        static const functor destructor[] =
+        {
+            &OFvariant::template destructor<Alternatives>...
+        };
+        assert( m_Index < sizeof...(Alternatives) );
+        (this->*destructor[m_Index])();
+    }
+
+    alignas(traits::alignment()) std::uint8_t m_Content[traits::size()];
+    index_type m_Index;
+};
+
+template<std::size_t Index,typename X,typename T0,typename... Tn>
+struct OFvariant_index_of_type
+: OFvariant_index_of_type<Index + 1,X,Tn...> {};
+
+template<std::size_t Index,typename X,typename... Tn>
+struct OFvariant_index_of_type<Index,X,X,Tn...>
+: std::integral_constant<std::size_t,Index> {};
+
+template<typename T,typename... Alternatives>
+constexpr bool OFholds_alternative( const OFvariant<Alternatives...>& v )
+{
+    return v.index() == OFvariant_index_of_type<0,T,Alternatives...>::value;
+}
+
+template<typename T,typename... Alternatives>
+T* OFget( OFvariant<Alternatives...>* v )
+{
+    if( OFholds_alternative<T>( *v ) )
+        return reinterpret_cast<T*>( v->m_Content );
+    return nullptr;
+}
+
+template<typename T,typename... Alternatives>
+const T* OFget( const OFvariant<Alternatives...>* v )
+{
+    if( OFholds_alternative<T>( *v ) )
+        return reinterpret_cast<const T*>( v->m_Content );
+    return nullptr;
+}
+
+template<typename ReturnType,typename FN,typename... Alternatives>
+ReturnType OFvisit( FN&& fn, OFvariant<Alternatives...>& v )
+{
+    using functor = ReturnType(OFvariant<Alternatives...>::*)(FN&&);
+    static const functor visit[] =
+    {
+        &OFvariant<Alternatives...>::template visit_alternative<ReturnType,Alternatives,FN>...
+    };
+    return (v.*visit[v.index()])( std::forward<FN>( fn ) );
+}
+
+template<typename ReturnType,typename FN,typename... Alternatives>
+ReturnType OFvisit( FN&& fn, const OFvariant<Alternatives...>& v )
+{
+    using functor = ReturnType(OFvariant<Alternatives...>::*)(FN&&) const;
+    static const functor visit[] =
+    {
+        &OFvariant<Alternatives...>::template const_visit_alternative<ReturnType,Alternatives,FN>...
+    };
+    return (v.*visit[v.index()])( std::forward<FN>( fn ) );
+}
+
+#elif !defined(DOXYGEN) // fallback implementation
+
+// Include the actual implementation (that emulates variadic templates)
+#include "dcmtk/ofstd/variadic/variant.h"
+
+#else // NOT C++11 && NOT DOXYGEN
+
+/** A class template that represents a type-safe union.
+ *  <b><em>#include</em> "dcmtk/ofstd/ofvriant.h"</b> for using this class<br>
+ *  @headerfile ofvriant.h "dcmtk/ofstd/ofvriant.h"
+ *  @tparam Alternatives a set of types that may be stored in this variant. All types must be (possibly
+ *    cv-qualified) object types.
+ *  @details
+ *  OFvariant is a custom implementation of a subset of C++17's std::variant,
+ *  see http://en.cppreference.com/w/cpp/utility/variant for a description of std::variant.
+ *  An instance of OFvariant at any given time holds a value of one of its alternative types.
+ *  As with unions, if a variant holds a value of some object type T, the object representation of T is
+ *  allocated directly within the object representation of the variant itself if possible.
+ *  @note If no suitable alignment specifiers were available for the target platform, OFvariant will
+ *    use a fallback implementation that stores the alternative on the heap – as opposite to std::variant.
+ *  @details
+ *  The preferred way to access an OFvariant object is visitation utilizing @ref ofvisit_variant "OFvisit".
+ *  If a certain alternative is expected to be held by the variant, @ref ofget_variant "OFget" may be used to
+ *  access it directly.
+ *  @see @ref ofvisit_variant "OFvisit" – @copybrief ofvisit_variant
+ *  @see @ref ofget_variant "OFget" – @copybrief ofget_variant
+ *  @see OFmonostate – @copybrief OFmonostate
+ *  @see @ref OFin_place_helpers "OFin_place" – @copydoc OFin_place_helpers_brief
+ */
+template<typename... Alternatives>
+class OFvariant
+{
+public:
+
+    /** Constructs a variant holding a default constructed value of the first alternative.
+     *  @pre The first alternative must be default constructible.
+     *  @see OFmonostate – @copybrief OFmonostate
+     */
+    OFvariant();
+
+    /** Copy constructs a variant holding a copy of the value rhs holds.
+     *  @param rhs a const reference to another object of equal type.
+     *  @pre All alternatives must be copy constructible.
+     */
+    OFvariant( const OFvariant& rhs );
+
+    /** Move constructs a variant by moving the value rhs holds.
+     *  @param rhs an rvalue reference to another object of equal type.
+     *  @pre All alternatives must be move constructible.
+     *  @note This constructor is currently only available if C++11 support was enabled.
+     */
+    OFvariant( OFvariant&& rhs );
+
+    /** Constructs a variant holding the alternative that most closely matches the given
+     *  argument.
+     *  @tparam T the type of the argument, will be deduced automatically.
+     *  @param t an object of type `T` that will be converted to one of the alternatives.
+     *  @precondition There must be at least one alternative that can be constructed from
+     *    the given parameter `t` and there must be exactly one such alternative that
+     *    takes precedence over the others.
+     *  @attention t will be perfectly forwarded if C++11 support is available, i.e. the
+     *    alternative may be move constructed from `t` if possible. Support for perfect
+     *    forwarding is NOT available without C++11 support, therefore the alternative
+     *    will be copy constructed in this case, this means: <b>the selected alternative
+     *    must be copy constructible if pre C++11 compilers shall be supported</b>.
+     *  @details
+     *  <h3>Usage Example:</h3>
+     *  @code{.cpp}
+     *  OFvariant<int,float,long>( 3 );      // OK
+     *  OFvariant<int,int>( 3 );             // ill formed, both alternatives take equal precedence
+     *  OFvariant<OFString,OFBool>( "abc" ); // OK, but chooses OFBool!
+     *  @endcode
+     */
+    template<typename T>
+    OFvariant( T t );
+
+    /** Destroys the value that the variant currently holds.
+     */
+    ~OFvariant();
+
+    /** Copy assigns the value rhs holds to *this.
+     *  @param rhs a const reference to another object of equal type.
+     *  @pre all alternatives must be copy constructible and copy assignable.
+     *  @return `*this`
+     *  @post
+     *  @li if `*this` and `rhs` hold the same alternative, the value contained in `rhs`
+     *    is copy assigned to the value contained in `*this`.
+     *  @li if `*this` and `rhs` hold different alternatives, the value contained in `*this`
+     *    is destroyed and a new one is copy constructed from the value contained in `rhs`.
+     */
+    OFvariant& operator=( const OFvariant& rhs );
+
+    /** Move assigns the value rhs holds to *this.
+     *  @param rhs an rvalue reference to another object of equal type.
+     *  @pre all alternatives must be move constructible and move assignable.
+     *  @return `*this`
+     *  @post
+     *  @li if `*this` and `rhs` hold the same alternative, the value contained in `rhs`
+     *    is move assigned to the value contained in `*this`.
+     *  @li if `*this` and `rhs` hold different alternatives, the value contained in `*this`
+     *    is destroyed and a new one is move constructed from the value contained in `rhs`.
+     *  @note This constructor is currently only available if C++11 support was enabled.
+     */
+    OFvariant& operator=( OFvariant&& rhs );
+
+    /** Converts the given argument to one of the alternatives and assigns it to *this.
+     *  @tparam T the type of the argument, will be deduced automatically.
+     *  @param t an object of type `T` that will be converted to one of the alternatives
+     *    for assignment.
+     *  @return `*this`
+     *  @pre There must be at least one alternative that can be constructed from
+     *    the given parameter `t` and there must be exactly one such alternative that
+     *    takes precedence over the others.
+     *  @attention `t` will be perfectly forwarded if C++11 support is available, i.e. the
+     *    alternative may be move constructed from t if possible. Support for perfect
+     *    forwarding is NOT available without C++11 support, therefore the alternative
+     *    will be copy constructed in this case, this means: <b>the selected alternative
+     *    must be copy constructible if pre C++11 compilers shall be supported</b>.
+     *  @details
+     *  <h3>Usage Example:</h3>
+     *  @code{.cpp}
+     *  OFvariant<int,float,long> v1;
+     *  v1 = 3                         // OK
+     *  OFvariant<int,int> v2;
+     *  v2 = 3                         // ill formed, both alternatives take equal precedence
+     *  OFvariant<OFString,OFBool> v3;
+     *  v3 = "abc";                    // OK, but chooses OFBool!
+     *  @endcode
+     */
+    template<typename T>
+    OFvariant& operator=( T t );
+
+    /** Get the index of alternative that is currently being held.
+     *  @return the zero based index of that alternative that is currently being held by
+     *    `*this`, i.e. `0` for the first alternative, `1` for the second, etc.
+     */
+    size_t index() const;
+};
+
+/** Try to get a pointer to the given alternative from an OFvariant object.
+ *  @ingroup ofget_variant
+ *  @relates OFvariant
+ *  @tparam Alternative the chosen alternative that shall be accessed.
+ *  @tparam Alternatives the alternatives the given variant could hold, will be deduced
+ *    automatically.
+ *  @param v a reference to an OFvariant object potentially holding `Alternative`.
+ *  @return the address of the contained value of type `Alternative` if such a value is
+ *    contained. `OFnullptr` otherwise.
+ *  @details
+ *  <h3>Usage Example:</h3>
+ *  @code{.cpp}
+ *  OFvariant<int,OFString> v;
+ *  // ... some value is assigned to v ...
+ *  if( int* pI = OFget<int>( v ) )
+ *  {
+ *    COUT << "Yes, it really is an int with the value " << *pI << '!' << OFendl;
+ *    *pI = "27"; // now, let's directly assign something else
+ *  }
+ *  @endcode
+ */
+template<typename Alternative,typename... Alternatives>
+Alternative* OFget( OFvariant<Alternatives...>* v );
+
+/** Try to get a pointer to the given alternative from an OFvariant object.
+ *  @ingroup ofget_variant
+ *  @relates OFvariant
+ *  @tparam Alternative the chosen alternative that shall be accessed.
+ *  @tparam Alternatives the alternatives the given variant could hold, will be deduced
+ *    automatically.
+ *  @param v a const reference to an OFvariant object potentially holding `Alternative`.
+ *  @return the address of the contained value of type `const Alternative` if such a value is
+ *    contained. `OFnullptr` otherwise.
+ *  @details
+ *  <h3>Usage Example:</h3>
+ *  @code{.cpp}
+ *  const OFvariant<int,OFString> v( ... some value is assigned to v ... );
+ *  if( int* pI = OFget<int>( v ) )        // error, the result is const!
+ *  if( const int* pI = OFget<int>( v ) )  // OK
+ *  {
+ *    COUT << "Yes, it really is an int with the value " << *pI << '!' << OFendl;
+ *    *pI = "27"; // Error, *pI is const!
+ *  }
+ *  @endcode
+ */
+template<typename Alternative,typename... Alternatives>
+const Alternative* OFget( const OFvariant<Alternatives...>* v );
+
+/** Applies the given visitor to the given OFvariant object.
+ *  @ingroup ofvisit_variant
+ *  @relates OFvariant
+ *  @details at anchor ofget_alternative_const_variant
+ *  @tparam Result the type of the returned value. Pre C++11 compiles do not allow determining the
+ *    result type automatically in a portable way, therefore, it must be explicitly given by
+ *    the caller.
+ *  @tparam Visitor the type of the visitor, will be deduced automatically.
+ *  @tparam Alternatives the alternatives the given variant could hold, will be deduced
+ *    automatically.
+ *  @param visitor the visitor that will be invoked with the alternative currently being
+ *    held by the given OFvariant object.
+ *  @param v a reference to an OFvariant object that is going to be visited.
+ *  @return Let `CurrentAlternative` be the alternative that v currently holds: the result
+ *    of `visitor( *OFget<CurrentAlternative>( &v ) )` will be converted to `Result` and then
+ *    returned.
+ *  @pre all possible results must be convertible to `Result`.
+ *  @pre `visitor` must be able to take all possible alternatives.
+ *  @note If C++11 support is available, the visitor will be forwarded using perfect forwarding.
+ *    If not, the visitor may be copy constructed at least once, therefore, the visitor needs
+ *    to be copy constructible when pre C++11 compilers are targeted.
+ *  @details
+ *  <h3>Usage Example:</h3>
+ *  @code{.cpp}
+ *  struct PowerVisitor
+ *  {
+ *      template<typename Number>
+ *      Number operator()( Number number )
+ *      {
+ *          return number * number;
+ *      }
+ *  };
+ *  struct PrintVisitor
+ *  {
+ *      template<typename Number>
+ *      void operator()( Number number )
+ *      {
+ *          COUT << number << OFendl;
+ *      }
+ *  };
+ *  struct AssignVisitor
+ *  {
+ *      template<typename Number>
+ *      void operator()( Number& number )
+ *      {
+ *          number *= number;
+ *      }
+ *  };
+ *  // ...
+ *  OFvariant<int,float,double> v( 3.14 );
+ *  OFvariant<int,float,double> result = OFvisit<OFvariant<int,float,double> >( PowerVisitor(), v );
+ *  switch( result.index() )
+ *  {
+ *  case 0: COUT << "int "; break;
+ *  case 1: COUT << "float "; break;
+ *  case 2: COUT << "double "; break;
+ *  }
+ *  OFvisit<void>( PrintVisitor(), result );
+ *  COUT << "double " << OFvisit<double>( PowerVisitor(), v ) << OFendl;   // OK, every alternative fits inside double
+ *  COUT << "int " << OFvisit<int>( PowerVisitor(), v ) << OFendl;         // OK, value will be truncated!
+ *  COUT << "string " << OFvisit<OFString>( PowerVisitor(), v ) << OFendl; // ERROR!
+ *  OFvisit<void>( AssignVisitor(), v );
+ *  OFvisit<void>( PrintVisitor(), v );
+ *  @endcode
+ *  <b>Output (if the error was removed):</b>
+ *  @verbatim
+    double 9.8596
+    double 9.8596
+    int 9
+    9.8596
+    @endverbatim
+ */
+template<typename Result,typename Visitor,typename... Alternatives>
+Result OFvisit( Visitor visitor, OFvariant<Alternatives...>& v );
+
+/** Applies the given visitor to the given OFvariant object.
+ *  @ingroup ofvisit_variant
+ *  @relates OFvariant
+ *  @tparam Result the type of the returned value. Pre C++11 compiles do not allow determining the
+ *    result type automatically in a portable way, therefore, it must be explicitly given by
+ *    the caller.
+ *  @tparam Visitor the type of the visitor, will be deduced automatically.
+ *  @tparam Alternatives the alternatives the given variant could hold, will be deduced
+ *    automatically.
+ *  @param visitor the visitor that will be invoked with the alternative currently being
+ *    held by the given OFvariant object.
+ *  @param v a const reference to an OFvariant object that is going to be visited.
+ *  @return Let `CurrentAlternative` be the alternative that v currently holds: the result
+ *    of `visitor( *OFget<CurrentAlternative>( &v ) )` will be converted to `Result` and then
+ *    returned.
+ *  @pre all possible results must be convertible to `Result`.
+ *  @pre `visitor` must be able to take all possible alternatives.
+ *  @note If C++11 support is available, the visitor will be forwarded using perfect forwarding.
+ *    If not, the visitor may be copy constructed at least once, therefore, the visitor needs
+ *    to be copy constructible when pre C++11 compilers are targeted.
+ *  @details
+ *  <h3>Usage Example:</h3>
+ *  @code{.cpp}
+ *  struct PowerVisitor
+ *  {
+ *      template<typename Number>
+ *      Number operator()( Number number )
+ *      {
+ *          return number * number;
+ *      }
+ *  };
+ *  struct PrintVisitor
+ *  {
+ *      template<typename Number>
+ *      void operator()( Number number )
+ *      {
+ *          COUT << number << OFendl;
+ *      }
+ *  };
+ *  struct AssignVisitor
+ *  {
+ *      template<typename Number>
+ *      void operator()( Number& number )
+ *      {
+ *          number *= number;
+ *      }
+ *  };
+ *  // ...
+ *  const OFvariant<int,float,double> v( 3.14 );
+ *  OFvariant<int,float,double> result = OFvisit<OFvariant<int,float,double> >( PowerVisitor(), v );
+ *  switch( result.index() )
+ *  {
+ *  case 0: COUT << "int "; break;
+ *  case 1: COUT << "float "; break;
+ *  case 2: COUT << "double "; break;
+ *  }
+ *  OFvisit<void>( PrintVisitor(), result );
+ *  COUT << "double " << OFvisit<double>( PowerVisitor(), v ) << OFendl;   // OK, every alternative fits inside double
+ *  COUT << "int " << OFvisit<int>( PowerVisitor(), v ) << OFendl;         // OK, value will be truncated!
+ *  COUT << "string " << OFvisit<OFString>( PowerVisitor(), v ) << OFendl; // ERROR!
+ *  OFvisit<void>( AssignVisitor(), v );                                   // ERROR, v is const!
+ *  OFvisit<void>( PrintVisitor(), v );
+ *  @endcode
+ *  <b>Output (if the errors were removed):</b>
+ *  @verbatim
+    double 9.8596
+    double 9.8596
+    int 9
+    3.14
+    @endverbatim
+ */
+template<typename Result,typename Visitor,typename... Alternatives>
+Result OFvisit( Visitor visitor, const OFvariant<Alternatives...>& v );
+
+#endif // DOXYGEN
+
+/** A helper type for making OFvariant default constructible.
+ *  @relates OFvariant
+ *  @details
+ *  Use OFmonostate as the first alternative of an OFvariant otherwise holding a non default constructible type as
+ *  the first alternative for making the variant itself default constructible.
+ *  @note Be aware that any visitor applied to such an OFvariant object must also accept OFmonostate as an argument.
+ *  @details
+ *  <h3>Example</h3>
+ *  @code{.cpp}
+ *  template<typename T>
+ *  struct NonDefaultConstructible
+ *  {
+ *      NonDefaultConstructible( T t ) : value( t ) {}
+ *      T value;
+ *  };
+ *  typedef NonDefaultConstructible<int>   nint;
+ *  typedef NonDefaultConstructible<float> nfloat;
+ *  // ...
+ *  OFvariant<nint,nfloat> v( 3 );        // OK, but what if we don't know the value yet?
+ *  OFvariant<nint,nfloat> v;             // ERROR!
+ *  OFvariant<OFmonostate,nint,nfloat> v; // OK
+ *  v = 3;                                // assign the value when it's known
+ *  @endcode
+ */
+struct OFmonostate {};
+
+#endif // OFVARIANT_H
diff --git a/ofstd/include/dcmtk/ofstd/variadic/helpers.h b/ofstd/include/dcmtk/ofstd/variadic/helpers.h
new file mode 100644
index 0000000..c8a11c2
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/variadic/helpers.h
@@ -0,0 +1,91 @@
+/*
+** DO NOT EDIT THIS FILE !!!
+** It was generated automatically by:
+**
+**   User: jan
+**   Host: NBOFFIS99
+**   Date: 2016-07-19 19:01:07
+**   Prog: /home/jan/Desktop/homes/scripts/make_variadic.sh
+**
+** Purpose:
+**   Defining some helper template metafunctions for emulating variadic
+**   templates.
+*/
+#ifndef VARIADIC_HELPERS_H
+#define VARIADIC_HELPERS_H
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/oftraits.h"
+#include "dcmtk/ofstd/ofalign.h"
+
+// Some macros for being used in non generated code
+#define OFVARIADIC_DECLARE_TEMPLATE_PARAMETER_PACK_WITH_DEFAULTS(N) typename N ## 1=OFvariadic_nil,typename N ## 2=OFvariadic_nil,typename N ## 3=OFvariadic_nil,typename N ## 4=OFvariadic_nil,typename N ## 5=OFvariadic_nil,typename N ## 6=OFvariadic_nil,typename N ## 7=OFvariadic_nil,typename N ## 8=OFvariadic_nil,typename N ## 9=OFvariadic_nil,typename N ## 10=OFvariadic_nil,typename N ## 11=OFvariadic_nil,typename N ## 12=OFvariadic_nil,typename N ## 13=OFvariadic_nil,typename N ## 14= [...]
+#define OFVARIADIC_DECLARE_TEMPLATE_PARAMETER_PACK(N) typename N ## 1,typename N ## 2,typename N ## 3,typename N ## 4,typename N ## 5,typename N ## 6,typename N ## 7,typename N ## 8,typename N ## 9,typename N ## 10,typename N ## 11,typename N ## 12,typename N ## 13,typename N ## 14,typename N ## 15,typename N ## 16,typename N ## 17,typename N ## 18,typename N ## 19,typename N ## 20,typename N ## 21,typename N ## 22,typename N ## 23,typename N ## 24,typename N ## 25,typename N ## 26,typen [...]
+#define OFVARIADIC_TEMPLATE_PARAMETER_PACK(N) N ## 1,N ## 2,N ## 3,N ## 4,N ## 5,N ## 6,N ## 7,N ## 8,N ## 9,N ## 10,N ## 11,N ## 12,N ## 13,N ## 14,N ## 15,N ## 16,N ## 17,N ## 18,N ## 19,N ## 20,N ## 21,N ## 22,N ## 23,N ## 24,N ## 25,N ## 26,N ## 27,N ## 28,N ## 29,N ## 30,N ## 31,N ## 32,N ## 33,N ## 34,N ## 35,N ## 36,N ## 37,N ## 38,N ## 39,N ## 40,N ## 41,N ## 42,N ## 43,N ## 44,N ## 45,N ## 46,N ## 47,N ## 48,N ## 49
+
+/** A tag for template parameters to mark them as 'not a template parameter'.
+ */
+struct OFvariadic_nil;
+
+template<typename T0=OFvariadic_nil,typename T1=OFvariadic_nil,typename T2=OFvariadic_nil,typename T3=OFvariadic_nil,typename T4=OFvariadic_nil,typename T5=OFvariadic_nil,typename T6=OFvariadic_nil,typename T7=OFvariadic_nil,typename T8=OFvariadic_nil,typename T9=OFvariadic_nil,typename T10=OFvariadic_nil,typename T11=OFvariadic_nil,typename T12=OFvariadic_nil,typename T13=OFvariadic_nil,typename T14=OFvariadic_nil,typename T15=OFvariadic_nil,typename T16=OFvariadic_nil,typename T17=OFva [...]
+struct OFvariadic_parameter_pack_sizeof
+: OFintegral_constant<size_t,OFvariadic_parameter_pack_sizeof<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::value+1> {};
+
+template<>
+struct OFvariadic_parameter_pack_sizeof<>
+: OFintegral_constant<size_t,0> {};
+
+template<size_t Index,typename T0=OFvariadic_nil,typename T1=OFvariadic_nil,typename T2=OFvariadic_nil,typename T3=OFvariadic_nil,typename T4=OFvariadic_nil,typename T5=OFvariadic_nil,typename T6=OFvariadic_nil,typename T7=OFvariadic_nil,typename T8=OFvariadic_nil,typename T9=OFvariadic_nil,typename T10=OFvariadic_nil,typename T11=OFvariadic_nil,typename T12=OFvariadic_nil,typename T13=OFvariadic_nil,typename T14=OFvariadic_nil,typename T15=OFvariadic_nil,typename T16=OFvariadic_nil,type [...]
+struct OFvariadic_nth_type
+: OFvariadic_nth_type<Index-1,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49> {};
+
+template<typename T0,typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10,typename T11,typename T12,typename T13,typename T14,typename T15,typename T16,typename T17,typename T18,typename T19,typename T20,typename T21,typename T22,typename T23,typename T24,typename T25,typename T26,typename T27,typename T28,typename T29,typename T30,typename T31,typename T32,typename T33,typename T34,typename T35,typename T36,typename T37 [...]
+struct OFvariadic_nth_type<0,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>
+{ typedef T0 type; };
+
+template<size_t Index,typename T,typename T0=OFvariadic_nil,typename T1=OFvariadic_nil,typename T2=OFvariadic_nil,typename T3=OFvariadic_nil,typename T4=OFvariadic_nil,typename T5=OFvariadic_nil,typename T6=OFvariadic_nil,typename T7=OFvariadic_nil,typename T8=OFvariadic_nil,typename T9=OFvariadic_nil,typename T10=OFvariadic_nil,typename T11=OFvariadic_nil,typename T12=OFvariadic_nil,typename T13=OFvariadic_nil,typename T14=OFvariadic_nil,typename T15=OFvariadic_nil,typename T16=OFvariad [...]
+struct OFvariadic_find_type_t
+: OFvariadic_find_type_t<Index+1,T,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49> {};
+
+template<size_t Index,typename T0,typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10,typename T11,typename T12,typename T13,typename T14,typename T15,typename T16,typename T17,typename T18,typename T19,typename T20,typename T21,typename T22,typename T23,typename T24,typename T25,typename T26,typename T27,typename T28,typename T29,typename T30,typename T31,typename T32,typename T33,typename T34,typename T35,typename T36 [...]
+struct OFvariadic_find_type_t<Index,T0,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>
+: OFintegral_constant<size_t,Index> {};
+
+template<size_t Index,typename T>
+struct OFvariadic_find_type_t<Index,T>
+: OFintegral_constant<size_t,-1> {};
+
+template<typename T,typename T0=OFvariadic_nil,typename T1=OFvariadic_nil,typename T2=OFvariadic_nil,typename T3=OFvariadic_nil,typename T4=OFvariadic_nil,typename T5=OFvariadic_nil,typename T6=OFvariadic_nil,typename T7=OFvariadic_nil,typename T8=OFvariadic_nil,typename T9=OFvariadic_nil,typename T10=OFvariadic_nil,typename T11=OFvariadic_nil,typename T12=OFvariadic_nil,typename T13=OFvariadic_nil,typename T14=OFvariadic_nil,typename T15=OFvariadic_nil,typename T16=OFvariadic_nil,typena [...]
+struct OFvariadic_find_type
+: OFintegral_constant<size_t,OFvariadic_find_type_t<0,T,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::value> {};
+
+template<template<typename L,typename R> class Accumulator,typename T0=OFvariadic_nil,typename T1=OFvariadic_nil,typename T2=OFvariadic_nil,typename T3=OFvariadic_nil,typename T4=OFvariadic_nil,typename T5=OFvariadic_nil,typename T6=OFvariadic_nil,typename T7=OFvariadic_nil,typename T8=OFvariadic_nil,typename T9=OFvariadic_nil,typename T10=OFvariadic_nil,typename T11=OFvariadic_nil,typename T12=OFvariadic_nil,typename T13=OFvariadic_nil,typename T14=OFvariadic_nil,typename T15=OFvariadic [...]
+struct OFfold
+: OFfold<Accumulator,typename Accumulator<T0,T1>::type,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49> {};
+
+template<template<typename L,typename R> class Accumulator,typename T0>
+struct OFfold<Accumulator,T0> : T0 { typedef T0 type; };
+
+template<template<typename L,typename R> class Accumulator>
+struct OFfold<Accumulator> {};
+
+template<typename L,typename R>
+struct OFmax_sizeof
+: OFintegral_constant<size_t,(sizeof(L) > sizeof(R) ? sizeof(L) : sizeof(R))> {};
+
+template<size_t L,typename R>
+struct OFmax_sizeof<OFintegral_constant<size_t,L>,R>
+: OFintegral_constant<size_t,(L > sizeof(R) ? L : sizeof(R))> {};
+
+#ifdef OFalignof
+template<typename L,typename R>
+struct OFmax_alignof
+: OFintegral_constant<size_t,(OFalignof(L) > OFalignof(R) ? OFalignof(L) : OFalignof(R))> {};
+
+template<size_t L,typename R>
+struct OFmax_alignof<OFintegral_constant<size_t,L>,R>
+: OFintegral_constant<size_t,(L > OFalignof(R) ? L : OFalignof(R))> {};
+#endif // OFalignof
+
+#endif // VARIADIC_HELPERS_H
diff --git a/ofstd/include/dcmtk/ofstd/variadic/variant.h b/ofstd/include/dcmtk/ofstd/variadic/variant.h
new file mode 100644
index 0000000..affcffd
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/variadic/variant.h
@@ -0,0 +1,436 @@
+/*
+** DO NOT EDIT THIS FILE !!!
+** It was generated automatically by:
+**
+**   User: jan
+**   Host: caesar
+**   Date: 2016-07-14 14:48:02
+**   Prog: /home/jan/scripts/make_variadic.sh
+**
+** Purpose:
+**   Emulating variadic template parameters support for OFvariant with generated
+**   code.
+*/
+#ifndef VARIADIC_VARIANT_H
+#define VARIADIC_VARIANT_H
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/variadic/helpers.h"
+#include "dcmtk/ofstd/ofdiag.h"
+
+// We hide all this from doxygen, because it would only scare sane people
+// (and it is not needed for understanding how to use OFvariant).
+#ifndef DOXYGEN
+
+// Template recursively overload constructor and assignment operator for the
+// different alternatives of the variant (used in the template constructor/
+// assignment members).
+template<size_t Index,typename T0=OFvariadic_nil,typename T1=OFvariadic_nil,typename T2=OFvariadic_nil,typename T3=OFvariadic_nil,typename T4=OFvariadic_nil,typename T5=OFvariadic_nil,typename T6=OFvariadic_nil,typename T7=OFvariadic_nil,typename T8=OFvariadic_nil,typename T9=OFvariadic_nil,typename T10=OFvariadic_nil,typename T11=OFvariadic_nil,typename T12=OFvariadic_nil,typename T13=OFvariadic_nil,typename T14=OFvariadic_nil,typename T15=OFvariadic_nil,typename T16=OFvariadic_nil,type [...]
+struct OFvariant_overload
+: OFvariant_overload<Index+1,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>
+{
+    // Let the inherited methods take part in overload resolution
+    using OFvariant_overload<Index+1,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::constructor;
+    using OFvariant_overload<Index+1,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::assignment;
+    static Uint16 test_accepts( T0 );
+    static Uint8 test_accepts( ... );
+#ifdef OFalign
+    static size_t constructor( void* content, const T0& t0 )
+    {
+        new (content) T0( t0 );
+#else
+    static size_t constructor( void*& content, const T0& t0 )
+    {
+        content = new T0( t0 );
+#endif
+        return Index;
+    }
+
+    static bool assignment( size_t index, void* content, const T0& t0 )
+    {
+        if( index == Index )
+        {
+            *static_cast<T0*>( content ) = t0;
+            return true;
+        }
+        return false;
+    }
+
+// This code is executed at compile-time, the warnings therefore make
+// absolutely no sense (only Visual Studio emits them ;-).
+// Converting an integer to a boolean value at compile-time won't have any
+// performance ramifications and type conversion will be checked elsewhere,
+// not when checking if an overload *potentially exists*.
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_IMPLICIT_CONVERSION
+#include DCMTK_DIAGNOSTIC_IGNORE_VISUAL_STUDIO_PERFORMANCE_WARNING
+    template<typename T>
+    struct accepts : OFintegral_constant<OFBool,sizeof(test_accepts(*OFstatic_cast(T*,OFnullptr)))==2 || OFvariant_overload<Index+1,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::template accepts<T>::value> {};
+#include DCMTK_DIAGNOSTIC_POP
+};
+
+// Template recursion end, declares both functions with incompatible
+// signatures so that the 'using' statements work but the functions
+// do not effectively take part in the overload resolution.
+template<size_t Index>
+struct OFvariant_overload<Index>
+{
+    static void constructor();
+    static void assignment();
+    template<typename T>
+    struct accepts : OFfalse_type {};
+};
+
+// Creates a function pointer lookup table to select a function for the
+// currently contained alternative based on the stored index.
+// This is not really magic, the syntax will hurt your eyes though!
+template<typename Invoker,typename T0=OFvariadic_nil,typename T1=OFvariadic_nil,typename T2=OFvariadic_nil,typename T3=OFvariadic_nil,typename T4=OFvariadic_nil,typename T5=OFvariadic_nil,typename T6=OFvariadic_nil,typename T7=OFvariadic_nil,typename T8=OFvariadic_nil,typename T9=OFvariadic_nil,typename T10=OFvariadic_nil,typename T11=OFvariadic_nil,typename T12=OFvariadic_nil,typename T13=OFvariadic_nil,typename T14=OFvariadic_nil,typename T15=OFvariadic_nil,typename T16=OFvariadic_nil, [...]
+class OFvariant_invoke_t
+{
+public:
+    OFvariant_invoke_t()
+    {
+        // Template-recursively assign the function pointers to the fitting
+        // position inside the function pointer array. This will most likely
+        // be inlined by the compiler (it is tail recursive) and therefore
+        // not hurt the performance.
+        init<0>();
+    }
+
+    OFTypename Invoker::return_type operator()( size_t index, void* content, const Invoker& invoker = Invoker() )
+    {
+        // Select the fitting function pointer based on the index and call it with
+        // the given pointer to the current contents.
+        return (invoker.*m_Alternatives[index])( content );
+    }
+
+private:
+
+    // This is the recursion step for the Init template, it initializes the current
+    // function pointer and recurses to the Init template for the next index.
+    template<size_t Index>
+    OFTypename OFenable_if<(Index < OFvariadic_parameter_pack_sizeof<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::value)>::type init()
+    {
+        m_Alternatives[Index] = &Invoker::template invoke<OFTypename OFvariadic_nth_type<Index,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::type>;
+        init<Index+1>();
+    }
+
+    // this is the specialization for the base of the recursion, doing nothing for the
+    // N+1th alternative, effectively stopping the recursion.
+    template<size_t Index>
+    OFTypename OFenable_if<(Index >= OFvariadic_parameter_pack_sizeof<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::value)>::type init()
+    {
+
+    }
+
+    // the actual function pointer array
+    OFTypename Invoker::return_type (Invoker::*m_Alternatives[OFvariadic_parameter_pack_sizeof<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::value])(void*) const;
+};
+
+// A helper template function for initializing and using a function
+// pointer lookup table as dispatcher for variant visitation etc.
+template<typename Invoker,typename T0,typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10,typename T11,typename T12,typename T13,typename T14,typename T15,typename T16,typename T17,typename T18,typename T19,typename T20,typename T21,typename T22,typename T23,typename T24,typename T25,typename T26,typename T27,typename T28,typename T29,typename T30,typename T31,typename T32,typename T33,typename T34,typename T35,typename [...]
+OFTypename Invoker::return_type OFvariant_invoke( size_t index, void* content, const Invoker& invoker = Invoker() )
+{
+    // this may be a race condition in older compilers, which is no
+    // problem since the copied addresses of the functions are always
+    // the same.
+    static OFvariant_invoke_t<Invoker,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49> invocation_table;
+    return invocation_table( index, content, invoker );
+}
+
+// A functor that does copy construction from another variant
+// object.
+struct OFvariant_copy_construct_invoker
+{
+    typedef void return_type;
+
+#ifdef OFalign
+    OFvariant_copy_construct_invoker( void* content )
+    : m_Content( content )
+#else
+    OFvariant_copy_construct_invoker( void*& content )
+    : m_pContent( content )
+#endif
+    {
+
+    }
+
+    template<typename T>
+    void invoke( void* content ) const
+    {
+#ifdef OFalign
+        new (m_Content) T( *static_cast<const T*>( content ) );
+#else
+        m_pContent = new T( *static_cast<const T*>( content ) );
+#endif
+    }
+
+#ifdef OFalign
+    void* m_Content;
+#else
+    void*& m_pContent;
+#endif
+};
+
+// A functor that assigns the contents of another variant object
+// that contains the same alternative (regarding the type).
+struct OFvariant_assign_invoker
+{
+    typedef void return_type;
+
+    OFvariant_assign_invoker( void* content )
+    : m_Content( content )
+    {
+
+    }
+
+    template<typename T>
+    void invoke( void* rhs ) const
+    {
+        *static_cast<T*>( m_Content ) = *static_cast<const T*>( rhs );
+    }
+
+    void* m_Content;
+};
+
+// A functor that destroys the contained object.
+struct OFvariant_destroy_invoker
+{
+    typedef void return_type;
+
+    template<typename T>
+    void invoke( void* content ) const
+    {
+#ifdef OFalign
+        static_cast<T*>( content )->~T();
+#else
+        delete static_cast<T*>( content );
+#endif
+    }
+};
+
+// A functor that invokes the given functor, seriously!
+template<typename ReturnType,typename FN>
+struct OFvariant_visit_invoker
+{
+    typedef ReturnType return_type;
+
+    OFvariant_visit_invoker( FN& fn )
+    : m_Fn( fn )
+    {
+
+    }
+
+    template<typename T>
+    ReturnType invoke( void* content ) const
+    {
+        return m_Fn( *static_cast<T*>( content ) );
+    }
+
+    FN& m_Fn;
+};
+
+// The same as above, but for the const case.
+template<typename ReturnType,typename FN>
+struct OFvariant_const_visit_invoker
+{
+    typedef ReturnType return_type;
+
+    OFvariant_const_visit_invoker( FN& fn )
+    : m_Fn( fn )
+    {
+
+    }
+
+    template<typename T>
+    ReturnType invoke( void* content ) const
+    {
+        return m_Fn( *static_cast<const T*>( content ) );
+    }
+
+    FN& m_Fn;
+};
+
+// The actual variant implementation. Don't mess with this, look
+// at the doxygen API description instead.
+template<typename T0=OFvariadic_nil,typename T1=OFvariadic_nil,typename T2=OFvariadic_nil,typename T3=OFvariadic_nil,typename T4=OFvariadic_nil,typename T5=OFvariadic_nil,typename T6=OFvariadic_nil,typename T7=OFvariadic_nil,typename T8=OFvariadic_nil,typename T9=OFvariadic_nil,typename T10=OFvariadic_nil,typename T11=OFvariadic_nil,typename T12=OFvariadic_nil,typename T13=OFvariadic_nil,typename T14=OFvariadic_nil,typename T15=OFvariadic_nil,typename T16=OFvariadic_nil,typename T17=OFva [...]
+class OFvariant
+{
+public:
+    // typedef for old compilers that do not define the type 'OFvariant' in derived classes
+    typedef OFvariant variant;
+
+    OFvariant()
+#ifdef OFalign
+    : m_Content()
+#else
+    : m_pContent( new T0 )
+#endif
+    , m_Index( 0 )
+    {
+#ifdef OFalign
+        new (content()) T0;
+#endif
+    }
+
+    template<typename T>
+    OFvariant( const T& t, OFTypename OFenable_if<OFvariant_overload<0,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::template accepts<T>::value,int>::type = 0 )
+#ifdef OFalign
+    : m_Content()
+#else
+    : m_pContent()
+#endif
+    , m_Index( OFvariant_overload<0,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::constructor( content(), t ) )
+    {
+
+    }
+
+    OFvariant( const OFvariant& rhs )
+#ifdef OFalign
+    : m_Content()
+#else
+    : m_pContent()
+#endif
+    , m_Index( rhs.index() )
+    {
+        copy_construct( rhs.content() );
+    }
+
+    template<typename T>
+    OFTypename OFenable_if<OFvariant_overload<0,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::template accepts<T>::value,OFvariant>::type& operator=( const T& t )
+    {
+        // Either assign 't' if the contained alternative fits.
+        if( !OFvariant_overload<0,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::assignment( index(), content(), t ) )
+        {
+            // Or destroy the contained alternative and construct
+            // a new one, based on 't'.
+            destroy();
+            m_Index = OFvariant_overload<0,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::constructor( content(), t );
+        }
+        return *this;
+    }
+
+    OFvariant& operator=( const OFvariant& rhs )
+    {
+        if( this != &rhs )
+        {
+            // Do 'native' assignment if both variants contain
+            // the same alternative
+            if( m_Index == rhs.m_Index )
+            {
+                OFvariant_invoke<OFvariant_assign_invoker,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>
+                (
+                    m_Index,
+                    rhs.content(),
+                    OFvariant_assign_invoker( content() )
+                );
+            }
+            else
+            {
+                // Destroy the contents and copy construct a new
+                // one
+                destroy();
+                m_Index = rhs.m_Index;
+                copy_construct( rhs.content() );
+            }
+        }
+        return *this;
+    }
+
+    ~OFvariant()
+    {
+        // Destroy the contained object
+        destroy();
+    }
+
+    size_t index() const
+    {
+        // Well, this is easy
+        return m_Index;
+    }
+
+private:
+    // Friend declarations for visitation and get<>.
+    template<typename T,typename X0,typename X1,typename X2,typename X3,typename X4,typename X5,typename X6,typename X7,typename X8,typename X9,typename X10,typename X11,typename X12,typename X13,typename X14,typename X15,typename X16,typename X17,typename X18,typename X19,typename X20,typename X21,typename X22,typename X23,typename X24,typename X25,typename X26,typename X27,typename X28,typename X29,typename X30,typename X31,typename X32,typename X33,typename X34,typename X35,typename X [...]
+    friend T* OFget( OFvariant<X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16,X17,X18,X19,X20,X21,X22,X23,X24,X25,X26,X27,X28,X29,X30,X31,X32,X33,X34,X35,X36,X37,X38,X39,X40,X41,X42,X43,X44,X45,X46,X47,X48,X49>* );
+    template<typename T,typename X0,typename X1,typename X2,typename X3,typename X4,typename X5,typename X6,typename X7,typename X8,typename X9,typename X10,typename X11,typename X12,typename X13,typename X14,typename X15,typename X16,typename X17,typename X18,typename X19,typename X20,typename X21,typename X22,typename X23,typename X24,typename X25,typename X26,typename X27,typename X28,typename X29,typename X30,typename X31,typename X32,typename X33,typename X34,typename X35,typename X [...]
+    friend const T* OFget( const OFvariant<X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16,X17,X18,X19,X20,X21,X22,X23,X24,X25,X26,X27,X28,X29,X30,X31,X32,X33,X34,X35,X36,X37,X38,X39,X40,X41,X42,X43,X44,X45,X46,X47,X48,X49>* );
+    template<typename ReturnType,typename FN,typename X0,typename X1,typename X2,typename X3,typename X4,typename X5,typename X6,typename X7,typename X8,typename X9,typename X10,typename X11,typename X12,typename X13,typename X14,typename X15,typename X16,typename X17,typename X18,typename X19,typename X20,typename X21,typename X22,typename X23,typename X24,typename X25,typename X26,typename X27,typename X28,typename X29,typename X30,typename X31,typename X32,typename X33,typename X34,ty [...]
+    friend ReturnType OFvisit( FN, OFvariant<X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16,X17,X18,X19,X20,X21,X22,X23,X24,X25,X26,X27,X28,X29,X30,X31,X32,X33,X34,X35,X36,X37,X38,X39,X40,X41,X42,X43,X44,X45,X46,X47,X48,X49>& );
+    template<typename ReturnType,typename FN,typename X0,typename X1,typename X2,typename X3,typename X4,typename X5,typename X6,typename X7,typename X8,typename X9,typename X10,typename X11,typename X12,typename X13,typename X14,typename X15,typename X16,typename X17,typename X18,typename X19,typename X20,typename X21,typename X22,typename X23,typename X24,typename X25,typename X26,typename X27,typename X28,typename X29,typename X30,typename X31,typename X32,typename X33,typename X34,ty [...]
+    friend ReturnType OFvisit( FN, const OFvariant<X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16,X17,X18,X19,X20,X21,X22,X23,X24,X25,X26,X27,X28,X29,X30,X31,X32,X33,X34,X35,X36,X37,X38,X39,X40,X41,X42,X43,X44,X45,X46,X47,X48,X49>& );
+
+    // Invoke copy construction
+    void copy_construct( void* rhs )
+    {
+        OFvariant_invoke<OFvariant_copy_construct_invoker,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>
+        (
+            m_Index,
+            rhs,
+            OFvariant_copy_construct_invoker( content() )
+        );
+    }
+
+    // Invoke destructor
+    void destroy()
+    {
+        OFvariant_invoke<OFvariant_destroy_invoker,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>( m_Index, content() );
+    }
+
+#ifdef OFalign
+    // Allocate content with alignment.
+    typedef OFTypename OFfold<OFmax_sizeof,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::type max_sizeof_type;
+    typedef OFTypename OFfold<OFmax_alignof,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::type max_alignof_type;
+    void* content() const { return m_Content; }
+    mutable OFalign_typename(Uint8[max_sizeof_type::value],max_alignof_type::value) m_Content;
+#else
+    // Allocate content on the heap.
+    void*& content() const { return OFconst_cast(void*&,m_pContent); }
+    void* m_pContent;
+#endif
+    size_t m_Index;
+};
+
+// Actual implementation of get<> by type.
+template<typename T,typename T0,typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10,typename T11,typename T12,typename T13,typename T14,typename T15,typename T16,typename T17,typename T18,typename T19,typename T20,typename T21,typename T22,typename T23,typename T24,typename T25,typename T26,typename T27,typename T28,typename T29,typename T30,typename T31,typename T32,typename T33,typename T34,typename T35,typename T36,t [...]
+T* OFget( OFvariant<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>* v )
+{
+    return v->index() == OFvariadic_find_type<T,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::value
+    ?
+        static_cast<T*>( v->content() )
+    :
+        OFnullptr
+    ;
+}
+
+// The same as above, but for the const case.
+template<typename T,typename T0,typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10,typename T11,typename T12,typename T13,typename T14,typename T15,typename T16,typename T17,typename T18,typename T19,typename T20,typename T21,typename T22,typename T23,typename T24,typename T25,typename T26,typename T27,typename T28,typename T29,typename T30,typename T31,typename T32,typename T33,typename T34,typename T35,typename T36,t [...]
+const T* OFget( const OFvariant<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>* v )
+{
+    return v->index() == OFvariadic_find_type<T,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>::value
+    ?
+        static_cast<const T*>( v->content() )
+    :
+        OFnullptr
+    ;
+}
+
+// Actual implementation if variant visitation.
+template<typename ReturnType,typename FN,typename T0,typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10,typename T11,typename T12,typename T13,typename T14,typename T15,typename T16,typename T17,typename T18,typename T19,typename T20,typename T21,typename T22,typename T23,typename T24,typename T25,typename T26,typename T27,typename T28,typename T29,typename T30,typename T31,typename T32,typename T33,typename T34,typena [...]
+ReturnType OFvisit( FN fn, OFvariant<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>& v )
+{
+    return OFvariant_invoke<OFvariant_visit_invoker<ReturnType,FN>,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>( v.index(), v.content(), OFvariant_visit_invoker<ReturnType,FN>( fn ) );
+}
+
+// The same as above, but for the const case.
+template<typename ReturnType,typename FN,typename T0,typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10,typename T11,typename T12,typename T13,typename T14,typename T15,typename T16,typename T17,typename T18,typename T19,typename T20,typename T21,typename T22,typename T23,typename T24,typename T25,typename T26,typename T27,typename T28,typename T29,typename T30,typename T31,typename T32,typename T33,typename T34,typena [...]
+ReturnType OFvisit( FN fn, const OFvariant<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>& v )
+{
+    return OFvariant_invoke<OFvariant_const_visit_invoker<ReturnType,FN>,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49>( v.index(), v.content(), OFvariant_const_visit_invoker<ReturnType,FN>( fn ) );
+}
+
+#endif // !DOXYGEN
+
+#endif // VARIADIC_VARIANT_H
diff --git a/ofstd/libsrc/CMakeLists.txt b/ofstd/libsrc/CMakeLists.txt
index b9aa1bc..8466f35 100644
--- a/ofstd/libsrc/CMakeLists.txt
+++ b/ofstd/libsrc/CMakeLists.txt
@@ -1,4 +1,4 @@
 # create library from source files
 DCMTK_ADD_LIBRARY(ofstd ofchrenc ofcmdln ofconapp ofcond ofconfig ofconsol ofcrc32 ofdate ofdatime offile offname oflist ofstd ofstring ofthread oftime oftimer oftempf ofxml ofuuid ofmath)
 
-DCMTK_TARGET_LINK_LIBRARIES(ofstd ${LIBICONV_LIBS} ${THREAD_LIBS} ${WIN32_STD_LIBRARIES})
+DCMTK_TARGET_LINK_LIBRARIES(ofstd ${CHARSET_CONVERSION_LIBS} ${THREAD_LIBS} ${WIN32_STD_LIBRARIES})
diff --git a/ofstd/libsrc/Makefile.dep b/ofstd/libsrc/Makefile.dep
index 1241249..1861af7 100644
--- a/ofstd/libsrc/Makefile.dep
+++ b/ofstd/libsrc/Makefile.dep
@@ -3,10 +3,16 @@ ofchrenc.o: ofchrenc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
  ../include/dcmtk/ofstd/ofcast.h ../include/dcmtk/ofstd/ofexport.h \
  ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofstd.h \
- ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftraits.h \
+ ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofmem.h \
+ ../include/dcmtk/ofstd/ofutil.h ../include/dcmtk/ofstd/oftraits.h \
+ ../include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.h \
  ../include/dcmtk/ofstd/oflimits.h \
- ../../config/include/dcmtk/config/arith.h
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofdiag.h ../include/dcmtk/ofstd/ofconsol.h \
+ ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/diag/push.def \
+ ../include/dcmtk/ofstd/diag/shadow.def \
+ ../include/dcmtk/ofstd/diag/pop.def
 ofcmdln.o: ofcmdln.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcmdln.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -17,7 +23,9 @@ ofcmdln.o: ofcmdln.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
  ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/ofstd/ofchrenc.h
+ ../include/dcmtk/ofstd/ofchrenc.h ../include/dcmtk/ofstd/ofmem.h \
+ ../include/dcmtk/ofstd/ofutil.h \
+ ../include/dcmtk/ofstd/variadic/tuplefwd.h
 ofconapp.o: ofconapp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofconapp.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -29,7 +37,9 @@ ofconapp.o: ofconapp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
  ../include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/ofstd/ofchrenc.h
+ ../include/dcmtk/ofstd/ofchrenc.h ../include/dcmtk/ofstd/ofmem.h \
+ ../include/dcmtk/ofstd/ofutil.h \
+ ../include/dcmtk/ofstd/variadic/tuplefwd.h
 ofcond.o: ofcond.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -102,8 +112,11 @@ ofstd.o: ofstd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/offile.h ../include/dcmtk/ofstd/oftuple.h \
  ../include/dcmtk/ofstd/ofutil.h \
  ../include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../include/dcmtk/ofstd/ofdiag.h ../include/dcmtk/ofstd/diag/push.def \
+ ../include/dcmtk/ofstd/diag/mmtag.def \
  ../include/dcmtk/ofstd/variadic/tuplefrd.h \
- ../include/dcmtk/ofstd/variadic/tuple.h ../include/dcmtk/ofstd/ofmath.h \
+ ../include/dcmtk/ofstd/variadic/tuple.h \
+ ../include/dcmtk/ofstd/diag/pop.def ../include/dcmtk/ofstd/ofmath.h \
  ../include/dcmtk/ofstd/ofnetdb.h ../include/dcmtk/ofstd/ofvector.h \
  ../include/dcmtk/ofstd/ofgrp.h ../include/dcmtk/ofstd/ofpwd.h \
  ../include/dcmtk/ofstd/ofoption.h ../include/dcmtk/ofstd/ofalign.h
diff --git a/ofstd/libsrc/Makefile.in b/ofstd/libsrc/Makefile.in
index b000dc9..fe7705c 100644
--- a/ofstd/libsrc/Makefile.in
+++ b/ofstd/libsrc/Makefile.in
@@ -18,6 +18,7 @@ LOCALDEFS =
 objs = oflist.o ofstring.o ofcmdln.o ofconapp.o offname.o ofconsol.o ofthread.o \
 	ofcond.o ofstd.o ofcrc32.o ofdate.o oftime.o ofdatime.o oftimer.o \
 	ofconfig.o ofchrenc.o oftempf.o ofxml.o ofuuid.o offile.o ofmath.o
+
 library = libofstd.$(LIBEXT)
 
 
diff --git a/ofstd/libsrc/ofchrenc.cc b/ofstd/libsrc/ofchrenc.cc
index 26230d4..70b2af3 100644
--- a/ofstd/libsrc/ofchrenc.cc
+++ b/ofstd/libsrc/ofchrenc.cc
@@ -13,7 +13,7 @@
  *
  *  Module:  ofstd
  *
- *  Author:  Joerg Riesmeier
+ *  Author:  Joerg Riesmeier, Jan Schlamelcher
  *
  *  Purpose: Class for character encoding conversion (Source)
  *
@@ -24,11 +24,8 @@
 
 #include "dcmtk/ofstd/ofchrenc.h"
 #include "dcmtk/ofstd/ofstd.h"
-
-#ifdef WITH_LIBICONV
-#include <iconv.h>
-#include <localcharset.h>
-#endif
+#include "dcmtk/ofstd/ofdiag.h"
+#include "dcmtk/ofstd/ofconsol.h"
 
 BEGIN_EXTERN_C
 #ifdef HAVE_SYS_ERRNO_H
@@ -39,19 +36,11 @@ END_EXTERN_C
 #ifdef HAVE_WINDOWS_H
 #define WIN32_LEAN_AND_MEAN
 #include <windows.h>
-#endif
-
-
-#define ILLEGAL_DESCRIPTOR     OFreinterpret_cast(OFCharacterEncoding::T_Descriptor, -1)
-#define CONVERSION_ERROR       OFstatic_cast(size_t, -1)
-#define CONVERSION_BUFFER_SIZE 1024
-
 
 /*-------------*
  *  constants  *
  *-------------*/
 
-#ifdef HAVE_WINDOWS_H
 // Windows-specific code page identifiers
 const unsigned int OFCharacterEncoding::CPC_ANSI   = CP_ACP;
 const unsigned int OFCharacterEncoding::CPC_OEM    = CP_OEMCP;
@@ -60,167 +49,394 @@ const unsigned int OFCharacterEncoding::CPC_Latin1 = 28591;
 const unsigned int OFCharacterEncoding::CPC_UTF8   = CP_UTF8;
 #endif
 
-
 /*------------------*
  *  implementation  *
  *------------------*/
 
-OFCharacterEncoding::OFCharacterEncoding()
-  : LocaleEncoding(),
-    ConversionDescriptor(ILLEGAL_DESCRIPTOR),
-    TransliterationMode(OFFalse),
-    DiscardIllegalSequenceMode(OFFalse)
-{
-    updateLocaleEncoding();
-}
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+#if DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICU
+#include <unicode/ucnv.h>
+#include <unicode/ucnv_err.h>
 
+#define CONVERSION_BUFFER_SIZE 1024
 
-OFCharacterEncoding::~OFCharacterEncoding()
+class OFCharacterEncoding::Implementation
 {
-    clear();
-}
 
+  public:
 
-void OFCharacterEncoding::clear()
-{
-    // close conversion descriptor (if needed)
-    closeDescriptor(ConversionDescriptor);
-    // reset conversion modes
-    TransliterationMode = OFFalse;
-    DiscardIllegalSequenceMode = OFFalse;
-}
+    static Implementation* create(const OFString& fromEncoding,
+                                  const OFString& toEncoding,
+                                  OFCondition& result)
+    {
+        UErrorCode icuResult = U_ZERO_ERROR;
+        UConverter* sourceConverter = ucnv_open(fromEncoding != "" ? fromEncoding.c_str() : OFnullptr, &icuResult);
+        if (!U_FAILURE(icuResult))
+        {
+            // set default behavior to AbortTranscodingOnIllegalSequence
+            ucnv_setToUCallBack(sourceConverter,
+                UCNV_TO_U_CALLBACK_STOP,
+                OFnullptr,
+                OFnullptr,
+                OFnullptr,
+                &icuResult);
+            if (!U_FAILURE(icuResult))
+            {
+                UConverter* targetConverter = ucnv_open(toEncoding != "" ? toEncoding.c_str() : OFnullptr, &icuResult);
+                if (!U_FAILURE(icuResult))
+                {
+                    // set default behavior to AbortTranscodingOnIllegalSequence
+                    ucnv_setFromUCallBack(targetConverter,
+                        UCNV_FROM_U_CALLBACK_STOP,
+                        OFnullptr,
+                        OFnullptr,
+                        OFnullptr,
+                        &icuResult);
+                    if (!U_FAILURE(icuResult))
+                    {
+                        if (Implementation* pImplementation = new Implementation(sourceConverter, targetConverter))
+                        {
+                            result = EC_Normal;
+                            return pImplementation;
+                        }
+                        else
+                        {
+                            ucnv_close(targetConverter);
+                            ucnv_close(sourceConverter);
+                            result = EC_MemoryExhausted;
+                            return OFnullptr;
+                        }
+                    }
+                    ucnv_close(targetConverter);
+                }
+            }
+            ucnv_close(sourceConverter);
+        }
+        result = makeOFCondition(0, EC_CODE_CannotOpenEncoding, OF_error,
+            (OFString("Cannot open character encoding, ICU error name: ") + u_errorName(icuResult)).c_str());
+        return OFnullptr;
+    }
 
+    static OFString getVersionString()
+    {
+        OFString versionStr = "ICU, Version ";
+        char buf[15];
+        // extract major and minor version number
+        sprintf(buf, "%i.%i.%i", U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM, U_ICU_VERSION_PATCHLEVEL_NUM);
+        versionStr.append(buf);
+        return versionStr;
+    }
 
-OFBool OFCharacterEncoding::getTransliterationMode() const
-{
-    return TransliterationMode;
-}
+    static OFString getLocaleEncoding()
+    {
+        // open default encoder and retrieve its name
+        UErrorCode result = U_ZERO_ERROR;
+        UConverter* conv = ucnv_open(OFnullptr, &result);
+        if (U_FAILURE(result))
+            return OFString();
+        OFString name = ucnv_getName(conv, &result);
+        ucnv_close(conv);
+        if (U_FAILURE(result))
+            return OFString();
+        return name;
+    }
 
+    static OFBool supportsConversionFlags(const unsigned flags)
+    {
+        return flags == AbortTranscodingOnIllegalSequence
+            || flags == DiscardIllegalSequences;
+    }
 
-OFBool OFCharacterEncoding::getDiscardIllegalSequenceMode() const
-{
-    return DiscardIllegalSequenceMode;
-}
+    unsigned getConversionFlags() const
+    {
+        UConverterFromUCallback flags;
+        const void* ctx;
+        ucnv_getFromUCallBack(targetConverter, &flags, &ctx);
+        if (flags == UCNV_FROM_U_CALLBACK_STOP)
+            return AbortTranscodingOnIllegalSequence;
+        if (flags == UCNV_FROM_U_CALLBACK_SKIP)
+            return DiscardIllegalSequences;
+        return 0;
+    }
 
+    OFBool setConversionFlags(const unsigned flags)
+    {
+        UErrorCode result = U_ZERO_ERROR;
+        switch (flags)
+        {
+            case AbortTranscodingOnIllegalSequence:
+                ucnv_setFromUCallBack(targetConverter,
+                    UCNV_FROM_U_CALLBACK_STOP,
+                    OFnullptr,
+                    OFnullptr,
+                    OFnullptr,
+                    &result);
+                if (U_FAILURE(result))
+                    return OFFalse;
+                ucnv_setToUCallBack(sourceConverter,
+                    UCNV_TO_U_CALLBACK_STOP,
+                    OFnullptr,
+                    OFnullptr,
+                    OFnullptr,
+                    &result);
+                return !U_FAILURE(result);
+            case DiscardIllegalSequences:
+                ucnv_setFromUCallBack(targetConverter,
+                    UCNV_FROM_U_CALLBACK_SKIP,
+                    OFnullptr,
+                    OFnullptr,
+                    OFnullptr,
+                    &result);
+                if (U_FAILURE(result))
+                    return OFFalse;
+                ucnv_setToUCallBack(sourceConverter,
+                    UCNV_TO_U_CALLBACK_SKIP,
+                    OFnullptr,
+                    OFnullptr,
+                    OFnullptr,
+                    &result);
+                return !U_FAILURE(result);
+            default:
+                return OFFalse;
+        }
+    }
 
-OFCondition OFCharacterEncoding::setTransliterationMode(const OFBool mode)
-{
-#if defined(WITH_LIBICONV) && _LIBICONV_VERSION >= 0x0108
-    TransliterationMode = mode;
-    return EC_Normal;
-#else
-    // avoid compiler warning on unused variable
-    (void)mode;
-    // return with an error because iconvctl() is not supported
-    return makeOFCondition(0, EC_CODE_CannotControlConverter, OF_error,
-        "Cannot control character encoding converter: iconvctl() not supported");
-#endif
-}
+    OFCondition convert(OFString& target,
+                        const char* from,
+                        const size_t length)
+    {
+        // if the input string is empty or NULL, we are done
+        if (!from || !length)
+            return EC_Normal;
+        UErrorCode result = U_ZERO_ERROR;
+        char targetBuffer[CONVERSION_BUFFER_SIZE];
+        UChar pivotBuffer[CONVERSION_BUFFER_SIZE];
+        char* pTargetBuffer = targetBuffer;
+        UChar* pivotSource = pivotBuffer;
+        UChar* pivotTarget = pivotBuffer;
+        const char* const end = from + length;
+        // initialize conversion and convert the first number of chars
+        ucnv_convertEx(
+            targetConverter,
+            sourceConverter,
+            &pTargetBuffer,
+            targetBuffer + CONVERSION_BUFFER_SIZE,
+            &from,
+            end,
+            pivotBuffer,
+            &pivotSource,
+            &pivotTarget,
+            pivotBuffer + CONVERSION_BUFFER_SIZE,
+            OFTrue,  // initialize conversion = yes
+            OFTrue,
+            &result
+        );
+        // resume conversion as long as chars are left
+        while (result == U_BUFFER_OVERFLOW_ERROR)
+        {
+            target.append(targetBuffer, pTargetBuffer - targetBuffer);
+            pTargetBuffer = targetBuffer;
+            result = U_ZERO_ERROR;
+            ucnv_convertEx(
+                targetConverter,
+                sourceConverter,
+                &pTargetBuffer,
+                targetBuffer + CONVERSION_BUFFER_SIZE,
+                &from,
+                end,
+                pivotBuffer,
+                &pivotSource,
+                &pivotTarget,
+                pivotBuffer + CONVERSION_BUFFER_SIZE,
+                OFFalse,  // initialize conversion = no
+                OFTrue,
+                &result
+            );
+        }
+        if (U_FAILURE(result))
+            return makeOFCondition(0, EC_CODE_CannotConvertEncoding, OF_error,
+                (OFString("Cannot convert character encoding, ICU error name: ") + u_errorName(result)).c_str());
+        target.append(targetBuffer, pTargetBuffer - targetBuffer);
+        return EC_Normal;
+    }
 
+    ~Implementation()
+    {
+        ucnv_close(sourceConverter);
+        ucnv_close(targetConverter);
+    }
 
-OFCondition OFCharacterEncoding::setDiscardIllegalSequenceMode(const OFBool mode)
-{
-#if defined(WITH_LIBICONV) && _LIBICONV_VERSION >= 0x0108
-    DiscardIllegalSequenceMode = mode;
-    return EC_Normal;
-#else
-    // avoid compiler warning on unused variable
-    (void)mode;
-    // return with an error because iconvctl() is not supported
-    return makeOFCondition(0, EC_CODE_CannotControlConverter, OF_error,
-        "Cannot control character encoding converter: iconvctl() not supported");
-#endif
-}
+  private:
 
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_SHADOW
+    Implementation(UConverter* sourceConverter,
+                   UConverter* targetConverter)
+      : sourceConverter(sourceConverter),
+        targetConverter(targetConverter)
+    {
 
-const OFString &OFCharacterEncoding::getLocaleEncoding() const
-{
-    return LocaleEncoding;
-}
+    }
+#include DCMTK_DIAGNOSTIC_POP
 
+    UConverter* sourceConverter;
+    UConverter* targetConverter;
+};
 
-OFCondition OFCharacterEncoding::updateLocaleEncoding()
-{
+#elif DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_ICONV ||\
+ DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV
+
+#include <iconv.h>
 #ifdef WITH_LIBICONV
-    // determine current locale's character encoding
-    LocaleEncoding = OFSTRING_GUARD(::locale_charset());
-    // basically, the above function should always return a non-empty string
-    // but older versions of libiconv might return NULL is certain cases
-    return EC_Normal;
-#else
-    return EC_NoEncodingLibrary;
+#include <localcharset.h>
 #endif
-}
 
+#define ILLEGAL_DESCRIPTOR     OFreinterpret_cast(iconv_t, -1)
+#define CONVERSION_ERROR       OFstatic_cast(size_t, -1)
+#define CONVERSION_BUFFER_SIZE 1024
 
-OFCondition OFCharacterEncoding::selectEncoding(const OFString &fromEncoding,
-                                                const OFString &toEncoding)
+class OFCharacterEncoding::Implementation
 {
+
+  public:
+
+    static Implementation* create(const OFString& fromEncoding,
+                                  const OFString& toEncoding,
+                                  OFCondition& result)
+    {
+        iconv_t descriptor = ::iconv_open(toEncoding.c_str(), fromEncoding.c_str());
+        if (descriptor == ILLEGAL_DESCRIPTOR)
+        {
+            // return an appropriate error message
+            createErrnoCondition(result, "Cannot open character encoding: ", EC_CODE_CannotOpenEncoding);
+            return OFnullptr;
+        }
+        if (Implementation* pImplementation = new Implementation(descriptor))
+        {
+            result = EC_Normal;
+            return pImplementation;
+        }
+        result = EC_MemoryExhausted;
+        return OFnullptr;
+    }
+
+    static OFString getVersionString()
+    {
 #ifdef WITH_LIBICONV
-    // first, close the current conversion descriptor (if needed)
-    closeDescriptor(ConversionDescriptor);
-    // then, try to open a new descriptor for the specified character encodings
-    return openDescriptor(ConversionDescriptor, fromEncoding.c_str(), toEncoding.c_str());
+        OFString versionStr = "LIBICONV, Version ";
+        char buf[10];
+        // extract major and minor version number
+        sprintf(buf, "%i.%i", (_LIBICONV_VERSION >> 8), (_LIBICONV_VERSION & 0xff));
+        versionStr.append(buf);
+        return versionStr;
+#elif defined(__GLIBC__)
+        OFOStringStream oss;
+        oss << "GNU C library (iconv), version "
+            << __GLIBC__ << '.'
+            << __GLIBC_MINOR__;
+        OFSTRINGSTREAM_GETOFSTRING(oss, version);
+        return version;
 #else
-    // avoid compiler warning on unused variables
-    (void)fromEncoding;
-    (void)toEncoding;
-    return EC_NoEncodingLibrary;
+        return "Unknown C library (iconv)";
 #endif
-}
-
-
-OFCondition OFCharacterEncoding::convertString(const OFString &fromString,
-                                               OFString &toString,
-                                               const OFBool clearMode)
-{
-    // call the real method converting the given string
-    return convertString(ConversionDescriptor, fromString.c_str(), fromString.length(), toString, clearMode);
-}
+    }
 
+    static OFString getLocaleEncoding()
+    {
+#ifdef WITH_LIBICONV
+        // basically, the function below should always return a non-empty string
+        // but older versions of libiconv might return NULL in certain cases
+        return OFSTRING_GUARD(::locale_charset());
+#else
+        return OFString();
+#endif
+    }
 
-OFCondition OFCharacterEncoding::convertString(const char *fromString,
-                                               const size_t fromLength,
-                                               OFString &toString,
-                                               const OFBool clearMode)
-{
-    // call the real method converting the given string
-    return convertString(ConversionDescriptor, fromString, fromLength, toString, clearMode);
-}
+    static OFBool supportsConversionFlags(const unsigned flags)
+    {
+#if defined(WITH_LIBICONV) && _LIBICONV_VERSION >= 0x0108
+        return flags == AbortTranscodingOnIllegalSequence
+            || flags == DiscardIllegalSequences
+            || flags == TransliterateIllegalSequences
+            || flags == (DiscardIllegalSequences | TransliterateIllegalSequences)
+        ;
+#else
+        // the iconvctl function is implemented only in GNU libiconv and not in other
+        // iconv implementations. The iconv implementation in the C standard library
+        // therefore does not support different encoding flags.
+        return flags == AbortTranscodingOnIllegalSequence;
+#endif
+    }
 
+    unsigned getConversionFlags() const
+    {
+#if defined(WITH_LIBICONV) && _LIBICONV_VERSION >= 0x0108
+        unsigned result = 0;
+        int flag;
+        if (::iconvctl(ConversionDescriptor, ICONV_GET_TRANSLITERATE, &flag))
+            return 0;
+        if (flag)
+            result |= TransliterateIllegalSequences;
+        if (::iconvctl(ConversionDescriptor, ICONV_GET_DISCARD_ILSEQ, &flag))
+            return 0;
+        if (flag)
+            result |= DiscardIllegalSequences;
+        if (result)
+            return result;
+#endif
+        return AbortTranscodingOnIllegalSequence;
+    }
 
-OFCondition OFCharacterEncoding::convertString(T_Descriptor descriptor,
-                                               const char *fromString,
-                                               const size_t fromLength,
-                                               OFString &toString,
-                                               const OFBool clearMode)
-{
-    // first, clear result variable if requested
-    if (clearMode)
-        toString.clear();
-#ifdef WITH_LIBICONV
-    OFCondition status = EC_Normal;
-    // check whether the given conversion descriptor has been allocated
-    if (isDescriptorValid(descriptor))
+    OFBool setConversionFlags(const unsigned flags)
     {
-#if _LIBICONV_VERSION >= 0x0108
-        // enable/disable transliteration (use of similar characters) in the conversion
-        int translit = (TransliterationMode) ? 1 : 0;
-        if (::iconvctl(descriptor, ICONV_SET_TRANSLITERATE, &translit) < 0)
-        {
-            // if this didn't work, return with an appropriate error message
-            createErrnoCondition(status, "Cannot control character encoding feature TRANSLITERATE: ",
-                EC_CODE_CannotControlConverter);
-        }
-        // enable/disable discarding of illegal sequences in the conversion
-        int discard = (DiscardIllegalSequenceMode) ? 1 : 0;
-        if (::iconvctl(descriptor, ICONV_SET_DISCARD_ILSEQ, &discard) < 0)
+#if defined(WITH_LIBICONV) && _LIBICONV_VERSION >= 0x0108
+        int flag = 0;
+        switch (flags)
         {
-            // if this didn't work, return with an appropriate error message
-            createErrnoCondition(status, "Cannot control character encoding feature DISCARD_ILSEQ: ",
-                EC_CODE_CannotControlConverter);
+            case AbortTranscodingOnIllegalSequence:
+                if (::iconvctl(ConversionDescriptor, ICONV_SET_DISCARD_ILSEQ, &flag))
+                    return OFFalse;
+                if (::iconvctl(ConversionDescriptor, ICONV_SET_TRANSLITERATE, &flag))
+                    return OFFalse;
+                return OFTrue;
+            case DiscardIllegalSequences:
+                if (::iconvctl(ConversionDescriptor, ICONV_SET_TRANSLITERATE, &flag))
+                    return OFFalse;
+                flag = 1;
+                if (::iconvctl(ConversionDescriptor, ICONV_SET_DISCARD_ILSEQ, &flag))
+                    return OFFalse;
+                return OFTrue;
+            case TransliterateIllegalSequences:
+                if (::iconvctl(ConversionDescriptor, ICONV_SET_DISCARD_ILSEQ, &flag))
+                    return OFFalse;
+                flag = 1;
+                if (::iconvctl(ConversionDescriptor, ICONV_SET_TRANSLITERATE, &flag))
+                    return OFFalse;
+                return OFTrue;
+            case (TransliterateIllegalSequences | DiscardIllegalSequences):
+                flag = 1;
+                if (::iconvctl(ConversionDescriptor, ICONV_SET_DISCARD_ILSEQ, &flag))
+                    return OFFalse;
+                if (::iconvctl(ConversionDescriptor, ICONV_SET_TRANSLITERATE, &flag))
+                    return OFFalse;
+                return OFTrue;
+            default:
+                return OFFalse;
         }
+#else
+        // the iconvctl function is implemented only in GNU libiconv and not in other
+        // iconv implementations. The iconv implementation in the C standard library
+        // therefore does not support different encoding flags.
+        return flags == AbortTranscodingOnIllegalSequence;
 #endif
+    }
+
+
+    OFCondition convert(OFString& toString,
+                        const char* fromString,
+                        const size_t fromLength)
+    {
+        OFCondition status = EC_Normal;
         // if the input string is empty or NULL, we are done
         if (status.good() && (fromString != NULL) && (fromLength > 0))
         {
@@ -231,7 +447,7 @@ OFCondition OFCharacterEncoding::convertString(T_Descriptor descriptor,
 #endif
             size_t inputLeft = fromLength;
             // set the conversion descriptor to the initial state
-            ::iconv(descriptor, NULL, NULL, NULL, NULL);
+            ::iconv(ConversionDescriptor, NULL, NULL, NULL, NULL);
             // iterate as long as there are characters to be converted
             while (inputLeft > 0)
             {
@@ -240,7 +456,7 @@ OFCondition OFCharacterEncoding::convertString(T_Descriptor descriptor,
                 const size_t bufferLength = sizeof(buffer);
                 size_t bufferLeft = bufferLength;
                 // convert the current block of the given string to the selected character encoding
-                if (::iconv(descriptor, &inputPos, &inputLeft, &bufferPos, &bufferLeft) == CONVERSION_ERROR)
+                if (::iconv(ConversionDescriptor, &inputPos, &inputLeft, &bufferPos, &bufferLeft) == CONVERSION_ERROR)
                 {
                     // check whether the output buffer was too small for the next converted character
                     // (also make sure that the output buffer has been filled to avoid an endless loop)
@@ -256,16 +472,231 @@ OFCondition OFCharacterEncoding::convertString(T_Descriptor descriptor,
                 toString.append(buffer, bufferLength - bufferLeft);
             }
         }
-    } else
-        status = EC_NoEncodingSelected;
-    return status;
+        return status;
+    }
+
+    ~Implementation()
+    {
+        // try to close given descriptor and check whether it worked
+        if (::iconv_close(ConversionDescriptor) == -1)
+        {
+            char errBuf[256];
+            CERR << "Cannot close character encoding: "
+                 << OFStandard::strerror(errno, errBuf, sizeof(errBuf))
+                 << OFendl;
+        }
+    }
+
+  private:
+
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_SHADOW
+    Implementation(iconv_t ConversionDescriptor)
+    : ConversionDescriptor(ConversionDescriptor)
+    {
+
+    }
+#include DCMTK_DIAGNOSTIC_POP
+
+    static void createErrnoCondition(OFCondition &status,
+                                     OFString message,
+                                     const unsigned short code)
+    {
+        char errBuf[256];
+        message.append(OFStandard::strerror(errno, errBuf, sizeof(errBuf)));
+        status = makeOFCondition(0, code, OF_error, message.c_str());
+    }
+
+    iconv_t ConversionDescriptor;
+};
+
+#endif // ICONV
+
+#else // DCMTK_ENABLE_CHARSET_CONVERSION
+
+// for suppressing unnecessary warnings
+class OFCharacterEncoding::Implementation {};
+
+#endif // NOT DCMTK_ENABLE_CHARSET_CONVERSION
+
+
+OFBool OFCharacterEncoding::isLibraryAvailable()
+{
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    return OFTrue;
+#else
+    return OFFalse;
+#endif
+}
+
+
+OFString OFCharacterEncoding::getLibraryVersionString()
+{
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    return Implementation::getVersionString();
+#else
+    return "<no character encoding library available>";
+#endif
+}
+
+
+size_t OFCharacterEncoding::countCharactersInUTF8String(const OFString &utf8String)
+{
+    const size_t length = utf8String.length();
+    size_t count = 0;
+    // iterate over all bytes and count start of UTF-8 characters
+    for (size_t i = 0; i < length; i++)
+    {
+        if ((utf8String.at(i) & 0xc0) != 0x80)
+            count++;
+    }
+    return count;
+}
+
+OFString OFCharacterEncoding::getLocaleEncoding()
+{
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    return Implementation::getLocaleEncoding();
+#else
+    return OFString();
+#endif
+}
+
+
+OFBool OFCharacterEncoding::supportsConversionFlags(const unsigned flags)
+{
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    return Implementation::supportsConversionFlags(flags);
+#else
+    return OFFalse;
+#endif
+}
+
+
+OFCharacterEncoding::OFCharacterEncoding()
+  : TheImplementation()
+{
+
+}
+
+
+OFCharacterEncoding::OFCharacterEncoding(const OFCharacterEncoding& rhs)
+  : TheImplementation(rhs.TheImplementation)
+{
+
+}
+
+
+OFCharacterEncoding::~OFCharacterEncoding()
+{
+
+}
+
+
+OFCharacterEncoding& OFCharacterEncoding::operator=(const OFCharacterEncoding& rhs)
+{
+    TheImplementation = rhs.TheImplementation;
+    return *this;
+}
+
+
+OFCharacterEncoding::operator OFBool() const
+{
+    return OFstatic_cast(OFBool, TheImplementation);
+}
+
+
+OFBool OFCharacterEncoding::operator!() const
+{
+    return !TheImplementation;
+}
+
+
+OFBool OFCharacterEncoding::operator==(const OFCharacterEncoding& rhs) const
+{
+    return TheImplementation == rhs.TheImplementation;
+}
+
+OFBool OFCharacterEncoding::operator!=(const OFCharacterEncoding& rhs) const
+{
+    return TheImplementation != rhs.TheImplementation;
+}
+
+
+void OFCharacterEncoding::clear()
+{
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    TheImplementation.reset();
+#endif
+}
+
+
+unsigned OFCharacterEncoding::getConversionFlags() const
+{
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    if (TheImplementation)
+        return TheImplementation->getConversionFlags();
+#endif
+    return 0;
+}
+
+
+OFCondition OFCharacterEncoding::setConversionFlags(const unsigned flags)
+{
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    if (TheImplementation)
+    {
+        if (TheImplementation->setConversionFlags(flags))
+            return EC_Normal;
+        return makeOFCondition(0, EC_CODE_CannotControlConverter, OF_error,
+            "Conversion flags not supported by the underlying implementation");
+    }
+    return EC_NoEncodingSelected;
+#endif
+    return EC_NoEncodingLibrary;
+}
+
+
+OFCondition OFCharacterEncoding::selectEncoding(const OFString &fromEncoding,
+                                                const OFString &toEncoding)
+{
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    OFCondition result;
+    TheImplementation.reset(Implementation::create(fromEncoding, toEncoding, result));
+    return result;
+#else
+    return EC_NoEncodingLibrary;
+#endif
+}
+
+
+OFCondition OFCharacterEncoding::convertString(const OFString &fromString,
+                                               OFString &toString,
+                                               const OFBool clearMode)
+{
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    return convertString(fromString.c_str(), fromString.length(), toString, clearMode);
+#else
+    return EC_NoEncodingLibrary;
+#endif
+}
+
+
+OFCondition OFCharacterEncoding::convertString(const char *fromString,
+                                               const size_t fromLength,
+                                               OFString &toString,
+                                               const OFBool clearMode)
+{
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
+    if (TheImplementation)
+    {
+        // first, clear result variable if requested
+        if (clearMode)
+            toString.clear();
+        return TheImplementation->convert(toString, fromString, fromLength);
+    }
+    return EC_NoEncodingSelected;
 #else
-    // avoid compiler warning on unused variables
-    (void)descriptor;
-    (void)fromString;
-    (void)fromLength;
-    (void)toString;
-    (void)clearMode;
     return EC_NoEncodingLibrary;
 #endif
 }
@@ -302,8 +733,7 @@ OFCondition OFCharacterEncoding::convertFromWideCharString(const wchar_t *fromSt
                     toString.append(toBuffer, charsConverted);
                 } else {
                     // if conversion failed, create appropriate condition text
-                    createGetLastErrorCondition(status, "Cannot convert character encoding: ",
-                        EC_CODE_CannotConvertEncoding);
+                    createGetLastErrorCondition(status, "Cannot convert character encoding: ", EC_CODE_CannotConvertEncoding);
                 }
                 delete[] toBuffer;
             } else {
@@ -350,8 +780,7 @@ OFCondition OFCharacterEncoding::convertToWideCharString(const char *fromString,
             if (toLength == 0)
             {
                 // if conversion failed, create appropriate condition text
-                createGetLastErrorCondition(status, "Cannot convert character encoding: ",
-                    EC_CODE_CannotConvertEncoding);
+                createGetLastErrorCondition(status, "Cannot convert character encoding: ", EC_CODE_CannotConvertEncoding);
             }
         } else {
             // output buffer could not be allocated
@@ -366,96 +795,6 @@ OFCondition OFCharacterEncoding::convertToWideCharString(const char *fromString,
     return status;
 }
 
-#endif  // HAVE_WINDOWS_H
-
-
-OFCondition OFCharacterEncoding::openDescriptor(T_Descriptor &descriptor,
-                                                const OFString &fromEncoding,
-                                                const OFString &toEncoding)
-{
-#ifdef WITH_LIBICONV
-    OFCondition status = EC_Normal;
-    // try to open a new descriptor for the specified character encodings
-    descriptor = ::iconv_open(toEncoding.c_str(), fromEncoding.c_str());
-    // check whether the conversion descriptor could be allocated
-    if (!isDescriptorValid(descriptor))
-    {
-        // if not, return with an appropriate error message
-        createErrnoCondition(status, "Cannot open character encoding: ",
-            EC_CODE_CannotOpenEncoding);
-    }
-    return status;
-#else
-    descriptor = ILLEGAL_DESCRIPTOR;
-    // avoid compiler warning on unused variables
-    (void)fromEncoding;
-    (void)toEncoding;
-    return EC_NoEncodingLibrary;
-#endif
-}
-
-
-OFCondition OFCharacterEncoding::closeDescriptor(T_Descriptor &descriptor)
-{
-#ifdef WITH_LIBICONV
-    OFCondition status = EC_Normal;
-    // check whether the conversion descriptor is valid
-    if (isDescriptorValid(descriptor))
-    {
-        // try to close given descriptor and check whether it worked
-        if (::iconv_close(descriptor) == -1)
-        {
-            // if not, return with an appropriate error message
-            createErrnoCondition(status, "Cannot close character encoding: ",
-                EC_CODE_CannotCloseEncoding);
-        }
-    }
-    // in any case, make the descriptor invalid
-    descriptor = ILLEGAL_DESCRIPTOR;
-    return status;
-#else
-    OFCondition status = EC_Normal;
-    // we cannot use isDescriptorValid() because it always returns OFFalse
-    if (descriptor != ILLEGAL_DESCRIPTOR)
-    {
-        descriptor = ILLEGAL_DESCRIPTOR;
-        status = EC_NoEncodingLibrary;
-    }
-    return status;
-#endif
-}
-
-
-OFBool OFCharacterEncoding::isDescriptorValid(const T_Descriptor descriptor)
-{
-#ifdef WITH_LIBICONV
-    return (descriptor != ILLEGAL_DESCRIPTOR);
-#else
-    // avoid compiler warning on unused variable
-    (void)descriptor;
-    return OFFalse;
-#endif
-}
-
-
-void OFCharacterEncoding::createErrnoCondition(OFCondition &status,
-                                               OFString message,
-                                               const unsigned short code)
-{
-#ifdef WITH_LIBICONV
-    char errBuf[256];
-    message.append(OFStandard::strerror(errno, errBuf, sizeof(errBuf)));
-    status = makeOFCondition(0, code, OF_error, message.c_str());
-#else
-    // avoid compiler warning on unused variables
-    (void)status;
-    (void)message;
-    (void)code;
-#endif
-}
-
-
-#ifdef HAVE_WINDOWS_H  // Windows-specific function
 
 void OFCharacterEncoding::createGetLastErrorCondition(OFCondition &status,
                                                       OFString message,
@@ -474,42 +813,3 @@ void OFCharacterEncoding::createGetLastErrorCondition(OFCondition &status,
 }
 
 #endif  // HAVE_WINDOWS_H
-
-
-OFBool OFCharacterEncoding::isLibraryAvailable()
-{
-#ifdef WITH_LIBICONV
-    return OFTrue;
-#else
-    return OFFalse;
-#endif
-}
-
-
-OFString OFCharacterEncoding::getLibraryVersionString()
-{
-#ifdef WITH_LIBICONV
-    OFString versionStr = "LIBICONV, Version ";
-    char buf[10];
-    // extract major and minor version number
-    sprintf(buf, "%i.%i", (_libiconv_version >> 8), (_libiconv_version & 0xff));
-    versionStr.append(buf);
-    return versionStr;
-#else
-    return "<no character encoding library available>";
-#endif
-}
-
-
-size_t OFCharacterEncoding::countCharactersInUTF8String(const OFString &utf8String)
-{
-    const size_t length = utf8String.length();
-    size_t count = 0;
-    // iterate over all bytes and count start of UTF-8 characters
-    for (size_t i = 0; i < length; i++)
-    {
-        if ((utf8String.at(i) & 0xc0) != 0x80)
-            count++;
-    }
-    return count;
-}
diff --git a/ofstd/libsrc/ofconapp.cc b/ofstd/libsrc/ofconapp.cc
index 3444f08..18ed53c 100644
--- a/ofstd/libsrc/ofconapp.cc
+++ b/ofstd/libsrc/ofconapp.cc
@@ -25,7 +25,7 @@
 #include "dcmtk/ofstd/ofconapp.h"
 #include "dcmtk/ofstd/ofstring.h"     /* for OFString */
 
-#ifdef WITH_LIBICONV
+#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
 #include "dcmtk/ofstd/ofchrenc.h"     /* for OFCharacterEncoding */
 
 #define INCLUDE_LOCALE
@@ -140,13 +140,17 @@ void OFConsoleApplication::printHeader(const OFBool hostInfo,
     if (hostInfo)
     {
         (*output) << OFendl << "Host type: " << CANONICAL_HOST_TYPE << OFendl;
-#if defined(WITH_LIBICONV) && defined(HAVE_LOCALE_H)
+#if defined(DCMTK_ENABLE_CHARSET_CONVERSION) && defined(HAVE_LOCALE_H)
         /* determine system's current locale */
         const char *currentLocale = setlocale(LC_CTYPE, NULL);
         if (setlocale(LC_CTYPE, "") != NULL)
         {
-            OFCharacterEncoding converter;
-            (*output) << "Character encoding: " << converter.getLocaleEncoding() << OFendl;
+            OFString encoding = OFCharacterEncoding::getLocaleEncoding();
+            (*output) << "Character encoding: ";
+            if (!encoding.empty())
+                (*output) << encoding << OFendl;
+            else
+                (*output) << "system default (unknown)" << OFendl;
             /* reset locale to the previous setting or to the default (7-bit ASCII) */
             if (currentLocale != NULL)
                 setlocale(LC_CTYPE, currentLocale);
diff --git a/ofstd/libsrc/ofdatime.cc b/ofstd/libsrc/ofdatime.cc
index 8144e2d..acda440 100644
--- a/ofstd/libsrc/ofdatime.cc
+++ b/ofstd/libsrc/ofdatime.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2011, OFFIS e.V.
+ *  Copyright (C) 2002-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -102,6 +102,32 @@ OFBool OFDateTime::operator!=(const OFDateTime &dateTime) const
 }
 
 
+OFBool OFDateTime::operator<(const OFDateTime &dateTime) const
+{
+    /* note that the "overflow" from one day to another is currently not handled */
+    return (Date < dateTime.Date) || ((Date == dateTime.Date) && (Time < dateTime.Time));
+}
+
+
+OFBool OFDateTime::operator<=(const OFDateTime &dateTime) const
+{
+    /* note that the "overflow" from one day to another is currently not handled */
+    return (Date < dateTime.Date) || ((Date == dateTime.Date) && (Time <= dateTime.Time));
+}
+
+
+OFBool OFDateTime::operator>(const OFDateTime &dateTime) const
+{
+    return (dateTime < *this);
+}
+
+
+OFBool OFDateTime::operator>=(const OFDateTime &dateTime) const
+{
+    return (dateTime <= *this);
+}
+
+
 void OFDateTime::clear()
 {
     Date.clear();
diff --git a/ofstd/libsrc/offname.cc b/ofstd/libsrc/offname.cc
index e201e65..5b6123e 100644
--- a/ofstd/libsrc/offname.cc
+++ b/ofstd/libsrc/offname.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2014, OFFIS e.V.
+ *  Copyright (C) 1997-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -82,7 +82,9 @@ OFBool OFFilenameCreator::makeFilename(unsigned int &seed, const char *dir, cons
     }
     if (prefix) filename += prefix;
     addLongToString(creation_time, filename);
-    addLongToString(((OFrand_r(seed) << 16) | OFrand_r(seed)), filename);
+    // on some systems OFrand_r may produce only 16-bit random numbers.
+    // To be on the safe side, we use two random numbers for the upper and the lower 16 bits.
+    addLongToString((((OFrand_r(seed) & 0xFFFF) << 16) | (OFrand_r(seed) & 0xFFFF)), filename);
     if (postfix) filename += postfix;
 
     // check if filename exists
diff --git a/ofstd/libsrc/ofstd.cc b/ofstd/libsrc/ofstd.cc
index d4fb683..30510d3 100644
--- a/ofstd/libsrc/ofstd.cc
+++ b/ofstd/libsrc/ofstd.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2001-2016, OFFIS e.V.
+ *  Copyright (C) 2001-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -2583,6 +2583,15 @@ int OFrand_r(unsigned int &seed)
   return OFstatic_cast(int, seed);
 }
 
+void OFStandard::trimString(const char*& pBegin, const char*& pEnd)
+{
+  assert(pBegin <= pEnd);
+  while(pBegin != pEnd && (*pBegin == ' ' || !*pBegin))
+    ++pBegin;
+  while(pBegin != pEnd && (*(pEnd-1) == ' ' || !*(pEnd-1)))
+    --pEnd;
+}
+
 #define MAX_NAME 65536
 
 OFStandard::OFHostent OFStandard::getHostByName( const char* name )
@@ -2838,12 +2847,12 @@ OFString OFStandard::getUserName()
         name,
         -1,
         &*buf.begin(),
-        buf.size(),
+        OFstatic_cast(int, buf.size()),
         OFnullptr,
         OFnullptr
     );
     return &*buf.begin();
-#elif defined(HAVE_CUSERID)
+#elif defined(HAVE_CUSERID) && !defined(__CYGWIN__)
     char buf[L_cuserid];
     return cuserid( buf );
 #elif defined(HAVE_GETLOGIN)
@@ -2880,3 +2889,5 @@ OFString OFStandard::getHostName()
     return "localhost";
 #endif
 }
+
+DCMTK_OFSTD_EXPORT OFin_place_tag OFin_place() { return *static_cast<OFin_place_tag*>(OFnullptr); }
diff --git a/ofstd/libsrc/ofthread.cc b/ofstd/libsrc/ofthread.cc
index 5712541..c1f8722 100644
--- a/ofstd/libsrc/ofthread.cc
+++ b/ofstd/libsrc/ofthread.cc
@@ -35,6 +35,13 @@
 
 #include "dcmtk/ofstd/ofstd.h"
 
+#ifdef _DARWIN_C_SOURCE
+#define DARWIN_INTERFACE
+extern "C" {
+#include <dispatch/dispatch.h>
+}
+#endif /* _DARWIN_C_SOURCE */
+
 #ifdef HAVE_WINDOWS_H
 #define WINDOWS_INTERFACE
 
@@ -395,15 +402,10 @@ void OFThreadSpecificData::errorstr(OFString& description, int /* code */ )
 
 /* ------------------------------------------------------------------------- */
 
-/* Mac OS X only permits named Semaphores. The code below compiles on Mac OS X
-   but does not work. This will be corrected in the next snapshot. For now, the
-   semaphore code is completely disabled for that OS (it is not used in other
-   parts of the toolkit so far.
- */
-#ifndef _DARWIN_C_SOURCE
-
 #ifdef WINDOWS_INTERFACE
   const int OFSemaphore::busy = -1;
+#elif defined(DARWIN_INTERFACE)
+  const int OFSemaphore::busy = EAGAIN;
 #elif defined(POSIX_INTERFACE)
   const int OFSemaphore::busy = EAGAIN;  // Posix returns EAGAIN instead of EBUSY in trywait.
 #elif defined(SOLARIS_INTERFACE)
@@ -413,7 +415,7 @@ void OFThreadSpecificData::errorstr(OFString& description, int /* code */ )
 #endif
 
 
-#if defined(WINDOWS_INTERFACE) || defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE)
+#if defined(WINDOWS_INTERFACE) || defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE) || defined(DARWIN_INTERFACE)
 OFSemaphore::OFSemaphore(unsigned int numResources)
 #else
 OFSemaphore::OFSemaphore(unsigned int /* numResources */ )
@@ -422,6 +424,14 @@ OFSemaphore::OFSemaphore(unsigned int /* numResources */ )
 {
 #ifdef WINDOWS_INTERFACE
   theSemaphore = OFstatic_cast(void *, CreateSemaphore(NULL, numResources, numResources, NULL));
+#elif defined(DARWIN_INTERFACE)
+  dispatch_semaphore_t *sem = new dispatch_semaphore_t;
+  if (sem)
+  {
+    *sem = dispatch_semaphore_create(numResources);
+    if (*sem == NULL) delete sem;
+    else theSemaphore = sem;
+  }
 #elif defined(POSIX_INTERFACE)
   sem_t *sem = new sem_t;
   if (sem)
@@ -444,6 +454,8 @@ OFSemaphore::~OFSemaphore()
 {
 #ifdef WINDOWS_INTERFACE
   CloseHandle(OFthread_cast(HANDLE, theSemaphore));
+#elif defined(DARWIN_INTERFACE)
+  delete OFthread_cast(dispatch_semaphore_t *, theSemaphore);
 #elif defined(POSIX_INTERFACE)
   if (theSemaphore) sem_destroy(OFthread_cast(sem_t *, theSemaphore));
   delete OFthread_cast(sem_t *, theSemaphore);
@@ -469,6 +481,12 @@ int OFSemaphore::wait()
 #ifdef WINDOWS_INTERFACE
   if (WaitForSingleObject(OFthread_cast(HANDLE, theSemaphore), INFINITE) == WAIT_OBJECT_0) return 0;
   else return OFstatic_cast(int, GetLastError());
+#elif defined(DARWIN_INTERFACE)
+  if (theSemaphore)
+  {
+    // Always succeeds (returns zero) if the timeout is DISPATCH_TIME_FOREVER.
+    return dispatch_semaphore_wait(*OFthread_cast(dispatch_semaphore_t *, theSemaphore), DISPATCH_TIME_FOREVER);
+  } else return EINVAL;
 #elif defined(POSIX_INTERFACE)
   if (theSemaphore)
   {
@@ -488,6 +506,14 @@ int OFSemaphore::trywait()
   if (result == WAIT_OBJECT_0) return 0;
   else if (result == WAIT_TIMEOUT) return OFSemaphore::busy;
   else return OFstatic_cast(int, GetLastError());
+#elif defined(DARWIN_INTERFACE)
+  if (theSemaphore)
+  {
+    if (dispatch_semaphore_wait(*OFthread_cast(dispatch_semaphore_t *, theSemaphore), DISPATCH_TIME_NOW) != 0)
+      return EAGAIN;
+    else
+      return 0;
+  } else return EINVAL;
 #elif defined(POSIX_INTERFACE)
   if (theSemaphore)
   {
@@ -504,6 +530,13 @@ int OFSemaphore::post()
 {
 #ifdef WINDOWS_INTERFACE
   if (ReleaseSemaphore(OFthread_cast(HANDLE, theSemaphore), 1, NULL)) return 0; else return OFstatic_cast(int, GetLastError());
+#elif defined(DARWIN_INTERFACE)
+  if (theSemaphore)
+  {
+    // Always succeeds.
+    dispatch_semaphore_signal(*OFthread_cast(dispatch_semaphore_t *, theSemaphore));
+    return 0;
+  } else return EINVAL;
 #elif defined(POSIX_INTERFACE)
   if (theSemaphore)
   {
@@ -516,7 +549,7 @@ int OFSemaphore::post()
 #endif
 }
 
-#if defined(WINDOWS_INTERFACE) || defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE)
+#if defined(WINDOWS_INTERFACE) || defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE) || defined(DARWIN_INTERFACE)
 void OFSemaphore::errorstr(OFString& description, int code)
 #else
 void OFSemaphore::errorstr(OFString& description, int /* code */ )
@@ -533,7 +566,7 @@ void OFSemaphore::errorstr(OFString& description, int /* code */ )
     if (buf) description = OFreinterpret_cast(const char *, buf);
     LocalFree(buf);
   }
-#elif defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE)
+#elif defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE) || defined(DARWIN_INTERFACE)
   char buf[256];
   const char *str = OFStandard::strerror(code, buf, sizeof(buf));
   if (str) description = str; else description.clear();
@@ -543,8 +576,6 @@ void OFSemaphore::errorstr(OFString& description, int /* code */ )
   return;
 }
 
-#endif // _DARWIN_C_SOURCE
-
 /* ------------------------------------------------------------------------- */
 
 
diff --git a/ofstd/tests/CMakeLists.txt b/ofstd/tests/CMakeLists.txt
index 88d12e3..add39cc 100644
--- a/ofstd/tests/CMakeLists.txt
+++ b/ofstd/tests/CMakeLists.txt
@@ -1,5 +1,5 @@
 # declare executables
-DCMTK_ADD_EXECUTABLE(ofstd_tests tests tatof tmap tvec tftoa tthread tbase64 tstring tlist tstack tofdatim tofstd tmarkup tchrenc txml tuuid toffile tmem toption ttuple tlimits)
+DCMTK_ADD_EXECUTABLE(ofstd_tests tests tatof tmap tvec tftoa tthread tbase64 tstring tlist tstack tofdatim tofstd tmarkup tchrenc txml tuuid toffile tmem toption ttuple tlimits tvariant)
 
 # make sure executables are linked to the corresponding libraries
 DCMTK_TARGET_LINK_MODULES(ofstd_tests ofstd)
diff --git a/ofstd/tests/Makefile.dep b/ofstd/tests/Makefile.dep
index 8175ae3..f3aa8e8 100644
--- a/ofstd/tests/Makefile.dep
+++ b/ofstd/tests/Makefile.dep
@@ -31,7 +31,9 @@ tchrenc.o: tchrenc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
  ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/ofstd/ofchrenc.h
+ ../include/dcmtk/ofstd/ofchrenc.h ../include/dcmtk/ofstd/ofmem.h \
+ ../include/dcmtk/ofstd/ofutil.h \
+ ../include/dcmtk/ofstd/variadic/tuplefwd.h
 tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -65,7 +67,11 @@ tlimits.o: tlimits.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
  ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
- ../include/dcmtk/ofstd/ofmath.h
+ ../include/dcmtk/ofstd/ofdiag.h ../include/dcmtk/ofstd/ofmath.h \
+ ../include/dcmtk/ofstd/diag/push.def \
+ ../include/dcmtk/ofstd/diag/overflow.def \
+ ../include/dcmtk/ofstd/diag/cnvrsn.def \
+ ../include/dcmtk/ofstd/diag/pop.def
 tlist.o: tlist.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -198,7 +204,10 @@ tthread.o: tthread.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
  ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
- ../../config/include/dcmtk/config/arith.h
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofdiag.h ../include/dcmtk/ofstd/diag/push.def \
+ ../include/dcmtk/ofstd/diag/shadow.def \
+ ../include/dcmtk/ofstd/diag/pop.def
 ttuple.o: ttuple.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -212,8 +221,11 @@ ttuple.o: ttuple.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/ofstd/oftuple.h ../include/dcmtk/ofstd/ofutil.h \
  ../include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../include/dcmtk/ofstd/ofdiag.h ../include/dcmtk/ofstd/diag/push.def \
+ ../include/dcmtk/ofstd/diag/mmtag.def \
  ../include/dcmtk/ofstd/variadic/tuplefrd.h \
- ../include/dcmtk/ofstd/variadic/tuple.h
+ ../include/dcmtk/ofstd/variadic/tuple.h \
+ ../include/dcmtk/ofstd/diag/pop.def
 tuuid.o: tuuid.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -226,6 +238,25 @@ tuuid.o: tuuid.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/ofstd/ofuuid.h
+tvariant.o: tvariant.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
+ ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
+ ../include/dcmtk/ofstd/ofcast.h ../include/dcmtk/ofstd/ofexport.h \
+ ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/ofstd/ofcmdln.h ../include/dcmtk/ofstd/oflist.h \
+ ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
+ ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
+ ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofvriant.h \
+ ../include/dcmtk/ofstd/variadic/variant.h \
+ ../include/dcmtk/ofstd/variadic/helpers.h \
+ ../include/dcmtk/ofstd/ofalign.h ../include/dcmtk/ofstd/ofdiag.h \
+ ../include/dcmtk/ofstd/diag/push.def \
+ ../include/dcmtk/ofstd/diag/cnvrsn.def \
+ ../include/dcmtk/ofstd/diag/vsprfw.def \
+ ../include/dcmtk/ofstd/diag/pop.def
 tvec.o: tvec.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
diff --git a/ofstd/tests/Makefile.in b/ofstd/tests/Makefile.in
index 77f18a6..001c8fe 100644
--- a/ofstd/tests/Makefile.in
+++ b/ofstd/tests/Makefile.in
@@ -20,7 +20,7 @@ LOCALTRASH = *.out testfile.\$$\$$\$$
 test_objs = tests.o tatof.o tmap.o tvec.o tftoa.o tthread.o tbase64.o \
             tstring.o tlist.o tstack.o tofdatim.o tofstd.o tmarkup.o \
             tchrenc.o txml.o tuuid.o toffile.o tmem.o toption.o ttuple.o \
-            tlimits.o
+            tlimits.o tvariant.o
 objs = $(test_objs)
 progs = tests
 
@@ -28,7 +28,7 @@ progs = tests
 all: $(progs)
 
 tests: $(test_objs)
-	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $(test_objs) $(LOCALLIBS) $(ICONVLIBS) $(LIBS)
+	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $(test_objs) $(LOCALLIBS) $(CHARCONVLIBS) $(LIBS)
 
 
 check: tests
diff --git a/ofstd/tests/tchrenc.cc b/ofstd/tests/tchrenc.cc
index 5b9a6a1..aa44c9e 100644
--- a/ofstd/tests/tchrenc.cc
+++ b/ofstd/tests/tchrenc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2012, OFFIS e.V.
+ *  Copyright (C) 2011-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -27,17 +27,27 @@
 #include "dcmtk/ofstd/ofchrenc.h"
 
 
+static void checkConversionFlags(OFCharacterEncoding& charEnc,
+                                 const unsigned flags)
+{
+    if (OFCharacterEncoding::supportsConversionFlags(flags))
+    {
+        OFCHECK(charEnc.setConversionFlags(flags).good());
+        OFCHECK_EQUAL(charEnc.getConversionFlags(), flags);
+    }
+}
+
+
 OFTEST(ofstd_OFCharacterEncoding_1)
 {
     // the returned string should never be empty
     OFCHECK(!OFCharacterEncoding::getLibraryVersionString().empty());
-    // check whether libiconv support is available
+    // check whether character set conversion support is available
     if (OFCharacterEncoding::isLibraryAvailable())
     {
         OFCharacterEncoding charEnc;
         OFString resultStr;
         // first, do some basic validity checks
-        OFCHECK(!charEnc.getLocaleEncoding().empty());
         OFCHECK(charEnc.selectEncoding("ASCII", "UTF-8").good());
         OFCHECK(charEnc.convertString("Simple Text", resultStr).good());
         OFCHECK_EQUAL(resultStr, "Simple Text");
@@ -57,15 +67,17 @@ OFTEST(ofstd_OFCharacterEncoding_1)
         OFCHECK(charEnc.selectEncoding("", "ASCII").good());
         OFCHECK(charEnc.selectEncoding("ASCII", "").good());
         OFCHECK(charEnc.selectEncoding("ASCII", charEnc.getLocaleEncoding()).good());
-        charEnc.setTransliterationMode(OFTrue);
-        charEnc.setDiscardIllegalSequenceMode(OFTrue);
+        checkConversionFlags(charEnc, OFCharacterEncoding::AbortTranscodingOnIllegalSequence);
+        checkConversionFlags(charEnc, OFCharacterEncoding::DiscardIllegalSequences);
+        checkConversionFlags(charEnc, OFCharacterEncoding::TransliterateIllegalSequences);
+        checkConversionFlags(charEnc, OFCharacterEncoding::TransliterateIllegalSequences
+                                    | OFCharacterEncoding::DiscardIllegalSequences);
         charEnc.clear();
-        OFCHECK_EQUAL(charEnc.getTransliterationMode(), OFFalse);
-        OFCHECK_EQUAL(charEnc.getDiscardIllegalSequenceMode(), OFFalse);
         OFCHECK(charEnc.convertString("Simple Text", resultStr).bad());
     }
 }
 
+
 OFTEST(ofstd_OFCharacterEncoding_2)
 {
     if (OFCharacterEncoding::isLibraryAvailable())
@@ -90,6 +102,7 @@ OFTEST(ofstd_OFCharacterEncoding_2)
     }
 }
 
+
 OFTEST(ofstd_OFCharacterEncoding_3)
 {
     if (OFCharacterEncoding::isLibraryAvailable())
@@ -107,39 +120,57 @@ OFTEST(ofstd_OFCharacterEncoding_3)
     }
 }
 
+
 OFTEST(ofstd_OFCharacterEncoding_4)
 {
     if (OFCharacterEncoding::isLibraryAvailable())
     {
         OFCharacterEncoding charEnc;
-        // enable transliteration mode
-        if (charEnc.setTransliterationMode(OFTrue).good())
+        OFCHECK(charEnc.selectEncoding("ISO-8859-1", "ASCII").good());
+        OFString resultStr;
+        if (OFCharacterEncoding::supportsConversionFlags(OFCharacterEncoding::AbortTranscodingOnIllegalSequence))
+        {
+            OFCHECK(charEnc.setConversionFlags(OFCharacterEncoding::AbortTranscodingOnIllegalSequence).good());
+            OFCHECK(charEnc.convertString("J\366rg", resultStr).bad());
+        }
+        if (OFCharacterEncoding::supportsConversionFlags(OFCharacterEncoding::DiscardIllegalSequences))
         {
-            OFString resultStr;
-            OFCHECK(charEnc.selectEncoding("ISO-8859-1", "ASCII").good());
+            OFCHECK(charEnc.setConversionFlags(OFCharacterEncoding::DiscardIllegalSequences).good());
+            OFCHECK(charEnc.convertString("J\366rg", resultStr).good());
+            OFCHECK_EQUAL(resultStr, "Jrg");
+        }
+        if (OFCharacterEncoding::supportsConversionFlags(OFCharacterEncoding::TransliterateIllegalSequences))
+        {
+            OFCHECK(charEnc.setConversionFlags(OFCharacterEncoding::TransliterateIllegalSequences).good());
             OFCHECK(charEnc.convertString("J\366rg", resultStr).good());
             OFCHECK_EQUAL(resultStr, "J\"org");
-            // disable transliteration mode
-            charEnc.setTransliterationMode(OFFalse);
-            OFCHECK(charEnc.convertString("J\366rg", resultStr).bad());
         }
     }
 }
 
+
 OFTEST(ofstd_OFCharacterEncoding_5)
 {
     if (OFCharacterEncoding::isLibraryAvailable())
     {
         OFCharacterEncoding charEnc;
-        // enable discard illegal sequence mode
-        if (charEnc.setDiscardIllegalSequenceMode(OFTrue).good())
+        OFCHECK(charEnc.selectEncoding("ISO-8859-1", "ASCII").good());
+        OFString resultStr;
+        if (OFCharacterEncoding::supportsConversionFlags(OFCharacterEncoding::TransliterateIllegalSequences))
         {
-            OFString resultStr;
-            OFCHECK(charEnc.selectEncoding("ISO-8859-1", "ASCII").good());
+            OFCHECK(charEnc.setConversionFlags(OFCharacterEncoding::TransliterateIllegalSequences).good());
+            OFCHECK(charEnc.convertString("J\366rg", resultStr).good());
+            OFCHECK_EQUAL(resultStr, "J\"org");
+        }
+        if (OFCharacterEncoding::supportsConversionFlags(OFCharacterEncoding::DiscardIllegalSequences))
+        {
+            OFCHECK(charEnc.setConversionFlags(OFCharacterEncoding::DiscardIllegalSequences).good());
             OFCHECK(charEnc.convertString("J\366rg", resultStr).good());
             OFCHECK_EQUAL(resultStr, "Jrg");
-            // disable discard illegal sequence mode
-            charEnc.setDiscardIllegalSequenceMode(OFFalse);
+        }
+        if (OFCharacterEncoding::supportsConversionFlags(OFCharacterEncoding::AbortTranscodingOnIllegalSequence))
+        {
+            OFCHECK(charEnc.setConversionFlags(OFCharacterEncoding::AbortTranscodingOnIllegalSequence).good());
             OFCHECK(charEnc.convertString("J\366rg", resultStr).bad());
         }
     }
diff --git a/ofstd/tests/tests.cc b/ofstd/tests/tests.cc
index b41e78d..cd0b974 100644
--- a/ofstd/tests/tests.cc
+++ b/ofstd/tests/tests.cc
@@ -78,4 +78,5 @@ OFTEST_REGISTER(ofstd_optional);
 OFTEST_REGISTER(ofstd_tuple);
 OFTEST_REGISTER(ofstd_limits);
 OFTEST_REGISTER(ofstd_safeSubtractAndAdd);
+OFTEST_REGISTER(ofstd_variant);
 OFTEST_MAIN("ofstd")
diff --git a/ofstd/tests/tlimits.cc b/ofstd/tests/tlimits.cc
index c9107dc..f9c35da 100644
--- a/ofstd/tests/tlimits.cc
+++ b/ofstd/tests/tlimits.cc
@@ -1,12 +1,37 @@
+/*
+ *
+ *  Copyright (C) 2014-2017, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  ofstd
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: unit test for OFnumeric_limits
+ *
+ */
+
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
 #define OFTEST_OFSTD_ONLY
 #include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/ofstd/ofdiag.h"
 #include "dcmtk/ofstd/oflimits.h"
 #include "dcmtk/ofstd/ofstd.h"
 #include "dcmtk/ofstd/oftraits.h"
 #include "dcmtk/ofstd/ofmath.h"   // for isinf and isnan
 
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_OVERFLOW
+#include DCMTK_DIAGNOSTIC_IGNORE_IMPLICIT_CONVERSION
 template<typename T>
 static void checkMinMax()
 {
@@ -24,6 +49,7 @@ static void checkMinMax()
     );
     OFCHECK( ( OFnumeric_limits<T>::lowest() == OFnumeric_limits<T>::min() ) || !OFnumeric_limits<T>::is_integer );
 }
+#include DCMTK_DIAGNOSTIC_POP
 
 template<typename T>
 static OFTypename OFenable_if<OFnumeric_limits<T>::has_quiet_NaN>::type checkNaN()
@@ -49,6 +75,8 @@ static OFTypename OFenable_if<!OFnumeric_limits<T>::has_infinity>::type checkInf
 
 }
 
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_OVERFLOW
 template<typename T>
 static void checkLimits()
 {
@@ -60,6 +88,7 @@ static void checkLimits()
     if( OFnumeric_limits<T>::is_modulo )
         OFCHECK( OFstatic_cast( T, OFnumeric_limits<T>::max() + 1 ) == OFnumeric_limits<T>::min() );
 }
+#include DCMTK_DIAGNOSTIC_POP
 
 OFTEST(ofstd_limits)
 {
diff --git a/ofstd/tests/tofdatim.cc b/ofstd/tests/tofdatim.cc
index 8d02de6..f9d648d 100644
--- a/ofstd/tests/tofdatim.cc
+++ b/ofstd/tests/tofdatim.cc
@@ -126,6 +126,11 @@ OFTEST(ofstd_OFDateTime)
     OFCHECK_EQUAL(dateTime1, dateTime2);
     /* "overflow" from one day to another is currently not handled by OFDateTime */
     OFCHECK(dateTime1 != OFDateTime(2001, 1, 1, 0, 15, 30, 12) /* should be equal */);
+    OFCHECK(dateTime1 < OFDateTime(2001, 1, 1, 0, 15, 30, 2) /* should be less */);
+    OFCHECK(dateTime1 <= OFDateTime(2001, 1, 1, 0, 15, 30, 12) /* should be less or equal */);
+    OFCHECK(OFDateTime(2000, 12, 31, 12, 15, 30, -.5) > dateTime1 /* should be greater */);
+    OFCHECK(OFDateTime(2000, 12, 31, 12, 15, 30, -.5) >= dateTime1 /* should be greater or equal */);
+    OFCHECK(dateTime1 >= dateTime1 /* should be greater or equal */);
     OFCHECK(dateTime1.getISOFormattedDateTime(tmpString));
     OFCHECK_EQUAL(tmpString, "2000-12-31 12:15:30");
     OFCHECK(dateTime1.getISOFormattedDateTime(tmpString, OFTrue /*showSeconds*/, OFTrue /*showFraction*/,
diff --git a/ofstd/tests/toffile.cc b/ofstd/tests/toffile.cc
index 5acac81..dc4b2e9 100644
--- a/ofstd/tests/toffile.cc
+++ b/ofstd/tests/toffile.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2012, OFFIS e.V.
+ *  Copyright (C) 2002-2017, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -343,7 +343,7 @@ OFTEST_FLAGS(ofstd_OFFile, EF_Slow)
   if (sizeof(offile_off_t) > 4) COUT << " - OK\n"; else COUT << " - too small, no LFS support\n";
   COUT << "- size of offile_fpos_t: " << sizeof(offile_fpos_t);
   if (sizeof(offile_fpos_t) > 4) COUT << " - OK\n"; else COUT << " - too small, no LFS support\n";
-  if ((sizeof(offile_off_t) <= 4 || sizeof(offile_fpos_t) <= 4))
+  if ((sizeof(offile_off_t) <= 4) || (sizeof(offile_fpos_t) <= 4))
   {
     OFCHECK_FAIL("No LFS support available. LFS test failed.");
     return;
diff --git a/ofstd/tests/toption.cc b/ofstd/tests/toption.cc
index 3a22fb7..f816ec5 100644
--- a/ofstd/tests/toption.cc
+++ b/ofstd/tests/toption.cc
@@ -1,3 +1,24 @@
+/*
+ *
+ *  Copyright (C) 2014-2017, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  ofstd
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: unit test for OFoptional
+ *
+ */
+
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
 #define OFTEST_OFSTD_ONLY
diff --git a/ofstd/tests/tthread.cc b/ofstd/tests/tthread.cc
index 630f22b..6af95e5 100644
--- a/ofstd/tests/tthread.cc
+++ b/ofstd/tests/tthread.cc
@@ -28,6 +28,7 @@
 #include "dcmtk/ofstd/ofthread.h"
 #include "dcmtk/ofstd/ofstring.h"
 #include "dcmtk/ofstd/ofstd.h"
+#include "dcmtk/ofstd/ofdiag.h"
 
 #define BAILOUT(msg) do { \
     OFCHECK_FAIL(msg); \
@@ -121,11 +122,6 @@ static void mutex_test()
   delete mutex;
 }
 
-/* Currently OFSemaphore is not working and disabled on Mac OS X. Thus,
- * it is not tested on Mac OS X.
- */
-#ifndef _DARWIN_C_SOURCE
-
 static OFSemaphore *semaphore=NULL;
 static int sem_cond1=0;
 static int sem_cond2=0;
@@ -216,8 +212,6 @@ static void semaphore_test()
   delete semaphore;
 }
 
-#endif //_DARWIN_C_SOURCE
-
 static OFReadWriteLock *rwlock=NULL;
 static OFMutex *mutex2=NULL;
 static int rw_cond1=0;
@@ -228,44 +222,50 @@ static int rw_cond5=0;
 static int rw_cond6=0;
 static int rw_cond7=0;
 
-class RWLockT1: public OFThread
+class RWLockT2: public OFThread
 {
 public:
-  RWLockT1(): OFThread() {}
-  ~RWLockT1() {}
+  RWLockT2(): OFThread() {}
+  ~RWLockT2() {}
 
   virtual void run()
   {
-    if (0 == rwlock->rdlock())
+    if ((0==mutex2->trylock())&&(OFReadWriteLock::busy == rwlock->trywrlock())) rw_cond5=1;
+    if (0 == rwlock->wrlock())
     {
-      rw_cond1 = 1; // acquired read lock
-      mutex->lock();
-      mutex->unlock();
-      if (0== rwlock->unlock()) rw_cond2=1;
-      mutex2->lock();
+      rw_cond6=1;
       mutex2->unlock();
-      if (OFReadWriteLock::busy == rwlock->tryrdlock()) rw_cond3=1;
-      if ((0 == rwlock->rdlock())&&(0==rwlock->unlock())) rw_cond4=1;
+      OFStandard::milliSleep(wait_timeout);
+      if (0==rwlock->unlock()) rw_cond7=1;
     }
     return;
   }
 };
 
-class RWLockT2: public OFThread
+class RWLockT1: public OFThread
 {
+private:
+  RWLockT2 &t2;
 public:
-  RWLockT2(): OFThread() {}
-  ~RWLockT2() {}
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_SHADOW
+  RWLockT1(RWLockT2 &t2) : OFThread(), t2(t2) {}
+#include DCMTK_DIAGNOSTIC_POP
+  ~RWLockT1() {}
 
   virtual void run()
   {
-    if ((0==mutex2->trylock())&&(OFReadWriteLock::busy == rwlock->trywrlock())) rw_cond5=1;
-    if (0 == rwlock->wrlock())
+    if (0 == rwlock->rdlock())
     {
-      rw_cond6=1;
+      t2.start();
+      rw_cond1 = 1; // acquired read lock
+      mutex->lock();
+      mutex->unlock();
+      if (0== rwlock->unlock()) rw_cond2=1;
+      mutex2->lock();
       mutex2->unlock();
-      OFStandard::milliSleep(wait_timeout);
-      if (0==rwlock->unlock()) rw_cond7=1;
+      if (OFReadWriteLock::busy == rwlock->tryrdlock()) rw_cond3=1;
+      if ((0 == rwlock->rdlock())&&(0==rwlock->unlock())) rw_cond4=1;
     }
     return;
   }
@@ -298,12 +298,9 @@ static void rwlock_test()
     BAILOUT(errmsg);
   }
 
-  RWLockT1 t1;
-  if (0 != t1.start()) BAILOUT("unable to create thread, semaphore test failed");
-
   RWLockT2 t2;
-  if (0 != t2.start()) BAILOUT("unable to create thread, semaphore test failed");
-
+  RWLockT1 t1(t2);
+  if (0 != t1.start()) BAILOUT("unable to create thread, read/write lock/unlock test failed");
 
   int i=0;
   while ((i++<5) && ((!rw_cond1)||(!rw_cond5))) OFStandard::milliSleep(wait_timeout);
@@ -317,7 +314,7 @@ static void rwlock_test()
     BAILOUT(errmsg);
   }
   OFStandard::milliSleep(wait_timeout);
-  if (rw_cond6) BAILOUT("read/write lock test failed");
+  if (rw_cond6) BAILOUT("read/write lock/unlock test failed");
 
   mutex->unlock();
 
@@ -325,56 +322,62 @@ static void rwlock_test()
   while ((i++<5) && ((!rw_cond2)||(!rw_cond3)||(!rw_cond4)||(!rw_cond5)||(!rw_cond6)||(!rw_cond7))) OFStandard::milliSleep(wait_timeout);
   if ((!rw_cond2)||(!rw_cond3)||(!rw_cond4)||(!rw_cond5)||(!rw_cond6)||(!rw_cond7)) BAILOUT("read/write lock/unlock test failed");
 
-  if (0 != t1.join()) BAILOUT("unable to join thread, semaphore test failed");
-  if (0 != t2.join()) BAILOUT("unable to join thread, semaphore test failed");
+  if (0 != t1.join()) BAILOUT("unable to join thread, read/write lock/unlock test failed");
+  if (0 != t2.join()) BAILOUT("unable to join thread, read/write lock/unlock test failed");
 
   delete mutex;
   delete mutex2;
   delete rwlock;
 }
 
-class RWLockerT1: public OFThread
+class RWLockerT2: public OFThread
 {
 public:
-  RWLockerT1(): OFThread() {}
-  ~RWLockerT1() {}
+  RWLockerT2(): OFThread() {}
+  ~RWLockerT2() {}
 
   virtual void run()
   {
     OFReadWriteLocker locker(*rwlock);
-    if (0 == locker.rdlock())
+    if ((0==mutex2->trylock())&&(OFReadWriteLock::busy == locker.trywrlock())) rw_cond5=1;
+    if (0 == locker.wrlock())
     {
-      rw_cond1 = 1; // acquired read lock
-      mutex->lock();
-      mutex->unlock();
-      if (0== locker.unlock()) rw_cond2=1;
-      mutex2->lock();
+      rw_cond6=1;
       mutex2->unlock();
-      if (OFReadWriteLock::busy == locker.tryrdlock()) rw_cond3=1;
-      if (0 == locker.rdlock()) rw_cond4=1;
-      // Implicit unlock() at the end
+      OFStandard::milliSleep(wait_timeout);
+      // Explicite unlock(), check if this causes one unlock() too much
+      if (0==locker.unlock()) rw_cond7=1;
     }
     return;
   }
 };
 
-class RWLockerT2: public OFThread
+class RWLockerT1: public OFThread
 {
+private:
+  RWLockerT2 &t2;
 public:
-  RWLockerT2(): OFThread() {}
-  ~RWLockerT2() {}
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_SHADOW
+  RWLockerT1(RWLockerT2 &t2): OFThread(), t2(t2) {}
+#include DCMTK_DIAGNOSTIC_POP
+  ~RWLockerT1() {}
 
   virtual void run()
   {
     OFReadWriteLocker locker(*rwlock);
-    if ((0==mutex2->trylock())&&(OFReadWriteLock::busy == locker.trywrlock())) rw_cond5=1;
-    if (0 == locker.wrlock())
+    if (0 == locker.rdlock())
     {
-      rw_cond6=1;
+      t2.start();
+      rw_cond1 = 1; // acquired read lock
+      mutex->lock();
+      mutex->unlock();
+      if (0== locker.unlock()) rw_cond2=1;
+      mutex2->lock();
       mutex2->unlock();
-      OFStandard::milliSleep(wait_timeout);
-      // Explicite unlock(), check if this causes one unlock() too much
-      if (0==locker.unlock()) rw_cond7=1;
+      if (OFReadWriteLock::busy == locker.tryrdlock()) rw_cond3=1;
+      if (0 == locker.rdlock()) rw_cond4=1;
+      // Implicit unlock() at the end
     }
     return;
   }
@@ -419,17 +422,14 @@ static void rwlocker_test()
     BAILOUT(errmsg);
   }
 
-  RWLockerT1 t1;
-  if (0 != t1.start()) BAILOUT("unable to create thread, semaphore test failed");
-
   RWLockerT2 t2;
-  if (0 != t2.start()) BAILOUT("unable to create thread, semaphore test failed");
-
+  RWLockerT1 t1(t2);
+  if (0 != t1.start()) BAILOUT("unable to create thread, read/write lock test failed");
 
   int i=0;
   while ((i++<5) && ((!rw_cond1)||(!rw_cond5))) OFStandard::milliSleep(wait_timeout);
 
-  if ((!rw_cond1)||(!rw_cond5)) BAILOUT("read/write lock/unlock test failed");
+  if ((!rw_cond1)||(!rw_cond5)) BAILOUT("read/write lock test failed");
   condition = rwlockLocker.unlock();
   if (condition)
   {
@@ -444,10 +444,10 @@ static void rwlocker_test()
 
   i=0;
   while ((i++<5) && ((!rw_cond2)||(!rw_cond3)||(!rw_cond4)||(!rw_cond5)||(!rw_cond6)||(!rw_cond7))) OFStandard::milliSleep(wait_timeout);
-  if ((!rw_cond2)||(!rw_cond3)||(!rw_cond4)||(!rw_cond5)||(!rw_cond6)||(!rw_cond7)) BAILOUT("read/write lock/unlock test failed");
+  if ((!rw_cond2)||(!rw_cond3)||(!rw_cond4)||(!rw_cond5)||(!rw_cond6)||(!rw_cond7)) BAILOUT("read/write lock test failed");
 
-  if (0 != t1.join()) BAILOUT("unable to join thread, semaphore test failed");
-  if (0 != t2.join()) BAILOUT("unable to join thread, semaphore test failed");
+  if (0 != t1.join()) BAILOUT("unable to join thread, read/write lock test failed");
+  if (0 != t2.join()) BAILOUT("unable to join thread, read/write lock test failed");
 
   delete mutex;
   delete mutex2;
@@ -576,9 +576,7 @@ OFTEST(ofstd_thread)
 {
   // This makes sure tests are executed in the expected order
   mutex_test();
-#ifndef _DARWIN_C_SOURCE
   semaphore_test(); // may assume that mutexes work correctly
-#endif
   rwlock_test();    // may assume that mutexes and semaphores work correctly
   rwlocker_test();  // may assume that mutexes, semaphores and read/write locks work correctly
   tsdata_test();
diff --git a/ofstd/tests/ttuple.cc b/ofstd/tests/ttuple.cc
index df7e363..d4d4c38 100644
--- a/ofstd/tests/ttuple.cc
+++ b/ofstd/tests/ttuple.cc
@@ -1,3 +1,24 @@
+/*
+ *
+ *  Copyright (C) 2014-2017, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  ofstd
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: unit test for OFtuple
+ *
+ */
+
 // Disable some warnings.
 // We're testing if a tuple containing floats can be initialized from a tuple of
 // ints, which is required by the standard. But this gives precision warnings
diff --git a/ofstd/tests/tvariant.cc b/ofstd/tests/tvariant.cc
new file mode 100644
index 0000000..5040a20
--- /dev/null
+++ b/ofstd/tests/tvariant.cc
@@ -0,0 +1,131 @@
+/*
+ *
+ *  Copyright (C) 2016-2017, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  ofstd
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: unit test for OFvariant
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#define OFTEST_OFSTD_ONLY
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/ofstd/ofvriant.h"
+
+struct int_visitor
+{
+    void operator()( double d )
+    {
+        // Avoid compiler warning on unused parameter
+        (void)d;
+        OFCHECK_FAIL( "wrong alternative <double> selected" );
+    }
+
+    void operator()( int i )
+    {
+        // Avoid compiler warning on unused parameter
+        (void)i;
+        OFCHECK( i == 42 );
+    }
+
+    void operator()( char c )
+    {
+        // Avoid compiler warning on unused parameter
+        (void)c;
+        OFCHECK_FAIL( "wrong alternative <char> selected" );
+    }
+};
+
+struct double_visitor
+{
+    bool operator()( double d )
+    {
+        // Avoid compiler warning on unused parameter
+        (void)d;
+        return d == 27.912456f;
+    }
+
+    bool operator()( int i )
+    {
+        // Avoid compiler warning on unused parameter
+        (void)i;
+        OFCHECK_FAIL( "wrong alternative <int> selected" );
+        return false;
+    }
+
+    bool operator()( char c )
+    {
+        // Avoid compiler warning on unused parameter
+        (void)c;
+        OFCHECK_FAIL( "wrong alternative <char> selected" );
+        return false;
+    }
+};
+
+OFTEST(ofstd_variant)
+{
+    // copy construction from alternative
+    OFvariant<int,float,bool> v0( true );
+
+    // default construction
+    OFvariant<int,float,bool> v1;
+
+    OFCHECK( OFget<bool>( &v0 ) );
+    OFCHECK( *OFget<bool>( &v0 ) );
+    OFCHECK( OFget<int>( &v1 ) );
+
+    // alternative changing assignment
+    v0 = 3.1415f;
+
+    // same alternative assignment
+    v1 = 7;
+
+    OFCHECK( !OFget<bool>( &v0 ) );
+    OFCHECK( OFget<float>( &v0 ) );
+    OFCHECK( *OFget<float>( &v0 ) == 3.1415f );
+    OFCHECK( OFget<int>( &v1 ) );
+    OFCHECK( *OFget<int>( &v1 ) == 7 );
+
+    // alternative changing assignment and copy construction
+    OFvariant<int,float,bool> v2( v0 = v1 );
+
+    OFCHECK( OFget<int>( &v0 ) );
+    OFCHECK( *OFget<int>( &v0 ) == 7 );
+    OFCHECK( OFget<int>( &v1 ) );
+    OFCHECK( *OFget<int>( &v1 ) == 7 );
+    OFCHECK( OFget<int>( &v2 ) );
+    OFCHECK( *OFget<int>( &v2 ) == 7 );
+
+    // same alternative assignment
+    v0 = 42;
+
+    OFCHECK( OFget<int>( &v0 ) );
+    OFCHECK( *OFget<int>( &v0 ) == 42 );
+
+    // same alternative assignment
+    v1 = v0;
+
+    OFCHECK( OFget<int>( &v0 ) );
+    OFCHECK( *OFget<int>( &v0 ) == 42 );
+    OFCHECK( OFget<int>( &v1 ) );
+    OFCHECK( *OFget<int>( &v1 ) == 42 );
+
+    v2 = 27.912456f;
+
+    // test visitation
+    OFvisit<void>( int_visitor(), v0 );
+    OFCHECK( OFvisit<bool>( double_visitor(), const_cast<const OFvariant<int,float,bool>&>( v2 ) ) );
+}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/dcmtk.git



More information about the debian-med-commit mailing list